彭 迪,吳 太 夏,王 樹 東,鞠 茂 森
(1.河海大學 地球科學與工程學院,江蘇 南京 211100; 2.中國科學院 空天信息創新研究院,北京 100000; 3.河海大學 河長制研究與培訓中心,江蘇 南京 210098)
河湖管理與保護是一項復雜的系統工程,涉及上下游、左右岸、不同行政區域和行業[1]。近年來,一些地區積極探索河長制,協調整合各方力量,有力促進了水資源保護、水域岸線管理、水環境治理等工作。河湖水域岸線是保障供水安全與防洪安全的重要屏障,河湖岸線周圍存在違法侵占河道、圍墾湖泊、非法采砂釣魚等亂占濫用河湖水域岸線情況等。2016年底,中共中央辦公廳、國務院辦公廳印發了《關于全面推行河長制的意見》,要求各地區各部門結合實際認真貫徹落實,提升管理水平,推進生態文明建設;2019年初,多部委聯合印發《長江流域重點水域禁捕和建立補償制度實施方案》,對長江流域分階段實施禁捕做了規定[2];2022年初,水利部制定了《2022年水利政策法規工作要點》,明確提出加強常態化水行政執法,強化日常執法巡查,加大對妨礙行洪、侵占河湖岸線、違法取水、損害水生態水環境等水事違法行為打擊力度[3]。為了應對人為偷捕對于水生態損害、水環境污染的影響[4],農業農村部的通告宣布從2020年1月1日起開始實施長江十年禁漁計劃。規范禁捕水域的垂釣行為是長江岸線監管的一個重要內容,非法垂釣不但違反了法規管理條例,而且給岸線的治理帶來了很大的麻煩。傳統的解決方案往往采用24 h輪班巡查來提防偷捕偷釣者,這種人防的方式給監管帶來非常大的壓力。雖然近些年在禁捕區域投入了非常多地面攝像頭,減輕了安防人員的巡邏壓力,但是通過人工判讀河湖岸線周邊錄像攝影,再追究違規者的責任,此方法費時費力且時效性差。故本文將深度學習中目標檢測算法運用到河湖岸線的監管中來,經過訓練得到的模型可以實時檢測出偷釣者的位置信息,通知安防人員采取行動,實現實時管控的同時還節約了人力物力成本。
目標檢測是計算機視覺的重要內容,它將目標的分割和識別結合,其準確性和實時性在安防領域、軍事領域和交通領域等有著廣泛的應用場景。傳統的目標檢測算法,如SHIFT算法[5]、HOG算法[6]等,需要人工選擇特征提取器里的特征用于分類器的訓練。基于卷積神經網絡提取特征的深度學習檢測方法依靠其強大的自學習能力和自適應性成為當今檢測技術領域的主流方法[7]。目前基于深度學習的目標檢測方法主要分為兩類:第一類是兩階段的目標檢測算法,這類算法先粗略生成樣本候選框,再進行精細的選取調整,但是檢測速度較慢,其代表算法有R-CNN[8]、Fast R-CNN[9]等;第二類是一階段的目標檢測算法,利用卷積網絡對整個圖像進行處理,實現目標定位的同時預測類別,所以檢測速度快,能達到實時檢測的要求,其代表算法有SSD[10]、YOLOv1-v3[11-13]等。鑒于YOLOv3算法的精度和速度的優勢,許多學者通過對YOLOv3算法結構的改進,使其能更好地適用不同的場景。魏潤辰等[14]基于YOLOv3融入空間注意力機制模塊增強網絡特征學習,提出對網絡寬度進行調整以改善模塊運算速度,提高城市道路區域行人檢測的準確性和實時性,更好應對駕駛場景的實際需求;岳曉新等[15]提出的道路小目標檢測算法對YOLOv3算法網絡模型中的聚類算法和損失函數進行優化,提高道路小目標的檢測精度。
本次研究以河湖岸線上的垂釣行為為主要研究對象。考慮到河湖岸線的攝像頭往往是位置固定的,但對于距離攝像頭較遠的垂釣者,目標變小而使得識別精度不高。針對此問題,本次研究在原YOLOv3的網絡結構中嵌入多個注意力機制模塊,改變特征層的權重信息,使網絡聚焦于垂釣行為特征,抑制背景的干擾;同時由于樣本量不易擴充,借助遷移學習的思想,利用COCO數據集得到預訓練主干權重,提高模型的提取特征能力和泛化能力。試驗結果表明,將上述兩者結合起來可大幅提高檢測精度,能進行快速高效的垂釣行為提取。
YOLOv3的主干網絡為Darknet-53模型。Dartknet-53模型采用調整卷積核的步長代替最大池化來改變前向傳播中張量尺寸變換,并且舍棄了v2版本中參數量大的全連接層;它還借鑒了Res-Net的殘差結構加深網絡結構的深度,并采用類似FPN(Feature Pyramid Networks)網絡結構,提取不同尺度的特征圖。YOLOv3網絡結構基本組件DBL(Darknetconv2d_BN_Leaky)由卷積層、BN層和Leaky ReLU激活函數構成,通過兩個DBL的卷積及跳躍連接構成殘差單元,加深神經網絡的層數的同時,有效避免了梯度消失問題。Darknet-53交替使用殘差單元和步長為2的3×3卷積核將輸入模型416×416尺寸的圖片縮小32倍,后續多次卷積及兩次上采樣保證FPN拼接時張量尺度相同,輸出3種不同尺度的特征圖。其中,二、三層的特征圖由前一層的特征圖上采樣后與低層網絡中相同大小的特征圖進行融合得到。因為淺層網絡語義信息較少、位置信息較多,而深層網絡中語義信息相對較多,故YOLOv3采用類似FPN結構將淺層與深層信息融合,可實現對不同尺度特征有效提取。
本次研究主要是禁捕區域的垂釣行為,由于在禁捕區域的許多垂釣者距離攝像頭較遠,在影像中呈現為小目標,本文針對YOLOv3算法在小目標識別上的缺陷,將卷積塊注意力模塊CBAM(Convolutional Block Attention Module)分別嵌入到模型網絡結構的5個位置上,其分別位于主干網絡Darknet-53模型輸出的3個特征層后以及特征融合階段中兩個上采樣處理得到的特征層后,以此得到改進后的網絡模型YOLOv3-CBAM,結構如圖1所示。本次研究保持了主干的完整性,可共用YOLOv3算法在COCO數據集上得到的主干網絡權重,節約了訓練成本。

