張翔宇, 朱立軍
(沈陽化工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 遼寧 沈陽 110142)
海洋魚類檢測是海洋魚類進出口的重要一步,由于海洋魚類的顏色、紋理各異,形態(tài)不一,檢測難度較大.而且同一種群的魚類中不同品種往往具有相似的顏色、形狀以及紋理等特征,這更進一步增加了海洋魚類檢測的難度.僅依靠人工對進出口的海洋魚類進行鑒別,經(jīng)常會發(fā)生漏檢、誤檢現(xiàn)象,檢疫人員也需要豐富的專業(yè)知識和經(jīng)驗.因此,針對海洋魚類檢測算法的研究具有重要價值.
目前海洋魚類檢測方法大部分都是基于傳統(tǒng)機器學(xué)習(xí)方法,如支持向量機(SVM)和BP 神經(jīng)網(wǎng)絡(luò)等方法.其中Alsmadi等[1]根據(jù)圖片中魚的尺寸和形狀的測量特征使用BP神經(jīng)網(wǎng)絡(luò)進行分類.Hu等[2]提出了一種基于顏色和紋理特征的多類支持向量機魚種分類方法.姚潤璐等[3]以白魚、鯽魚、鱖魚和鳊魚為研究對象,采用數(shù)字圖像處理技術(shù)和BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)淡水魚自動識別.吳一全等[4]利用Krawtchouk矩、灰度共生矩陣、蜂群優(yōu)化多核最小二乘支持向量機的識別方法對5種淡水魚進行分類,該方法的識別精度達到了83.33%以上.顧?quán)嵠降萚5]將傳統(tǒng)的SVM與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合在Fish4-Knowledge數(shù)據(jù)集上,達到了98.6%的準確率.這些傳統(tǒng)機器學(xué)習(xí)方法普遍是通過人類的先驗知識提取特征,再進行分類識別,因此存在魯棒性不強、特征挖掘能力差和魚類種類可擴展性不強等問題.
近年來,越來越多的學(xué)者以深度學(xué)習(xí)算法代替?zhèn)鹘y(tǒng)機器學(xué)習(xí)算法,并將其應(yīng)用在目標檢測領(lǐng)域,取得巨大的成功.當前比較流行的基于深度學(xué)習(xí)目標檢測框架可以分為兩類:一類是基于候選區(qū)域的R-CNN[6]系列,如R-CNN、Fast R-CNN[7]、Faster R-CNN[8]等two-stage框架,需要先使用區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN)產(chǎn)生目標候選框,然后再對候選框做分類與回歸;而另一類是SSD[9]、Yolo系列[10-12]等one-stage檢測框架,直接在卷積神經(jīng)網(wǎng)絡(luò)得到的特征圖上生成候選框.不少學(xué)者在兩類框架基礎(chǔ)上對內(nèi)部子模塊進行創(chuàng)新改進,基于深度學(xué)習(xí)的算法正逐漸代替?zhèn)鹘y(tǒng)的機器學(xué)習(xí)算法.
Faster R-CNN 網(wǎng)絡(luò)模型在圖片為復(fù)雜背景時對各類別目標具有較強的鑒別能力,同時檢測速度可滿足實時檢測的需求.袁紅春等[13]提出了一種基于Faster R-CNN二次遷移學(xué)習(xí)和帶彩色恢復(fù)的多尺度視網(wǎng)膜增強算法(MSRCR)的方法,以克服水下魚類圖像樣本量不足的問題.Li等[14]使用Faster R-CNN級聯(lián)ReLU、Inception和HyperNet等構(gòu)建塊來改變卷積層的結(jié)構(gòu),使網(wǎng)絡(luò)的平均準確度均值mAP達到了89.95%.本文選取 Faster R-CNN 網(wǎng)絡(luò)作為海洋魚類檢測的基礎(chǔ)框架,但是,在試驗中僅使用原始的Faster R-CNN 模型檢測海洋魚類圖片存在以下兩點不足:第一,圖片中的海洋魚類尺寸差異較大,無法準確檢測出小目標;第二,海洋魚類種間差異較小,以Resnt50作為卷積層對細顆粒度圖像檢測時存在不足.因此,針對海洋魚類尺寸差異較大的問題,本文在Faster R-CNN基礎(chǔ)上進行改進,使用雙向特征金字塔網(wǎng)絡(luò)(BiFPN),使網(wǎng)絡(luò)得到更豐富的特征信息;應(yīng)用ROI-Align算法對差異較大的海洋魚類精確定位;使用特征矩陣作外積相乘的方法以提高相似魚類的識別準確度.該方法解決了實際應(yīng)用中海洋魚類紋理相似、尺寸差異大等因素的影響,提高了海洋魚類檢測的準確率,為海關(guān)進出口檢疫工作提供了一定的參考價值.
經(jīng)過R-CNN和Fast RCNN的積淀,Ren等[8]在2015年創(chuàng)新性地提出了Faster R-CNN,摒棄了Fast R-CNN 中比較耗時的選擇性搜索(selective search)算法,使用RPN獲取候選框,使得目標檢測模型中候選框生成速度顯著提升.把特征提取、候選框生成、邊界回歸和分類等任務(wù)整合在一個網(wǎng)絡(luò)中實現(xiàn)端到端的訓(xùn)練,使得兩階段檢測算法在速度和精度上有較大提升.
Faster R-CNN的基本結(jié)構(gòu)如圖1所示,其步驟為:
圖1 Faster R-CNN架構(gòu)Fig.1 Faster R-CNN architecture
第一步: 將原始圖像直接輸入卷積層(conv layers),使用Resnet50作為卷積層,經(jīng)過卷積、池化和激活函數(shù)運算后在最后一層卷積層中得到特征圖(feature maps),由區(qū)域生成網(wǎng)絡(luò)(RPN)和經(jīng)感興趣池化(ROI Pooling)層共享該特征圖.
第二步: RPN層根據(jù)錨點生成若干個候選框.此網(wǎng)絡(luò)中存在一個3×3的滑動窗口(sliding window),步長設(shè)為 1,每個滑動窗口根據(jù)不同的尺度和比例(2∶1,1∶1,1∶2)生成9個錨點框(anchor box).每個錨點框?qū)?yīng)的是一個建議區(qū)域.通過anchors來解決邊界框列表長度不定的問題,生成候選區(qū)域框,然后將候選區(qū)域輸入到ROI Pooling層.
第三步: ROI Pooling層接收共享卷積層產(chǎn)生的特征圖以及RPN網(wǎng)絡(luò)產(chǎn)生的候選區(qū)域框,綜合兩部分輸入后提取ROI特征,并固定第四步全連接層的輸入維度.
第四步: 在全連接層判斷候選區(qū)域特征圖的類別,同時通過SmoothL1損失函數(shù)計算邊框回歸,優(yōu)化預(yù)測邊框的精確位置.
Faster R-CNN 網(wǎng)絡(luò)采用多任務(wù)網(wǎng)絡(luò),為使多任務(wù)損失最小,整個網(wǎng)絡(luò)的總損失定義為
(1)
分類的損失函數(shù)定義為
(2)
邊框回歸損失函數(shù)定義為:
(3)
(4)
目標檢測是海洋魚類識別重要一步,但是直接將目標檢測模型Faster R-CNN 應(yīng)用于海洋魚類目標檢測場景時,存在小目標檢測難度大和檢測相似魚類準確率低等問題.針對以上問題,本文提出一種改進的Faster R-CNN 的魚類目標檢測方法,其架構(gòu)如圖2所示.結(jié)合雙向特征金字塔網(wǎng)絡(luò)(BiFPN)和特征矩陣外積融合的方式增強特征融合;應(yīng)用感興趣區(qū)域?qū)R(ROI Align)層對檢測目標精確定位,進一步提高海洋魚類檢測的準確率.
圖2 改進后的Faster R-CNN架構(gòu)Fig.2 Improved Faster R-CNN architecture
在Lin等[15]提出特征金字塔網(wǎng)絡(luò)(FPN)之前,學(xué)者們都是將卷積層最后一層的輸出作為特征圖,但是隨著對圖片進行卷積操作,特征圖的分辨率會降低,在圖片的語義信息增強的同時也會丟失位置信息,不利于小物體以及細小紋路的檢測.FPN借鑒了圖像金字塔的思想來融合各維度特征圖,目前FPN已經(jīng)被廣泛應(yīng)用于圖像識別任務(wù)中.Tan等[16]在EfficientDet中使用加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN),引入可學(xué)習(xí)的權(quán)重來學(xué)習(xí)不同輸入特征的重要性,同時反復(fù)應(yīng)用自頂向下和自底向上的多尺度特征融合.當融合不同分辨率的特征時,不再采用常見的將它們調(diào)整為相同分辨率,然后對它們進行匯總的方式,而是借鑒金字塔注意網(wǎng)絡(luò)[17],引入全局自注意力上采樣來恢復(fù)像素定位.由于輸入特征擁有不同的分辨率,它們通常對目標檢測的貢獻是不同的.因此,將每個輸入增加一個可學(xué)習(xí)的權(quán)重,讓網(wǎng)絡(luò)了解每個輸入特征的重要性,更高效地聚合各卷積層輸出的不同尺度的特征信息.
圖3 BiFPN結(jié)構(gòu)Fig.3 Framework of BiFPN
(5)
(6)
在原始的Faster R-CNN模型的主干網(wǎng)絡(luò)之后增加頸部連接層,應(yīng)用BiFPN 算法,將高分辨率的低層特征圖中位置信息和低分辨率的高層特征圖中語義信息相融合,以達到預(yù)測的效果.同時可訓(xùn)練參數(shù)使得在特征融合時讓網(wǎng)絡(luò)自主學(xué)習(xí)不同層級特征的融合,以提高不同層級特征的合理度,提高海洋魚類圖像中目標檢測的精度.
ROI Align是在Mask-RCNN[20]里提出的一種池化方法,是對ROI Pooling進行兩次量化造成的區(qū)域不匹配的改進.ROI Align取消了ROI Pooling中的兩次量化操作,使用雙線性內(nèi)插差值算法保留坐標的浮點數(shù),從而將整個特征聚集過程轉(zhuǎn)化為一個連續(xù)的操作,提高了精度.ROI Align 示意圖見圖4,具體步驟如下:
圖4 ROI Align 示意圖Fig.4 Schematic diagram of ROI Align
第一步: 第一次池化,遍歷每一個候選區(qū)域,保持尺寸的浮點數(shù)不做量化.如得到的候選區(qū)域為20.12×14.78,經(jīng)過第一次量化后尺寸保持不變,仍然為20.12×14.78.
第二步: 第二次池化,將候選區(qū)域分劃分為7×7個同等大小的子單元,每個子單元尺寸也不做量化.如劃分為7×7個單元,每個子單元的大小為2.87×2.11.
第三步: 將每個子單元再平均分成4份,取其中心點的像素作為本區(qū)域的像素值,而中心點的值用離當前中心最近的4個整數(shù)坐標的值進行雙線性插值運算得到,再進行最大池化操作,輸出大小固定為7×7.
與ROI Pooling 相比,ROI Align保留了尺寸的浮點數(shù),減小了在回歸定位時像素偏差產(chǎn)生的影響,在檢測小物體時效果更佳.
實驗訓(xùn)練和測試的工作平臺環(huán)境如表1所示.
表1 實驗工作平臺環(huán)境Table 1 Experiment platform environment
海洋魚類目標檢測的實驗數(shù)據(jù)集使用的是PASCAL VOC數(shù)據(jù)集格式,數(shù)據(jù)集中圖片源于在海鮮市場拍攝和搜集公開數(shù)據(jù)集上的圖片,包含:黃花魚、大黃魚、龍膽石斑魚和青石斑魚等21種常見的海洋魚類,共 8647 張圖片.使用 LableImg軟件人工標注數(shù)據(jù)集,其中每張圖片僅含一種魚類.隨機抽取2張魚類圖片對其進行標注,標注后的圖像見圖5,數(shù)據(jù)集中魚類圖片對比度強、清晰度高.其中訓(xùn)練集包含6053幅,占數(shù)據(jù)集總量的70%,測試集包含2594幅,占數(shù)據(jù)集總量的30%.
圖5 標注后的圖像Fig.5 Labeled image
為克服海洋魚類訓(xùn)練樣本不足的問題和加速網(wǎng)絡(luò)訓(xùn)練,應(yīng)用一次遷移學(xué)習(xí).首先將原始Faster R-CNN模型在PASCAL VOC2012數(shù)據(jù)集上預(yù)訓(xùn)練,然后在海洋魚類訓(xùn)練集上訓(xùn)練,對權(quán)重進行微調(diào),以適應(yīng)海洋魚類數(shù)據(jù)集的檢測.
各實驗使用的訓(xùn)練參數(shù)設(shè)置:初始學(xué)習(xí)率為0.01,權(quán)重衰減系數(shù)為0.000 1,經(jīng)過4個 epoch后學(xué)習(xí)率下降為0.001,參數(shù)優(yōu)化器選用SGD,動量因子設(shè)為0.9,并利用旋轉(zhuǎn)、平移和調(diào)整飽和度等數(shù)據(jù)增強的方法擴充數(shù)據(jù)集中的圖像樣本數(shù)量.
原始Faster R-CNN訓(xùn)練時loss值的變化可以直觀地反映訓(xùn)練迭代情況.圖6 為原始Faster R-CNN訓(xùn)練時loss值變化情況,橫軸表示迭代次數(shù),縱軸表示loss值.在迭代到大約14 000次時,loss值降為0.04左右,隨后逐漸趨于穩(wěn)定,在訓(xùn)練集上基本收斂,達到了預(yù)期效果.各實驗都是將loss訓(xùn)練至loss變化趨于平穩(wěn)為止.
圖6 訓(xùn)練時loss變化情況Fig.6 Loss change during training
平均準確度(AP)是對精確率和召回率綜合考慮,是衡量算法可靠性的重要指標之一.同時計算出21類檢測目標的平均準確度均值(mAP),mAP 值反映了檢測模型識別所有類別的綜合性能,因此,使用平均準確度、平均準確度均值和平均檢測時長作為衡量標準.平均準確度定義為
(7)
平均準確度(AP)可由以精確率(P)為縱軸、召回率(R)為橫軸的精確率-召回率(P-R)曲線下方的面積表示.其中精確率和召回率的定義如下:
(8)
(9)
式中:STP表示標簽為正樣本且預(yù)測結(jié)果也為正樣本的數(shù)量;SFP表示標簽為負樣本但預(yù)測結(jié)果為正樣本的數(shù)量;SFN表示標簽為正樣本但預(yù)測結(jié)果為負樣本的數(shù)量.其中,預(yù)測結(jié)果為正樣本是置信度閾值的樣本,預(yù)測結(jié)果為負樣本是小于置信度閾值的樣本.
mAP的定義為
(10)
式中n為數(shù)據(jù)集中海洋魚類的種類個數(shù).本文數(shù)據(jù)集中海洋魚類種類有21種,所以n=21.
平均檢測時長是評價模型檢測速度的指標之一.其計算公式為
(11)
使用本文構(gòu)建的海洋魚類數(shù)據(jù)集訓(xùn)練、測試改進的 Faster R-CNN 模型的檢測性能.不同模型的檢測結(jié)果如表2所示,改進的Faster R-CNN模型的平均準確度相比于前4種模型,其mAP值最高,相較于原始Faster R-CNN 在mAP值上有7.4%的提升.在使用特征矩陣外積融合方法時提升較大,為5.3%,此方法是將特征矩陣外積相乘,增強了特征的融合,使得檢測模型在性能上提升較大.
表2 不同模型的mAP值對比Table 2 Comparison of mAP values of different models
表3對比了在Faster R-CNN基礎(chǔ)上增加BiFPN和ROI Align后在龍膽石斑魚和青石斑魚、牙片魚和多寶魚兩組相似魚類的檢測平均準確度,改進后的模型在相似魚類上有2.7%~3.6%的提升,檢測的mAP有3.1%的提升.
表3 相似魚類在Faster R-CNN和改進后的模型上平均準確度Table 3 Average accuracy of similar fish on Faster R-CNN and improved model
表4比較了兩種模型的訓(xùn)練和測試運行時間.從實驗結(jié)果可得出,改進的Faster R-CNN模型比原始的 Faster R-CNN模型訓(xùn)練時間長,檢測速度也有所降低,但仍在可接受范圍內(nèi).
表4 兩種模型時間對比Table 4 Time comparison between the two models
使用改進的Faster R-CNN模型對海洋魚類圖片進行檢測,同時也和其他方法進行了比較,并優(yōu)化了改進后的Faster R-CNN關(guān)鍵參數(shù),使其更有利于海洋魚類的檢測.
(1) 使用ResNet50 結(jié)構(gòu)作為特征提取模塊,該模型不需要對圖像進行預(yù)處理,讓其從原始圖像中自主學(xué)習(xí)海洋魚類的特征,避免傳統(tǒng)機器學(xué)習(xí)算法中手工設(shè)計特征表達魯棒性差的因素,能更準確地反映海洋魚類圖片的特征信息.
(2) 使用BiFPN和ROI Align相結(jié)合的方法,在相似魚類檢測中,其平均準確度均值(mAP)有3.1%的提升;使用特征矩陣外積融合的方法對魚類檢測,其平均準確度提升較高.
(3) 基于改進的 Faster R-CNN 模型,由于模型復(fù)雜度增加導(dǎo)致模型的訓(xùn)練時間和測試時間有所增加,識別單張圖片的平均時長為 0.08 s.
改進的 Faster R-CNN 模型實現(xiàn)了對海洋魚類圖片的端到端快速、準確的檢測,檢測海洋魚類數(shù)據(jù)集的平均準確度達到85.3%,可為海關(guān)進出口海洋魚類創(chuàng)造一定的經(jīng)濟效益.