唐小敏,舒遠仲,劉文祥,劉金梅
(南昌航空大學 信息工程學院,江西 南昌 330100)
隨著Hinton領導的小組采用深度學習模型AlexNet[1]在ImageNet圖像識別大賽中一舉奪冠,人工智能技術在目標檢測中得到了廣泛使用,例如車輛目標檢測[2]、人臉識別[3]、智能安防[4]、智能醫(yī)院等。近年來,很多學者針對自然環(huán)境為河道漂浮物識別帶來的負面影響提出了自己的研究成果。
左建軍等[5]采用背景減除分割出圖像中漂浮物區(qū)域,再利用BP算法進行漂浮物特征訓練并構建漂浮物分類器對分割區(qū)域進行漂浮物識別。祝典等[6]設計了一種水域漂浮物收集監(jiān)測系統(tǒng)。許靜波等[7]成功搭建了一套水面漂浮物檢測及估算系統(tǒng)。雷李義等[8]提出了一套基于深度學習的水面漂浮物目標檢測方案。朱賀等[9]結合使用灰度閾值分割和河道輪廓識別方法實現對河道區(qū)域的準確提取。利用河道輪廓形態(tài)進行河道分割可以減少河岸上垃圾對檢測結果的影響,但是不能排除相似形態(tài)水體上的漂浮物對檢測結果造成影響。
文中首先對河道進行分割提取,然后對已分割出的河道區(qū)域進行漂浮物檢測?;?種特征提取網絡分別進行Faster R-CNN[10]網絡模型和SSD[11]網絡模型的訓練,對比分析這三種特征提取網絡的性能,選擇性能最優(yōu)的特征提取網絡進行兩種模型的對比,經過實驗分析,選擇SSD網絡模型進行漂浮物檢測效果最佳。
實驗所需數據是利用無人機對3條河流分別進行正射視頻采集而得,其中河流總長5.6公里。為減小河岸垃圾對檢測結果的影響,利用傳統(tǒng)圖像處理技術先進行河道檢測。
對影像進行濾波處理提升河道整體灰度值并增強河道連通性,采用自適應閾值化操作將濾波圖像二值化,使算法具有更好的魯棒性;為使河道區(qū)域與非河道區(qū)域分離,先對影像進行形態(tài)學處理去除小的干擾塊和加大河道的連通性,最后對圖像進行輪廓提取。經過以上步驟,發(fā)現在河道旁出現水體或水域等客觀條件下,河流檢測不準確。為解決此問題,根據視頻中相鄰幀之間河道相似且河道在影像中間的特點,提出當檢測區(qū)域中心線偏離圖像中心線一定閾值時,取圖像寬的0.1倍,使用上次河道中心點對影像進行糾正的方法最終獲得河流區(qū)域圖像準確率為91.4%。
對以上獲取的河流區(qū)域數據進行漂浮物識別檢測。由于沒有漂浮物檢測公共數據集,則需制作漂浮物數據集,其制作技術路線如圖1所示。河流視頻幀率為50 fps,無人機飛行速率保持在15 m/s,飛行高度保持在55 m,對河流視頻每隔90幀保存圖像,共計7 800張。去除無人機起飛、降落、某些河流區(qū)域被遮擋以及錯誤識別等原因導致保存圖像中不包含河流圖像,最終可用于標注影像2 400張,利用labelImage對影像進行漂浮物標識并保存標注xml數據集,將標注完成圖像按8∶2進行訓練集與驗證集劃分,數量分別為1 920和480張。
圖1 河流漂浮物數據集制作技術路線圖
由于數據量過小,同時為了不增加數據標注時的工作量以及訓練時對機器的內存消耗,對數據集使用軟數據增強技術。該方法是一種在數據訓練過程中對每批次的數據進行數據增強,再進行數據訓練的方法。之后將對每批次訓練數據進行隨機翻轉、隨機顏色抖動和隨機裁剪,使每次訓練的數據不相同從而達到數據軟擴增效果,該方法在一定程度上提高了模型泛化性和魯棒性。網絡訓練圖像大小為512*512分辨率,并將影像R,G和B波段分別減去123.68,116.78和103.9進行歸一化[12],使模型訓練更容易。
以河流影像漂浮物檢測為研究目標,考慮到實時性,將使用單步檢測SSD算法作為漂浮物檢測核心算法。SSD算法繼承了Faster RCNN和YOLO[13-14]的不同優(yōu)點,一方面,SSD采用不同尺寸和長寬比的先驗框(Faster RCNN稱為Anchor),在一定程度上克服了目標檢測尺寸多變問題,同時使算法訓練簡易化,另一方面,SSD采用YOLO一步檢測思想,其對特征圖直接利用CNN進行回歸預測,這與YOLO將特征圖進行向量化再全連接后進行回歸預測不同,此方法可以充分利用特征圖的空間結構信息來確保預測分類準確性。
SSD深度網絡由前端特征提取網絡和后端多尺度特征檢測網絡組成,前端特征提取網絡以VGG16卷積神經網絡為例生成特征圖,并與多尺度特征檢測網絡共享卷積特征。該特征提取網絡包括13個3×3卷積層和5個最大池化層(Max pooling),每次卷積后均使用ReLU激活函數進行激活,每層組成形式均為卷積層(convolution)+激活函數(ReLU)+池化層(Max pooling)的組合方式,此沿用VGG16卷積網絡,但該特征提取網絡與VGG16網絡略微有所差異,其將VGG16網絡的全連接層fc6和fc7分別替換成擴張率為6的3×3空洞卷積層conv6和1×1的卷積層conv7。為了不減小特征圖維度,將原來池化層pool5的卷積核由2×2、步數2變?yōu)?×3、步數1,同時為了配合后端多尺度特征檢測網絡,其移除了VGG16的dropout層和fc8層。
后端多尺度特征檢測網絡共提取了6個網絡特征圖用于漂浮物的檢測,第一個特征圖取自Conv4_3層,其大小為38×38,由于第一特征圖靠前,為減小與后面檢測層的差異,第一特征圖后增加L2 Normalization層,其僅對每個像素點在通道維度上進行歸一化,將歸一化特征圖與一個可訓練縮放變量gamma相乘。后面5個特征圖由于靠后無需做過多變換,其分別取自Conv7層、Conv8_2層、Conv9_2層、Conv10_2層、Conv11_2層,大小分別為19×19、10×10、5×5、3×3、1×1。
對于不同特征圖設置先驗框數目不同,先驗框的設置主要體現在尺寸和長寬比上,先驗框尺寸遵循線性遞增規(guī)則,遞增公式為:
(1)
其中,m為特征圖個數,文中為5(除第一特征圖外,其單獨處理),sk表示先驗框大小與圖片大小的尺度比例,smax和smin分別表示該比例的最大值和最小值,文中取0.9和0.2。第一特征圖先驗框尺度比例為smin/2,對于后面5個特征圖按照式(1)線性增加,然后將這些比例與圖片大小相乘得各個尺度的特征圖先驗框。先驗框長寬比一般為αr∈{1,2,3,1/2,1/3,1},在實際中Conv4_3、Conv10_2和Conv11_2特征圖不使用長寬比為{3,1/3}的先驗框,因此總共得到8 732個先驗邊界框。
網絡損失函數計算公式如下:
(2)
式(2)中位置誤差Lloc定義如下:
(3)
其中,d表示默認邊界框,中心為(cx,cy),寬度為w,高度為h。
式(2)置信度誤差Lconf定義如下:
(4)
為評估模型對河流漂浮物識別的有效性,采用recall(召回率)、precision(精確率)以及引入F1值[15]為調和平均值對模型進行評估。假設模型正確識別漂浮物的數量為TP(真正例),模型錯將其他類識別為漂浮物的數量為FP(假正例);模型識別非漂浮物的正確數量為TN(真反例),模型錯將漂浮物識別成其他類別數量為FN(假反例)。
P是在識別漂浮物中真正例所占的比例,則它表示為:
(5)
R表示正確識別出的漂浮物與存在的漂浮物數量的比值,其表示為:
(6)
F1分數認為召回率和精確率同等重要,可表示為:
(7)
實驗是在Ubuntu16.04LTS操作系統(tǒng),處理器是Intel? CoreTM i7-6800k CPU @ 3.4 GHz×12(64 GB運行內存)和顯卡是NVIDIA GeForce GTX 1080 Ti GPU(11 GB 運行顯存)的電腦設備上進行,深度學習框架為Tensorflow1.8。
文中采用的是端到端識別,并使用coco的預訓練模型進行參數遷移初始化設置。模型優(yōu)化器使用Momentum算法,初始學習率為3e-4,動量因子為0.9,最大迭代步數為100 000步。
為加速網絡迭代速度,當模型迭代達40 000步時,學習率調整為3e-5,迭代到80 000步時,學習率進一步調整為3e-6。訓練結束后保存好訓練模型,并使用測試河流視頻對模型進一步測試,測試保留類別置信度大于0.7的河流漂浮物,最后在測試河流視頻上保存輸出結果。
實驗將在Faster R-CNN深度網絡模型和SSD網絡模型上,分別使用深度網絡ResNet-50、ResNet-101和Inception-v1作為骨干網。隨著訓練過程中網絡迭代次數的增加,網絡損失都趨于穩(wěn)定,隨后分別比較了兩種深度學習目標檢測模型各自基于不同特征提取網絡時整體損失的下降情況,具體對比情況如圖2和圖3所示。
圖2 SSD模型整體損失對比
圖3 Faster-RCNN模型整體損失對比
圖2顯示了3種特征提取網絡在SSD模型上的損失情況,顯然基于ResNet-101特征提取網絡的SSD模型損失下降最快且網絡收斂最為穩(wěn)定,圖中可以明顯看出隨著特征提取網絡深度增加,SSD模型的整體損失下降越大,模型收斂越穩(wěn)定。圖3顯示了3種特征提取網絡在Faster R-CNN模型上的損失情況,基于ResNet-101特征提取網絡的Faster R-CNN收斂速度較快,明顯優(yōu)于其他2種模型,而基于ResNet-50和Inception-v1特征提取網絡的Faster R-CNN模型都出現了不同程度的震蕩,且基于Inception-v1特征提取網絡的Faster R-CNN模型收斂情況相較于其他兩種模型收斂程度較差。
為了選出優(yōu)秀的深度網絡模型與特征提取網絡,根據各模型總體損失下降函數對比結果為2種模型都選擇了ResNet-101作為模型特征提取網絡并做了進一步對比。2種模型隨迭代次數增加模型整體損失下降情況對比如圖4所示。圖4表明以ResNet-101為特征提取網絡的SSD模型,隨著迭代次數增加整體損失要優(yōu)于基于ResNet-101特征提取網絡的Faster R-CNN模型,雖然Faster R-CNN最后趨于穩(wěn)定,但SSD模型最終損失趨于更小的數值,這表明基于ResNet-101特征提取網絡的SSD模型能夠更好地擬合河流漂浮物數據。
圖4 SSD與Faster R-CNN模型整體損失對比
根據模型評價指標,文中對以上不同特征提取網絡的SSD和Faster R-CNN模型針對精確率和召回率兩項指標以及F1值和單張圖像的檢測時間做出了詳細對比,對比結果如表1所示。表1統(tǒng)計結果為訓練好的不同特征提取網絡的SSD模型和Faster R-CNN模型分別對河流漂浮物驗證集進行漂浮物識別并計算各指標值。由表1對比可得,隨著特征提取網絡深度增加,基于2種模型的河流漂浮物識別精確率在不斷增加,模型性能不斷提升。通過對比可知,基于ResNet-101特征提取網絡的SSD和Faster R-CNN深度網絡模型都表現出優(yōu)良的性能,Faster R-CNN深度網絡模型河流漂浮物識別精確率達85.05%,SSD深度網絡模型河流漂浮物識別精確率達84.47%略低于前者,但SSD模型整體性能上明顯優(yōu)于Faster R-CNN模型,SSD模型召回率達到61.67%,高出Faster R-CNN模型2.84%,且SSD模型F1值達到71.29%,高于Faster R-CNN模型F1值69.55%,同時SSD模型在單張圖像的檢測時間上表現出明顯優(yōu)勢。綜上,基于ResNet-101特征提取網絡的SSD深度網絡模型在漂浮物識別上更具優(yōu)勢,符合文中對視頻中河流漂浮識別的目標。
表1 不同特征提取網絡的SSD和
根據訓練結果分析,實驗使用基于ResNet-101特征提取網絡的SSD深度網絡模型,進行漂浮物多尺度預測及位置回歸,此方法有效提高了網絡對不同尺度漂浮物的識別精度,具體漂浮物識別如圖5所示。
圖5 河流漂浮物識別結果
根據上述網絡模型分析可知, Faster R-CNN網絡模型在河流漂浮物識別精度上相較于SSD深度網絡模型提高了0.58%,但Faster R-CNN召回率減少了2.84%,F1值減少了1.74%。導致以上差距的原因如下:第一,Faster R-CNN深度網絡模型將特征提取網絡提取的特征經過區(qū)域建議網絡,生成k個區(qū)域建議框后送入RoI子網以準確提取漂浮物的感興趣區(qū)域,此過程與SSD深度網絡模型采用將整個檢測網絡作為單個神經網絡進行漂浮物識別相比非常耗時,所以Faster R-CNN模型檢測速度較慢。第二,由于無人機對河流進行拍攝時飛行高度較高,這將導致河流漂浮物可視尺度非常小,而SSD深度網絡模型采用多尺度特征提取,分辨率較大的特征圖將被用于漂浮物尺度較小的目標識別,與Faster R-CNN只使用單一尺度特征圖提取特征進行目標識別相比,Faster R-CNN很難將所有較小漂浮物識別出,進而導致Faster R-CNN整體性能低于SSD深度網絡模型。
提出了一種基于SSD深度學習網絡的漂浮物檢測研究方法。首先根據河道水面反光及水體顏色相近等特性,采用OpenCV圖像處理技術對河流區(qū)域進行分割提取。然后在此基礎上進行漂浮物檢測研究,漂浮物識別算法在Tensorflow框架的基礎上,搭建了基于ResNet-101特征提取網絡的深度神經網絡SSD模型,通過利用COCO數據集預訓練模型進行網絡遷移訓練。同時介紹了從原始視頻數據到漂浮物數據集的制作全過程,并對數據集進行軟數據增強,有效緩解了數據量不足的問題。實驗分析表明,隨著特征提取網絡的加深,兩種深度網絡模型在性能上都有不同程度的提升,而基于ResNet-101特征提取網絡的SSD模型相較于其他三種特征提取網絡具有明顯優(yōu)勢,并能夠高效地對漂浮物進行識別,這體現出深度學習方法在目標識別領域的強大之處。目前,該算法已應用于無人機機載端的河流巡查中,通過無人機實時拍攝河流視頻,已做到對實時視頻進行邊緣計算分析河流中漂浮物數目,然后實時發(fā)送至服務器進行河流污染度評分。