圖1 YOLOv3-CBAM的網絡結構Fig.1 YOLOv3-CBAM network structure
注意力機制被廣泛用在自然語言處理、計算機視覺等任務中,是一種能改變特征權重的有效手段,在許多實驗中都表現出較好的性能[16-19]。注意力機制可以看作是一種權重分配方式,注意力是模仿人類大腦處理大量信息時的一種機制,即關注重點區域,而忽視不重要的部分。對于不同的位置信息或者不同的通道信息賦予不同的權重因子,這樣做的目的就是增加了有用特征的權重,從而獲得更多目標的細節信息,提高目標識別的精度。
與SENet[19]、ECANet[20]等其他只關注通道特征的注意力機制不同,卷積塊注意力模塊CBAM提供了一種兼顧通道位置權重和空間位置權重的特征權重產生方式,它將通道注意力機制和空間注意力機制進行結合,在幾乎不增加模型復雜度的情況下,能夠獲得十分明顯的性能增益[17]。其實現過程如圖2所示,CBAM對輸入進來的特征層,分別進行通道注意力機制的處理和空間注意力機制的處理。在網絡加入CBAM后,特征層對于不同空間位置、通道位置的權重得到了調整,讓網絡學會關注重點信息,提高識別目標物體的概率。

圖2 CBAM模塊的結構Fig.2 CBAM module structure
圖3表示CBAM中通道注意力模塊和空間注意力模塊微調特征層的過程。
圖3(a)表示通道注意力機制的結構。通道注意力機制的實現可以分為兩個部分:模塊會對輸入進來的單個特征層分別進行全局平均池化和全局最大池化。將平均池化和最大池化的結果送入共享全連接層(Shared MLP)進行處理,其中共享全連接層包括兩個全連接層,對通道數先降維再升維:第一個全連接層將輸出通道數縮小至原通道數的1/r;第二個全連接層將通道放大至r倍,調整回原來的通道數,本文中縮放因子r取8。對處理后的兩個特征層結果進行相加,然后進行sigmoid函數處理。此時獲得了輸入特征層每一個通道的權值,且大小都在0~1之間。在獲得這個權值后,將這個權值乘上原輸入特征層即可。
圖3(b)為空間注意力機制的結構。對輸入進來的特征層,每一個特征點在通道上取最大值和平均值。之后將這兩個結果進行堆疊,堆疊之后的結果利用一次通道數為1的卷積調整通道數,其中卷積核尺寸k取7,為了保證特征層空間上的尺寸不發生改變,填充量p取3,卷積之后得到一個通道數為1的特征層,然后進行sigmoid函數處理。此時獲得了輸入特征層每一個特征點的權值,且大小都在0~1之間。在獲得這個權值后,將這個權值乘上原輸入特征層即可。

