劉 洋,張勝茂,王書獻,王 斐,樊 偉,鄒國華,伯 靜
(1 上海海洋大學信息學院,上海 201306;2 中國水產(chǎn)科學研究院東海水產(chǎn)研究所,農(nóng)業(yè)農(nóng)村部漁業(yè)遙感重點實驗室,上海 200090;3 上海峻鼎漁業(yè)科技有限公司,上海 200090;4 武漢紡織大學經(jīng)濟學院,湖北,武漢 430200)
水族館觀賞魚是一項保護野生魚類及傳播海洋知識的產(chǎn)業(yè),其價值幾十億美元[1]。利用目標檢測算法自動跟蹤和識別魚類對監(jiān)測魚類狀態(tài)及傳播知識具有重要意義[2-3]。受應用環(huán)境、成本和便捷性等因素的影響,算法需要更好實時性和低能耗,從而減少運行成本。
隨著目標檢測的發(fā)展,已有很多研究針對該任務,例如區(qū)域建議檢測網(wǎng)絡R-CNN[4],F(xiàn)ast R-CNN[5],F(xiàn)aster R-CNN[6],R-FCN[7]和Libra R-CNN[8]等;端到端檢測網(wǎng)絡Yolo[9-11],SSD[12]和Retinanet[13]等。在魚類目標檢測領域也有廣泛的應用,如袁紅春等[14]針對水下目標識別任務遷移學習了Fast Rcnn網(wǎng)絡,平均測試精確率達到91.7%,但由于其網(wǎng)絡的主干(backbone)使用了VGG16和Resnet101,計算復雜度高。李慶忠等[15]為避免網(wǎng)絡權重過大,修改了Yolo的backbone,在1 500張圖像上實現(xiàn)了99%的準確率,但數(shù)據(jù)較為簡單,網(wǎng)絡泛化能力差。王雙琴等[16]改進MobileNet、SSD網(wǎng)絡結(jié)構(gòu),并進行數(shù)據(jù)增強和損失設計進一步提高了魚類識別精確率,但其數(shù)據(jù)集不夠豐富。Jalal 等[17]在LifeCLEF 2015數(shù)據(jù)集上,融合Yolo網(wǎng)絡模型與高斯混合模型,通過時間信息檢測背景中偽裝的自由移動的魚,有效地提高了檢測精確率,但其網(wǎng)絡權重較大。張勝茂等[18]將 MobilenetV1作為SSD網(wǎng)絡的主干,實現(xiàn)了92.5%的識別精確率,但網(wǎng)絡識別能力和計算復雜度需進一步優(yōu)化。
為了提高魚類目標檢測網(wǎng)絡檢測識別能力和實時性,本研究重新制作了魚種更豐富圖像質(zhì)量更好的數(shù)據(jù)集,探究了高精度、輕量級目標檢測網(wǎng)絡的應用方案。在水族館拍攝魚類視頻,經(jīng)過清洗、處理和標注,生成了包含83中常見魚類,共10 042張圖像的水族館魚類的數(shù)據(jù)集;為滿足實時性要求,基于“深度可分離卷積”[19]、殘差[20]和Mish[21]激活函數(shù)重新設計了YoloV4的backbone,以降低網(wǎng)絡的計算量,加快網(wǎng)絡的推理速度;為了加強網(wǎng)絡的識別和檢測能力,用不同數(shù)據(jù)增強(Mixup[22]、 Cutmix[23]、Mosaic[9])、不同激活函數(shù)(ReLU[24]、ELU[25]、Swish[26]、Mish[21])、多尺度圖像輸入對網(wǎng)絡進行消融研究,得到最佳的數(shù)據(jù)增強和激活函數(shù)的搭配,提高了網(wǎng)絡的識別和檢測精確率;最終,得到了計算量小、推理速度快、檢測和識別精確率較高且對多尺度輸入具有泛化能力的魚類目標檢測與識別網(wǎng)絡。
大規(guī)模的魚類數(shù)據(jù)可以促進更強大、更復雜的識別網(wǎng)絡和算法發(fā)展。但魚類種類繁雜多樣,如何準確地組織、收集和處理數(shù)據(jù)仍然是漁業(yè)智能化的關鍵問題。本研究在水族館用攝像機拍攝游動的活體魚類視頻,總共拍攝了83種魚的游泳視頻。對該數(shù)據(jù)進行處理,處理過程包括:檢查視頻質(zhì)量(包括清晰度、曝光、是否有魚類對象),挑選出曝光正常清晰度高有魚類對象的視頻;然后利用Opencv將視頻存儲成圖像,人工去除模糊不清的以及不包含魚類的圖像。得到了83種魚類的數(shù)據(jù)集,包括白鰭鯊、白招財魚、斑點水母、大目魚、海蘋果、關刀、河豚、皇后神仙、蘇眉等,共10 042張圖像,每張圖像的分辨率為600×400像素,如圖1a。為滿足該數(shù)據(jù)集在基于監(jiān)督學習的目標檢測和識別中的要求,使用Labelme軟件對不同魚種進行標注,標注的內(nèi)容包括每一張圖像中魚類對象的目標檢測框(x,y,w,h)和魚類種類,其中x、y、w、h分別表示圖像中魚類對象目標檢測框左上角位置(x,y)和長寬(w,h),總共標記了13 558個目標,生成了10 042個標注文件,例如彩色水母標注如圖1b。在試驗中,參照(visual object classes,VOC)[27]格式對數(shù)據(jù)進行歸納整理,以便其他相關研究重復利用。
圖1 水族館魚類圖像樣圖Fig.1 Fish data sample of aquarium
為了驗證數(shù)據(jù)集的有效性,將83種魚類圖像數(shù)據(jù)及一一對應的標注文件按照魚種編號為0~82,并按照8∶2的比例將魚類的數(shù)量均勻分為訓練集和測試集,其數(shù)據(jù)量分布如圖2,除了編號為將軍甲、藍線雀和虱目魚(編號12、58和59)數(shù)據(jù)量較多,其他魚類數(shù)據(jù)量平均分布在80~150張,整體數(shù)據(jù)分布較為均勻。
圖2 水族館魚類數(shù)據(jù)集分布Fig.2 Distribution of fish data sets in aquarium
訓練集的數(shù)量及其數(shù)據(jù)多樣性對增強網(wǎng)絡的泛化能力具有決定性作用,因此對圖像進行數(shù)據(jù)增強處理,能提高網(wǎng)絡對數(shù)據(jù)的泛化能力(圖3)。首先對圖像進行放縮、平移、翻轉(zhuǎn)、旋轉(zhuǎn)和裁剪等變換操作,其中放縮圖像可增強網(wǎng)絡對多尺度輸入的泛化能力;然后使用Mixup、Cutmix、Mosaic對圖像做數(shù)據(jù)增強。
圖3 數(shù)據(jù)增強示例圖Fig.3 Data augmentation example diagram
Mixup基于特征張量的線性插值對應相關標簽的線性插值的先驗原理,其計算開銷小且與數(shù)據(jù)無關[22],如公式(1)所示。
(1)
Cutmix將圖像A中截切一塊用B作為填充,在推理過程中增加了數(shù)據(jù)復雜性,可提高網(wǎng)絡的泛化能力[23],如公式(2)所示。
(2)
目標檢測算法中,基于傳統(tǒng)CNN卷積設計的主干網(wǎng)絡(backbone)包括Resnet[20],VGG[28],Densenet[29],Squeezenet[30]等。這些網(wǎng)絡的層數(shù)較多,且傳統(tǒng)CNN卷積的計算量較大。直接使用上述網(wǎng)絡遷移學習水族館魚類數(shù)據(jù)時,均會出現(xiàn)參數(shù)冗余、檢測實時性差等問題。為解決該問題,本研究重新設計了目標檢測網(wǎng)絡的backbone模塊。使用Xception[31],Mobilenet[19,33]利用“深度可分離卷積”(Depthwise)的方法,可有效地減少計算復雜度。利用He等[20]提出的殘差原理,防止梯度消失; 使用Ioffe等[32]提出的Batch Normalization(簡稱:BN)模塊,加速訓練與防止過擬合;使用Sandler M等[19]提出的Linear Bottlenecks (LB),防止特征退化。并對激活函數(shù)做消融研究,包括計算量較少的非平滑函數(shù)ReLU[24]及計算量較大的平滑函數(shù)ELU[25]、Swish[26]和Mish[21]等。
該模塊主要由PDP1~3(Pointwise To Depthwise To Pointwise)利用殘差原理組成,可使其特征信息穩(wěn)定傳播。在設計中,該模塊為減少計算量使用了Depthwise卷積(卷積核為K2),其特征張量計算量為W×H×K2;僅為CNN卷積計算量W×H×N×K2的1/N;該模塊為了能靈活壓縮和擴張張量信息,用Pointwise卷積融合Depthwise卷積后的張量信息,并且用Linear激活函數(shù)防止較淺層次網(wǎng)絡中的特征退化現(xiàn)象[19];該模塊為了加速訓練與防止過擬合,在卷積之后使用BN模塊;該模塊為了使張量在反向和正向傳播的過程中更加平滑地過度,使用Mish激活函數(shù);該模塊用步長和大小為2的最大池化降采樣。
該模塊推理流程簡述,如圖4所示。首先輸入為(W,H,K)的張量,通過PDP1在n通道上提取特征信息,輸出 (W,H,n)的張量;然后PDP2為提煉細粒度的信息,先用PW卷積將特征通道擴張到2n細化張量信息,再用DW提煉細粒度的特征,最后再用PW將信息壓縮回n通道,輸出(W,H,n)的張量[19];然后PDP3承接PDP1和PDP2在通道上合并的殘差張量(W,H,2n)以保留更多的原始信息,防止PDP2提煉特征過程中出現(xiàn)特征退化[20],并用PW和Linear壓縮信息,輸出(W,H,n)的張量;最后將PDP1和PDP3的殘差張量拼接,使用2×2的最大池化(maxpool 2:2)降采樣。該模塊用較少計算復雜度的模塊(Depthwise,Pointwise),將張量信息進行1次擴張,2次壓縮,2次殘差融合和1次下采樣,根據(jù)Resnet和Mobilenet的設計原理,其對張量信息有細化、壓縮、殘差和降采樣的功能。為了方便,本文將該重組網(wǎng)絡簡稱為TPDP(Triple PDP)。
目標檢測與分類網(wǎng)絡的結(jié)構(gòu)包括backbone,neck及head模塊(代碼:https://github.com/dm0mb/FishCLEF-dm0mb)。其中,backbone由3個串行的TPDP連接而成,且TPDP1~TPDP3的通道數(shù)依次為32、64、128,因此以下稱該重構(gòu)的backbone為BTP(The backbone by TPDP),如圖5a。在BTP模塊中,用32通道卷積核卷積(卷積核大小為(3×3),步長為2),對圖像特征進行初步提取。并使用3個TPDP對特征進行多次擴張,壓縮,殘差融合和下采樣;在neck模塊中,將底層特征語義信息和高層特征語義信息融合成特征金字塔,分層次進行預測,以擴大感受野并優(yōu)化網(wǎng)絡在描述小目標中的表現(xiàn)[34]。在head模塊,head1模塊下采樣32倍用于檢測小目標,head2模塊下采樣16倍用于檢測大目標。
注:DW表示卷積核為(3×3)的“深度可分離卷積”(Depthwise Convolution);Pw 表示卷積核為(1×1)的點卷積(Pointwise Convolution),BN表示Batch Normalization;Linear表示線性激活函數(shù); Mish為平滑的激活函數(shù);route表示在張量拼接;maxpool 2∶2為核為2步長為2的最大池化;n表示通道數(shù)圖4 重組卷積模塊(TPDP)Fig.4 Reorganized convolution module (TPDP)
目標檢測網(wǎng)絡的輸出及評估原理。將圖片分成S×S個網(wǎng)格單元,每個網(wǎng)格單元預測3個檢測框,每個檢測框包含5個參數(shù)(x,y,w,h,η),分別表示預測框的位置坐標(x,y),預測框的寬高(w,h)和該網(wǎng)格的目標置信度(η)。本試驗中包含83種魚類目標,因此head1和head2中的卷積模塊的通道為264(檢測框個數(shù)×(類別數(shù)+檢測框參數(shù)個數(shù))),各個檢測框的預測參數(shù)如圖5b。為了方便,將該網(wǎng)絡稱為BTP-YoloV3。
注:Conv 3表示3個卷積核的普通卷積;upsample 2表示2倍上采樣運算; class表示不同種魚類的編號;yolo為輸出層 圖5 網(wǎng)絡結(jié)構(gòu)及檢測框Fig.5 Network structure and bounding box
損失函數(shù)為置信度損失、目標檢測損失和分類損失函數(shù)。置信度損失:將圖像分為S2個網(wǎng)格后,對于每一個網(wǎng)格進行置信度評價 ,即計算“該網(wǎng)格中是否包含目標”的損失,如果包含目標則進行目標檢測,如果不包含目標,則掃描下一個網(wǎng)格。置信度損失函數(shù)采用交叉熵函數(shù)[9],如公式(3)所示。
(3)
目標檢測損失:目標檢測損失用于表示真實框與預測框的之間的差距。常見的目標檢測損失函數(shù)有IoU、CIoU[35]等。
在傳統(tǒng)的損失計算方法中,常利用IoU表示預測框與真實框的重合程度。IoU參數(shù)的數(shù)值為預測框、真實框的重合部分面積與預測框、真實框面積之和的比值。IoU參數(shù)能夠在一定程度上反映模型預測結(jié)果的好壞,但存在一些局限性。選用CIoU替代IoU作為評價目標檢測損失的標準。CIoU在IoU的基礎上,做了以下兩點改進:第一,為了解決IoU在預測框與真實框無重疊區(qū)域情況下的無梯度回傳問題,定義變量v、α作為懲罰參數(shù)。檢測框與真實框重疊的情況比非重疊情況擁有更高的優(yōu)先級,α可以讓重疊的情況優(yōu)先于非重疊的情況公式(5)。第二,IoU僅判斷重疊區(qū)域面積,忽略了預測目標中心與真實目標中心之間的距離。為了解決該缺點,CIoU使用歐式距離計算兩中心點距離。最后,目標檢測損失函數(shù)如公式(6)所示。
(4)
(5)
(6)
分類損失:采用交叉熵損失函數(shù)評價預測類別和真實類別之間的距離[28],如公式(7)所示,
(7)
最后得到優(yōu)化網(wǎng)絡的損失函數(shù)如公式(8)所示。
L=λclsLcls+λCIoULCIoU+Lc
(8)
式中:λcls和λCIoU為前置變量,在0~1之間,在本研究中設置為1。
試驗用NBFLOS(Billion Float Operations)、AIoU、NmAP( Mean Average Precision)和NFPS(Frames Per Second)評價計算復雜度、平均交并比、平均精確率和每秒計算圖像的張數(shù)[9]。
(9)
(10)
(11)
(12)
(13)
(14)
(15)
式中:W,H表示輸入特征的長和寬;N,M表示輸出特征的長寬,K表示卷積核的大??;C,D分別表示常規(guī)CNN卷積和Depthwise-Pointwise卷積的卷積個數(shù);N為待檢測圖像個數(shù);A,B分別表示真實的目標框和預測目標框;tP為正確預測正樣本的個數(shù);fp錯誤預測正樣本的個數(shù);fn為錯誤預測負樣本的個數(shù);n為待檢測的目標類別數(shù);P表示精確率;R表示召回率;pA表示目標類別精確率;pAi為第i個目標類別的精確率。t為檢測時間。
用Darknet深度學習框架,在Tesla V100顯卡(16G),內(nèi)存為32G的Linux系統(tǒng)進行試驗。用SGD優(yōu)化器在反向傳播過程中更新網(wǎng)絡權重,初始學習率0.001 3, Momentum為0.949,Decay為0.000 5,初始輸入圖像為512×512。Batch Size為512,分16次裝入顯存計算前向傳播后,再計算1次反向傳播,并在反向傳播20 000、40 000次時,將學習率線性縮放為當前學習率的1/10,直到完全收斂。由于ReLU相對于Mish計算量更小,為加快網(wǎng)絡訓練的速度,先用ReLU激活函數(shù)對網(wǎng)絡進行熱身訓練,待權重穩(wěn)定后,再用Mish激活函數(shù)用相同的超參數(shù)遷移學習網(wǎng)絡,增強網(wǎng)絡的魯棒性;最后試驗在83種魚的2 000張圖像測試,測試效果如圖6,其平均測試精確率達到94.37%,每類魚的精確率如圖7。
圖6 魚類目標檢測與分類結(jié)果Fig.6 Fish target detection and classification results
圖7 測試集每類魚的精確率分布Fig.7 Average precision distribution of each species of fish in the test set
本研究對數(shù)據(jù)集進行放縮、Mosaic和Cutmix的數(shù)據(jù)增強,并且head1~2模塊中對圖像進行了32倍和16倍下采樣,輸出的張量形狀分別為(16,16,256)和(32,32,256),其感受野同時兼顧了大目標和小目標。基于以上兩個原因,本研究相比于其他研究[14-17],可讓模型對多尺度輸入的圖像具有泛化能力,可兼容不同尺度的輸入圖像。經(jīng)過測試,網(wǎng)絡在512×512的圖像數(shù)據(jù)集上訓練后,可實現(xiàn)同一網(wǎng)絡兼容了6種不同圖像輸入尺寸,如表1所示。平均精確率和平均交并比評價指標在512×512網(wǎng)絡中表現(xiàn)最好,隨著圖像尺寸的變化,其指標也有所下降。測試結(jié)果表明,該網(wǎng)絡在不改變輸入接口的情況下,兼容了多種輸入尺度圖像的檢測和識別。
表1 多尺度圖像指標Tab.1 Multi-scale image index
為定量研究網(wǎng)絡調(diào)優(yōu)對評價指標的影響,分別驗證了各數(shù)據(jù)增強、各激活函數(shù)和BN的不同組合對目標檢測精確率的影響。一共進行了9個不同組的組合試驗,對網(wǎng)絡進行消融研究,如表2所示。表中結(jié)果顯示,數(shù)據(jù)增強Mixup,Cutmix和Mosaic方法對網(wǎng)絡識別能力均有提升,其中Mosaic數(shù)據(jù)增強提高效果最明顯;在均使用ReLU激活函數(shù)和BN時,3種數(shù)據(jù)增強方法同時使用時,平均精確率表現(xiàn)最佳;在均同時使用3種數(shù)據(jù)增強和BN時,平滑的激活函數(shù)Swish、Mish和ELU相比于非平滑的ReLU能得到更好的結(jié)果,其中使用Mish的效果最好;在均同時使用3種數(shù)據(jù)增強和Mish激活函數(shù)時,使用BN能顯著的提高目標檢測的平均精確率。
表2 不同數(shù)據(jù)增強和激活函數(shù)的效果Tab.2 The effect of different data augmentation
將YoloV4[9]、YoloV3-tiny[11]和MobilenetV2[19]作為backbone的YoloV3網(wǎng)絡在該數(shù)據(jù)集上遷移學習,作為對照組。在訓練過程中,權重每更新1 000次,測試網(wǎng)絡的平均精確率和召回率,測試結(jié)果如圖8 。試驗表明,在訓練過程中,重量級網(wǎng)絡 YoloV4的平均精確率和召回率震蕩嚴重,網(wǎng)絡擬合過程不穩(wěn)定;在輕量級網(wǎng)絡中,MobilenetV2-YoloV3、YoloV3-tiny和BTP-YoloV3擬合比較穩(wěn)定。
圖8 訓練過程中的平均精確率和召回率Fig.8 mAP and recall rate during training
本研究提出的BTP-YoloV3擬合最快,且平均精確率和召回率較高。試驗表明,在卷積之后用BN模塊可以加快網(wǎng)絡擬合,提高網(wǎng)絡性能;在該數(shù)據(jù)集上用輕量級網(wǎng)絡訓練更穩(wěn)定;試驗表明,本研究提出的BTP-YoloV3網(wǎng)路采用多次擴張,壓縮,殘差融合和下采樣的方式,用同樣的超參數(shù)和數(shù)據(jù)增強方法訓練網(wǎng)絡的情況下,相比重量級網(wǎng)絡YoloV4能更快的穩(wěn)定的擬合, 相比于輕量級網(wǎng)絡MobilenetV2-YoloV3和YoloV3-tiny具有較好平均精確率和召回率。
為綜合評價各個網(wǎng)絡的指標,試驗設置所有網(wǎng)絡的Batch Size為1,輸入圖像大小為512×512,在Tesla V100顯卡上進行測試,如表3。重量級網(wǎng)絡YoloV4在測試數(shù)據(jù)上的平均精確率最高,但其計算復雜度太大,權重較大,運行時內(nèi)存占用高,每秒推理幀數(shù)較低。在權重50 MB以內(nèi)的輕量網(wǎng)絡中,YoloV3-tiny,MobilenetV2-YoloV3,BTP-Yolov3均有權重小,測試精確率和運行速度高的特點。本研究設計的BTP-YoloV3相較與其他輕量級網(wǎng)絡,每秒推理幀數(shù)達到285.7,是推理速度最快的網(wǎng)絡。相較于YoloV3-tiny,該網(wǎng)絡采用Depthwise卷積減少了計算復雜度和網(wǎng)絡權重,提高了推理速度;相較于MobilenetV2-YoloV3,該網(wǎng)絡采用了更多的殘差,有利于并行計算,提高了推理速度,但其計算復雜度略高;相較于MobilenetV1-SSD[18]在該數(shù)據(jù)上的表現(xiàn),BTP-YoloV3提高了平均精確率,優(yōu)化了網(wǎng)絡的權重,在保證目標檢測和識別能力的同時,降低了計算成本。
表3 網(wǎng)絡試驗對比Tab.3 Comparison with other networks
相較于提高魚類目標檢測識別能力的方案[14,16-17],本研究檢測的難度在于平衡網(wǎng)絡計算復雜度和識別能力,因此本研究相比于重量級模型YoloV4[9]檢測效果稍差;相較于遷移學習[11,18]開源網(wǎng)絡,本研究的檢測難度在于如何更進一步提高精確率并降低網(wǎng)絡權重,因此本研究重新設計了目標檢測網(wǎng)絡的backbone、增加數(shù)據(jù)增強、用Mish激活函數(shù)的方案,獲得了更好的性能。 相較于MobilenetV2[19]作為backbone的YoloV3[11]網(wǎng)絡,本研究的網(wǎng)絡雖然推理速度更快,但計算復雜度和網(wǎng)絡權重有待降低。相較于最前沿的注意力機制[36]和YoloV5[37]網(wǎng)絡,本研究在目標檢測精度上有待優(yōu)化。
本研究收集、清洗、標注了水族館魚類數(shù)據(jù)集,為魚類養(yǎng)殖行業(yè)提供了種類更加豐富的數(shù)據(jù)集,并探究了神經(jīng)網(wǎng)絡在實際應用中提高檢測速度與識別精確率的優(yōu)化過程,使用“深度可分離卷積”優(yōu)化網(wǎng)絡結(jié)構(gòu),大大降低了計算復雜度,提高了推理速度。并探究了3種數(shù)據(jù)增強和4種激活函數(shù)對模型性能的影響。最后,網(wǎng)絡的平均測試準確率達到94.37%,網(wǎng)絡權重大小僅為13.9 M,計算復雜度僅為5.476,在Tesla V100上每秒推理速度平均達到285.7張;相比于遷移學習傳統(tǒng)的網(wǎng)絡(YoloV4,MobilenetV2-YoloV3,YoloV3-tiny),該優(yōu)化網(wǎng)絡的方法能夠在保證網(wǎng)絡識別能力不減弱的情況下,提高了網(wǎng)絡的檢測和識別速度,降低了運行時能耗,節(jié)約了應用成本。為神經(jīng)網(wǎng)絡在魚類養(yǎng)殖行業(yè)的應用中的優(yōu)化提供了參考。
□