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