圖3 CBAM中的通道注意力模塊和空間注意力模塊的結構Fig.3 Channel attention module andspatial attention module in CBAM
遷移學習在大量的試驗中被證明是一種有效的模型改進方式,尤其是當目標數據不足時,遷移學習的方式能夠在小樣本的情況下獲得比較好的訓練結果,提升模型的訓練精度和魯棒性能。遷移學習是模型訓練效果的一種泛化,諸多學者從模型復雜性和學習算法的穩定出發,導出了模型泛化的理論邊界[21]。深度神經網絡的識別效果很大程度上取決于數據樣本的數量,基于大批量相關場景的數據樣本才能訓練出一個表現效果優異的神經網絡模型。如果樣本集的數據不足,模型提取的效果很難得到充分的訓練,從而訓練出來的神經網絡模型產生比較嚴重的過擬合現象,且泛化能力比較差[22]。
本次研究中構建的垂釣行為的數據集比較小,若將其直接用于訓練一個目標檢測的網絡,則訓練收斂速度慢且準確率不高。因此,為了有效加快訓練的迭代速度、增強訓練模型的提取特征能力和模型的泛化能力、提高模型預測識別的準確率,采用了預訓練權重。由于YOLOv3-CBAM算法未對Darknet53主干進行調整,所以可以與YOLOv3算法共用同一個預訓練權重,節約訓練成本。COCO數據集是一個大規模的、豐富的物體檢測和圖像分割的開源數據集,提供的標簽類別有80類,超過33萬張圖片,其中20萬張有標注,整個數據集中個體的數目超過150萬個[23]。通過COCO數據集訓練得到的預訓練權重具有強大的泛化能力,其在淺層學習圖像低層次的特征,包括圖像的邊緣、顏色信息等;在深層學習圖像的高層語義特征,這些特征將隨著圖像的不同而有不同的表現。
在目標檢測模型中,常使用目標損失函數(Loss function)來衡量模型預測值與樣本真實值的差異性程度。對于本文所研究的敏感目標檢測問題,網絡在訓練過程中需要考慮3個方面:位置預測的均方損失、置信度的交叉熵損失以及類別的交叉熵損失,其中置信度又分為包含目標置信度和不包含目標置信度兩部分。
Loss=loss_coord+loss_conf+loss_cls
(1)
式中:Loss表示總損失;loss_coord表示位置損失;loss_conf表示置信度損失;loss_cls表示類別損失。
具體各個部分損失函數的公式如下:
(2)

(3)

(4)

