鮑佳松,黃細霞,姬 克,盧占標(biāo)
(航運技術(shù)與控制工程交通行業(yè)重點實驗室(上海海事大學(xué)),上海 201306)
水域環(huán)境的治理一直以來深受重視,就我國南部水域,由于水面漂浮物諸如水葫蘆、塑料制品以及金屬制品的存在,生態(tài)破壞、水質(zhì)污染以及航道堵塞等問題顯得尤為嚴重[1]。隨著全國垃圾分類政策的提出,精準(zhǔn)識別水面漂浮物并進行分類回收變得尤為重要。
現(xiàn)階段用來檢測識別水面漂浮物的方法主要包括人工識別、遙感檢測[2]和利用機器視覺識別。鄧磊等人[3]采用BP神經(jīng)網(wǎng)絡(luò)構(gòu)建分類器,將輸入圖像的邊緣,灰度與紋理作為特征,設(shè)計了漂浮塑料瓶和樹枝的判別模型。但是由于人工提取如梯度、顏色和紋理的淺層特征,容易受水面環(huán)境影響,不能完全表征目標(biāo)的特定信息。而隨著深度學(xué)習(xí)的興起,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[4]可將原始圖像數(shù)據(jù)作為輸入,避免了傳統(tǒng)識別算法中的數(shù)據(jù)預(yù)處理過程,尤其是解決了傳統(tǒng)神經(jīng)網(wǎng)絡(luò)多層次的局部最優(yōu)以及梯度彌散等缺點[5]。李寧等人[6]使用的基于AlexNet網(wǎng)絡(luò)模型,經(jīng)過小樣本的微調(diào)(fine-tuning)后實現(xiàn)對塑料袋與塑料瓶的識別;雷李義等人[7]提出了一個包含水草和落葉的小型漂浮物數(shù)據(jù)集,在預(yù)訓(xùn)練好的Faster-RCNN和SSD等模型上進行微調(diào)并取得一定的識別效果。上述文獻表明CNN可用于識別水面漂浮物,但這些模型的網(wǎng)絡(luò)結(jié)構(gòu)較為復(fù)雜。
針對現(xiàn)有模型的網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,模型訓(xùn)練困難等問題,基于深度卷積神經(jīng)網(wǎng)絡(luò)(deep convolutional neural network,DCNN),本文提出了用于水面漂浮物識別的模型。首先通過CCD相機采集水面漂浮物的圖像,借助python對圖像數(shù)據(jù)進行擴充,制作訓(xùn)練集與測試集,最后在Tensorflow的框架下設(shè)計網(wǎng)絡(luò)模型,通過訓(xùn)練后在測試集上進行模型的驗證。
DCNN在解決圖像分類問題方面上被證明有較好的效果,在MNIST數(shù)據(jù)集和CIFART數(shù)據(jù)集中分類精度顯著提升[8]。它能將圖像數(shù)據(jù)中學(xué)習(xí)簡單的局部特征(例如邊緣和曲線),然后組合成更加復(fù)雜的特征(例如角和形狀),最終組合成一個完整的對象。而DCNN的核心則是將稀疏連接、權(quán)值共享和空間下采樣結(jié)合起來,從而獲得一定程度內(nèi)的位移、尺度、形變的不變特征,具有很強的魯棒性。因此在以上背景下,利用DCNN進行建模有利于克服水域環(huán)境的復(fù)雜因素,對漂浮物進行高維特征的提取。
CNN中,卷積層通過卷積運算提取原圖像的特征數(shù)據(jù),使得特征信號增強同時降低噪聲[9]。卷積層的操作如下所示
(1)
池化(pooling)層又稱下采樣(subsampling)層,利用圖像局部相關(guān)性原理,對上一層特征圖的相鄰矩形區(qū)域進行聚合統(tǒng)計,起到二次特征提取作用。常見的池化方法有均值采樣、最大池化(max pooling)采樣、重疊(overlapping)采樣、均方采樣、歸一化(normalization)采樣、隨機(stochastic)采樣和形變約束采樣[10]。其中常用的是最大池化采樣。卷積神經(jīng)網(wǎng)絡(luò)的線性采樣過程如下所示
(2)
式中 subsampling(·)為采樣函數(shù)。
將得到的一系列特征圖按像素取出,排成一個向量,與全連接層所有的神經(jīng)元互相連接,其過程如下所示
(3)
在目標(biāo)函數(shù)的選擇上,由于輸入標(biāo)簽為位矢量,將交叉熵函數(shù)(cross-entropy loss function)作為目標(biāo)損失函數(shù),整個訓(xùn)練過程以目標(biāo)函數(shù)最小化為目標(biāo)。損失函數(shù)如下所示
(4)
其中,pi為SoftMax層的輸出概率,其定義式如下
(5)
式中fu為Xi屬于第u類標(biāo)簽的得分。
(6)
(7)
式中 ?L/?zl+1(i)為目標(biāo)函數(shù)L關(guān)于全連接層輸出的梯度;al(i)為全連接神經(jīng)網(wǎng)絡(luò)的權(quán)值。
(8)
(9)
式中yl(i,j)為卷積層的輸出;xl(j)為卷積層的輸入。
為了降低環(huán)境因素對于模型的影響,該漂浮物識別模型采用卷積層與池化層交替設(shè)置的方式,卷積層中利用3×3卷積核進行卷積運算,使得特征數(shù)據(jù)增強,噪聲數(shù)據(jù)減少;池化層利用最大池化對特征圖進行子抽樣,保留主要信息同時減少了數(shù)據(jù)處理總量。通過以上方式對原圖像進行特征提取和組合,形成更加抽象的高層特征,最后形成對原圖像的特征描述,通過SoftMax分類器進行判別。模型共10層深度,包括輸入層(input),3層卷積層(conv1~conv3),3層池化層(maxpool1~maxpool3),2層全連接層(FC1~FC2)和SoftMax回歸層。其網(wǎng)絡(luò)層結(jié)構(gòu)與參數(shù)如表1所示。
表1 網(wǎng)絡(luò)層結(jié)構(gòu)參數(shù)
本實驗數(shù)據(jù)集利用CCD相機采集了水葫蘆以及4種其他水面漂浮物的圖片共計1 900張,其中水葫蘆526張,浮萍340張,塑料袋280張,塑料瓶300張,金屬罐454張。為使得網(wǎng)絡(luò)的泛化能力更強,將數(shù)據(jù)集進行擴充,經(jīng)過鏡像、旋轉(zhuǎn)(±30°和±60°)、隨機裁剪、調(diào)整明暗度和添加噪聲的操作將1 900張圖像的數(shù)據(jù)集擴充為20 000張。部分數(shù)據(jù)集展示如圖1所示,并且為了減少計算加速網(wǎng)絡(luò)訓(xùn)練,將數(shù)據(jù)集所有圖像分辨率調(diào)整為28×28大小。
圖1 擴充后的數(shù)據(jù)集
對于訓(xùn)練集樣本數(shù)量,分別按50 %,60 %,70 %,80 %的比例選出對應(yīng)數(shù)量的樣本進行訓(xùn)練,每個比例下的訓(xùn)練都進行20次,其中20次訓(xùn)練過程的精度記錄如圖2所示。
圖2 不同比例下訓(xùn)練精度變化
圖中呈現(xiàn)當(dāng)訓(xùn)練集與測試集的比例為8︰2時,測試精度處于較好水平。通過計算20次訓(xùn)練的平均測試精度,如表2所示,該比例下模型較其他比例時能夠取得較高的98.46 %的精度。因此,將該數(shù)據(jù)集80 %劃為訓(xùn)練集,20 %劃為測試集。
表2 訓(xùn)練精度記錄
實驗使用的環(huán)境為Google公司開發(fā)的深度學(xué)習(xí)框架Tensorflow,編程語言Python,通過批量處理將原圖像調(diào)整為大小28×28的輸入圖像,將其轉(zhuǎn)為TFRecord的二進制格式便于深度學(xué)習(xí)模型的批量運算。實驗所用計算機配置:CPU為Intel Core i7—8750H,運行內(nèi)存為16 GB;GPU為NVIDIA GeForce GTX 1060,內(nèi)存大小6 GB。實驗時,先利用Python在TensorFlow環(huán)境中搭建出網(wǎng)絡(luò)的數(shù)據(jù)流圖,然后將訓(xùn)練數(shù)據(jù)輸入到圖中,啟動數(shù)據(jù)流圖,利用權(quán)值更新模塊自動更新權(quán)值,待網(wǎng)絡(luò)訓(xùn)練完畢后,將測試數(shù)據(jù)輸入數(shù)據(jù)流圖進行診斷。
超參數(shù)設(shè)定為:學(xué)習(xí)率(learning rate)為0.001、批大小(batchsize)為20、優(yōu)化器參量ρ1與ρ2分別設(shè)置0.9與0.999,隊列最大容量(capacity)為200,dropout值為0.5以及最大迭代次數(shù)iteration設(shè)為100.0K。在訓(xùn)練集與測試集8︰2的條件下進行測試,其訓(xùn)練精度與損失值變化曲線如圖3。
圖3 精度與損耗的訓(xùn)練曲線
實驗結(jié)果表明在迭代次數(shù)達到50.0 K時模型的識別精度維持在95 %以上,損失函數(shù)值也穩(wěn)定于0.1以內(nèi),將分類訓(xùn)練結(jié)果可視化,得到其混淆矩陣如圖4所示。其總體精度也居于96 %以上,表明模型對于此數(shù)據(jù)集下的漂浮物具有良好的識別效果。
圖4 DCNN模型的混淆矩陣
本文基于DCNN提出了一種水面漂浮物的識別模型,利用CCD相機采取的漂浮物圖片,通過數(shù)據(jù)擴充建立訓(xùn)練集與測試集,在Tensorflow框架下設(shè)計了10層結(jié)構(gòu)的模型,
通過實驗驗證該模型訓(xùn)練精度可達98.46 %,在模型復(fù)雜程度較低的情況下,能夠達到理想的分類效果,為后續(xù)的漂浮物分類識別裝置的研制打下基礎(chǔ)。但訓(xùn)練集數(shù)據(jù)并未涵蓋極端氣候情況下的圖像,因此,模型如何能夠自動識別極端氣候并對相應(yīng)的輸入圖像進行調(diào)整還需要進一步研究。