本文實驗配置環境如下:操作系統為Windows10,中央處理器為4核 Intel(R) Xeon(R) Silver 4110 CPU @.10GHz,GPU為英偉達GeForce系列11G顯存,16GB內存的RTX 2080Ti顯卡。語言選擇的是Python3.8,深度學習框架為PyTorch庫,并安裝CUDA11.0實現加速運算。
由于本文針對的是垂釣行為的識別,場景類型較為多樣化,并沒有大量公開可用的專業數據集,因此采用人臉球機在湖北省黃石市和鄂州市的長江岸線及其他河湖岸線監測站點拍攝的影像和網上收集的圖片制作了數據集。在對數據集篩選之后,一共制作了1 200張圖片,利用Labelme庫對其進行手工標注,用于模型的訓練、驗證和測試。對收集的數據采用分離驗證方法,將圖片數據集按8∶2劃分為訓練集和測試集,在訓練集中以9∶1比例再細分為訓練集和驗證集。
本文中除了YOLOv3模型,還引入經典的單階段目標檢測算法——SSD算法作為對比,總共涉及3個模型,分別為SSD模型、YOLOv3模型和YOLOv3-CBAM模型,3個模型分別采用直接訓練和預訓練權重進行訓練。同時,使用批量隨機梯度下降算法,初始學習率為0.000 1,動量參數設定為0.94,權重衰減正則項為0.000 5,防止模型過擬合,設置batchsize為6,最大迭代次數設為1 000。數據集每完成一次迭代訓練后評估模型,通過訓練過程中的誤差變化曲線判讀模型的收斂情況。在實驗過程中,所有模型都在不到最大迭代次數一半的輪次收斂。
本文算法測試使用平均準確率mAP、召回率Recall、準確率Precision、平均交并比IOU評價算法性能,評價公式分別為
(5)
式中:AP表示各個目標對應的準確率;h表示識別物體的總類別數,本實驗只預測垂釣行為,故h取1;mAP是記錄召回率與準確率曲線下方的面積,是衡量目標檢測性能的依據。
(6)
式中:TP表示真正類,即正類垂釣樣本被預測成正類垂釣樣本;FN表示假負類,即正類垂釣樣本沒有被模型預測到;召回率Recall也稱查全率,刻畫分類器所識別出的真實例占總真實例的比例,召回率的取值處于[0,1]內,受到超參數(如IOU)的影響,呈曲線形式變化。
(7)
式中:FP表示假正類,即不是垂釣行為卻被預測成正類垂釣樣本;準確率Precision也稱查準率,刻畫的是分類器所識別出的真實例占所有識別實例的比例,準確率的取值處于[0,1]內,受到超參數(如IOU)的影響,呈曲線形式變化。
(8)
式中:STrue∩Pre代表真實垂釣行為框與預測垂釣行為框的交集部分面積;STrue∪Pre代表真實垂釣行為框與預測垂釣行為框的并集部分面積;IOU取值處于[0,1]內,IOU值越大,候選框越精確;反之,值越小,候選框偏差越大。
本節主要包括損失函數曲線的收斂情況、各個模型的識別精度和各個模型的識別示例。
圖4是YOLO-CBAM模型應用在禁捕數據集的損失函數曲線,包含了不使用預訓練權重和使用預訓練權重分別進行訓練時,在訓練集和驗證集上的損失函數曲線。其中兩條藍線為直接訓練的結果,兩條橙線為采用預訓練權重訓練的結果,其中虛線為訓練集上的結果,實線為測試集上的結果。

圖4 添加CBAM模塊后的模型損失函數曲線Fig.4 Model loss function curve after adding CBAM module
從迭代次數來看,不使用預訓練權重訓練大約在迭代約300輪次后損失函數曲線收斂,而使用了預訓練模型之后只需要迭代200輪便可以收斂;從擬合程度來看,不使用預訓練權重訓練時,損失函數曲線趨于收斂之后訓練集和驗證集上的損失值差距較大,存在比較嚴重的過擬合問題,而使用了預訓練模型之后兩者之間的差值明顯減小;從損失值來看,無論是訓練集上的損失值,還是驗證集上的損失值,采用預訓練模型的結果均明顯優于不采用預訓練模型的結果。綜上可知,使用預訓練模型權重可以大大減少模型訓練過程中收斂所需的迭代輪次,降低模型過擬合的風險,提高模型的泛化能力,同時最終得到的模型在本次研究的數據集上也有著更小的損失值。
模型的識別精度用于衡量模型的優異性,是用來比較不同算法之間性能的重要標準。表1為3種不同的目標檢測模型的識別精度。由表1可知:縱向上,SSD模型使用預訓練權重精度提升了3.52個百分點,YOLOv3模型使用預訓練權重精度提升了14.70個百分點,YOLOv3-CBAM模型使用預訓練權重精度提升了14.89個百分點,可以看出采用預訓練權重可以大幅提高模型識別的精度。從表格中橫向比較,可知無論是否采用預訓練權重,3個模型的mAP大小關系均為YOLOv3-CBAM>YOLOv3>SSD,且YOLOv3算法模型及其改進模型的精度遠高于SSD算法模型,可以看出YOLOv3-CBAM在禁捕場景識別上的優異性。添加注意力機制模塊后,不采用預訓練模型直接訓練得到的模型的識別精度可以提高0.53個百分點,使用預訓練權重訓練得到的模型其識別精度可以提高0.72個百分點,可以看出注意力機制模塊通過對空間位置和通道賦予不同權重,提高了模型的識別精度。

表1 3種不同的目標檢測模型的識別精度Tab.1 The recognition accuracy of three different objection detection models %
不難看出,采用預訓練權重可提升模型識別精度。為了更好地探究不同算法在禁捕場景的差異性,進一步分析采用預訓練權重得到的模型準確率Precision和召回率Recall。表2為使用預訓練權重進行訓練后的SSD算法、YOLOv3算法、YOLOv3-CBAM算法3個模型的詳細評價指標。就Precision而言,3個模型分別為95.15%,95.54%和96.18%,表明模型對于垂釣行為的識別的準確度都比較高;就Recall而言,3個模型分別為91.03%,93.75%和94.38%,YOLOv3系列算法的召回率明顯高于SSD算法,且原YOLOv3架構添加CBAM模塊后,召回率提高了0.63個百分點,表明YOLOv3-CBAM算法的識別結果存在更少的漏檢情況。在3個評價指標中,均是YOLOv3-CBAM模型結果最優。

表2 使用預訓練模型的目標檢測的模型評價指標Tab.2 Model evaluation indicators of objection detection using pre-trained models %
本文中涉及到的模型,從經典的SSD模型到YOLOv3模型、YOLOv3-CBAM模型,在非極大值抑制值設置為0.5,置信度閾值設置為0.5后,分別對示例圖片進行預測。示例圖片均為訓練測試集之外的數據,包括單一目標的圖片和多目標的圖片。
對于單一目標的圖片,以圖5為例,在環境較為復雜的陰雨天且垂釣對象有部分遮擋的情況下,圖片影像上的垂釣行為都能做到精確的識別,雖然預測框的位置信息略有差異,但能夠準確地包含垂釣者且置信度都在0.98以上,其中采用預訓練權重的YOLOv3系列模型的預測框置信度能達到1,表明各個模型對于單一目標釣魚行為能夠達到很好的識別效果。

圖5 不同模型對單一目標的識別結果Fig.5 Recognition results of single object by different models
對于多目標的圖片,以圖6為例,圖片場景中多個小目標且光影條件下人物細節不清楚。由于(a)~(c)使用的模型沒有預訓練權重提供比較強的特征提取能力,所以在多目標、小目標的識別方面存在漏檢和預測目標框置信度低的問題。使用預訓練模型的SSD算法也存在小目標漏檢的問題,使用預訓練模型的YOLOv3算法和YOLOv3-CBAM算法都能得到很好的檢測結果,其中YOLOv3-CBAM模型比YOLOv3模型在小目標識別結果上表現出更高的置信度。

圖6 不同模型對多目標的識別結果Fig.5 Recognition results of multi-object by different models
本文基于YOLOv3基礎模型,提出了一種將遷移學習和注意力機制結合的YOLOv3-CBAM的目標檢測算法,構建了禁捕垂釣場景的數據集,并在禁捕垂釣場景中取得較高的精度。借鑒遷移學習的思想,使用預訓練權重實現了模型參數共享和特征提取能力的遷移,降低了模型損失函數收斂所需的迭代次數,減弱了訓練結果對于特定樣本數據量的依賴,節約了訓練的成本,模型在禁捕場景中識別垂釣行為的準確率和召回率都有大幅的提升。在特征提取和上采樣之后嵌入了注意力機制模塊,賦予模型對于不同空間位置、不同通道位置的權重,小幅提高了模型的識別精度。實驗結果表明,最優模型為采用預訓練權重的YOLOv3-CBAM,其mAP可達到93.99%,可以用于長江流域的實時禁捕識別。
雖然改進后的YOLOv3-CBAM能夠達到96.18%的準確率和94.38%的召回率,但是對于河湖岸線的預警而言,召回率的提升更為重要,召回率提高意味著很少的漏檢現象。考慮模型識別后還有人工判讀確認的步驟,后續的研究中可以微調模型,在準確率不下降太多的情況下,提高模型的召回率。同時,在研究的過程中也發現了一些缺陷,模型存在誤識別的問題,即把湖邊的行人識別成垂釣者。解決這個問題需要擴充禁捕場景的樣本集,優化網絡來增強模型對于識別細節特征的把握,提高模型的準確率和召回率,促進長江流域河湖岸線管理向智能化發展。