張博凡,孫丙宇,房永峰,3①
(1.安徽建筑大學 電子與信息工程學院,安徽 合肥 230022;2.中國科學院 合肥物質科學研究院,安徽 合肥 230031;3.中國科學技術大學,安徽 合肥 230026)
目前在羊群大規(guī)模養(yǎng)殖中,羊只計數(shù)、在欄數(shù)量、個體識別都是需要頻繁執(zhí)行的工作,而現(xiàn)階段養(yǎng)殖又是以人工為主,存在環(huán)境惡劣,效率低下且人力短缺等問題,完成這些工作且在檢測實時性有要求的情況下,就需要用到目標檢測網(wǎng)絡,如果想要高效且高質量的完成工作,對目標檢測的優(yōu)化必不可少。
隨著計算機視覺領域技術與相關科技產(chǎn)品的不斷發(fā)展,深度學習開始逐漸進入廣大學者與研究者的視野[1],并逐漸運用到一些目標檢測領域上。其中,在牲畜的養(yǎng)殖業(yè)就有大規(guī)模的應用,提高了牲畜檢測與識別的實時性和準確性[2]。
畢文浩等[3]提出基于YOLOv5 的輕量級豬只檢測網(wǎng)絡設計,把主干網(wǎng)絡中Focus 與CSP(Cross Stage Partical)結合的結構拋棄,采用MobileNetV3中深度可分離卷積的倒殘差結構,同時加入通道注意力機制來衡量特征圖的不同通道所占的重要性,增強目標特征。于意[4]提出基于改進YOLOv3的奶山羊目標檢測方法,在YOLOv3 算法的基礎上,對已有數(shù)據(jù)進行數(shù)據(jù)增強,添加SeNet(Squeeze-and-Excitation Networks)注意力機制提高對羊只個體的關注,從而提升檢測精度,改用GIOU(Generalized Intersection over Union)損失函數(shù),改進優(yōu)化模型,使收斂效果更好。雖然通過增加注意力機制,改進損失函數(shù)等方法能有效地提高牲畜檢測準確率,但由于牲畜大多屬于群居動物,上述方法對于重疊部分檢測還是未能有效解決,依然容易造成錯檢漏檢,所以解決重疊問題成為牲畜檢測的重點。
針對上述問題考慮用DIOU(Distance Intersection Over Union)作為NMS的標準,不僅考慮到羊群重疊區(qū)域,還考慮中心點問題,以期解決密集羊群重疊問題,使其檢測更加精確。由于YOLO系列的主干和特征金字塔的演化,檢測頭仍然是耦合的,考慮將YOLO頭部替換為解耦頭部,以期有效地提高收斂速度,最后,考慮在C3 模塊中加入SeNet 注意力機制[5],更多聚焦羊只特征,以期使檢測結果更加精確,提高準確率。
YOLO系列是由Redmon等[6]提出的單階段目標檢測算法,核心是將整張圖片作為網(wǎng)絡的輸入,在輸出層直接輸出目標位置坐標和類別。到現(xiàn)在為止,YOLO 系列經(jīng)過多代進化發(fā)展[7],從YOLOv1 到YOLOv7,YOLOv5 仍是最經(jīng)典和穩(wěn)定的YOLO 系列代表,YOLOv5 相較于之前的版本,在保持檢測精度基礎上,能有更小的權重文件、更短的訓練時間和更快的速度。YOLOv5的網(wǎng)絡結構模型如圖1所示。
圖1 YOLOv5網(wǎng)絡結構模型
由圖1 可見,YOLOv5 分為Backbone、Neck、Head 3 個部分,在Backbone 中,有Conv、C3、SPPF(Spatial Pyramid Pooling-Fast)等幾個部分,其中C3模塊基本均為CSP(Cross Stage Partial)結構,主要是對殘差特征進行學習。SPPF是在以前SPP(Spatial Pyramid Pooling)的基礎上改進而來,SPP是融合空間金字塔思想,將局部特征和全局特征融合,有利于檢測差異較大的目標,而SPPF在保留SPP復雜多目標的檢測精度前提下,優(yōu)化運行速度。
在Neck 部分,主要采用PANet(Path Aggregation Network)結構,PANet 在FPN(Feature Pyramid Network)的基礎上加入1個自底向上的路徑,使得處于最底處的信息也能夠得到傳遞,從而增加定位能力。
Head由回歸損失函數(shù)和分類損失函數(shù)組成,負責輸出目標對象類別、得分以及邊界框位置。檢測網(wǎng)絡由3個detect檢測器組成,負責檢測不同尺寸的目標。
在目標檢測中,分類和回歸任務之間是沖突的,雖然分類和回歸都隸屬于監(jiān)督學習,都是對輸入進行預測,但是分類結果可以看作是離散的,本質就是尋找一個邊界,對輸入數(shù)據(jù)進行分類,沒有距離度量,而回歸任務結果可以看作是連續(xù)的,是在一段范圍的??偟膩碚f,分類任務是將輸入分為1、2、3 類,是為尋找一個邊界,而回歸任務是將輸入分為一段范圍,是為找到最優(yōu)的擬合。
所以,在分類和定位的解耦頭大多被用于一級與二級探測器,但是由于YOLO系列的主干和特征金字塔的進化,它們的檢測頭仍然是耦合的,如圖2。
圖2 YOLO耦合頭部
本文將YOLOv5的頭部替換為YOLOX 解耦的頭部[8](如圖3所示),對于FPN每一層特征,首先采用1×1的conv層將特征通道減少到256,然后添加2個并行分支,每個分支有2個3×3 conv層,分別用于分類和回歸任務。在回歸分支上添加IOU(Intersection Over Union)分支。通過實驗可知,可以大大地提高收斂速度,并且在替換為解耦頭部后,不論在收斂速度還是準確度都有一定程度的提升。
圖3 YOLOX解耦頭部
對于目標檢測預測階段,后處理是非常的重要的,對于YOLO而言,就是把紛繁復雜的預測框進行篩選過濾,把重復的預測框只保留1個,最終獲得目標檢測結果,這個過程就稱為NMS[9]。
具體是在后處理階段,會先把所有的預測框預測準確率做一個排序,選中準確率最高的一個,然后再一次遍歷剩下的框,如果準確率最高的框IOU 大于一定的閾值(根據(jù)實際需要設置),就將其刪除,因為IOU 若超過閾值,會被認為是同類,對后續(xù)判斷有影響。然后再選中1個次高準確率的預測框,重復過程。
在NMS 中IOU 的計算很重要,IOU 即為交并比,是bounding box 與ground truth 的重疊度,如圖4 所示。矩形A,B的IOU即為區(qū)域A與區(qū)域B交集部分面積與并集面積之比。
圖4 IOU重疊示意
由于羊是群居動物,經(jīng)常擁擠在一起,所以重疊率很高,為提高檢測準確度,將YOLOv5的NMS更換為DIOU-NMS,DIOU 將目標與Anchor 之間的距離、重疊率以及尺度都考慮進來,使目標框回歸更加穩(wěn)定[10]。
在原始NMS中,IOU通常被用于抑制多余的檢測框,且相交面積是唯一衡量因子,這就會導致對有重疊的目標所產(chǎn)生框的錯誤抑制。用DIOU替換IOU作為NMS標準后,不僅考慮到重疊區(qū)域,還考慮中心點的距離,所以能有效的解決重疊率高問題。
DIOU計算公式:D=X-P2(b,bgt)/c2,式中D為DIOU,X為交并比,b,bgt為預測框和真實框中心點,P為兩中心點間歐式距離,c為包含預測框和真實框最小閉包區(qū)域對角線距離。
注意力機制是上世紀90年代一些科學家在研究人類視覺時發(fā)現(xiàn)的一種信號處理機制。隨后一些研究者開始在深度學習領域研究注意力機制,并取得一些成果。但是這些注意力機制在用于小型網(wǎng)絡時,模型速度明顯變慢。因為小型網(wǎng)絡對于大多數(shù)注意力機制計算消耗是承擔不起的。比較常見的注意力機制有SE(Squeeze-and-Excitation)、CA(Coordinate Attention)、ECA(Efficient Channel Attention)等。
SeNet相對于其他注意力機制,參數(shù)數(shù)量增加相對較少,使神經(jīng)網(wǎng)絡負擔較輕,在訓練時,對神經(jīng)網(wǎng)絡特征圖加權,使模型注意力更加有效聚焦在目標個體上,抑制周圍環(huán)境對目標個體檢測的干擾[11],從而提升檢驗準確度,并且SeNet模塊可以添加在網(wǎng)絡模塊很多位置[12],方便實驗即插即用。
通道注意力模塊SeNet結構圖如圖5所示。
圖5 通道注意力模塊SeNet結構圖
(1)Transformation
輸入一個特征圖X,如圖5所示,經(jīng)過Ftr操作之后可生成新的特征圖U。
(2)Squeeze
把新得到的特征圖U全局平均池化,池化后可得到一個1×1×C的特征圖,公式如下:
(3)Excitation
上一步得到的1×1×C特征圖通過2個全連接層,經(jīng)過權重W生成一個新權重,得到所需要信息。公式如下:
(4)Scale
由圖5 可見,最后1 步利用第3 步得到新權重向量s,對以前特征圖U進行賦值,得到一新的特征圖X2,這個特征圖則是改進之后所需特征圖,大小與之前大小相比沒有任何變化。公式如下:
在C3模塊加入SeNet注意力機制后的Backbone的網(wǎng)絡圖如圖6所示。
圖6 改進后Backbone的網(wǎng)絡
本次試驗運行環(huán)境CPU 為Intel(R)Xeon(R)Gold 5117 CPU @ 2.00 GHz,GPU 為NVIDIATITAN RTX,顯存為24 G,操作系統(tǒng)為Ubuntu 20.04.4,加速環(huán)境為CUDA11.4,編程語言為Python3.8.13,深度學習框架為pytorch1.7.1。
實驗數(shù)據(jù)集一部分來源于寧夏養(yǎng)殖場現(xiàn)場拍攝,一部分來源于后期在養(yǎng)殖場安裝的攝像頭遠程拍攝截取,并對提取的羊只圖像翻轉、改變對比度和飽和度、增加噪聲形式進行數(shù)據(jù)增強,最后為增加準確性,加入部分公開數(shù)據(jù)集羊只圖片,數(shù)據(jù)集的數(shù)量一共5 121 張圖片,按9:1 比例分為訓練集和驗證集,其中訓練集4 608 張圖片,驗證集513 張圖片,借助Lableimg軟件對數(shù)據(jù)集進行標注,因為只需檢測到羊,所以只設置1個種類sheep(羊)。
為驗證本實驗提出的改進算法各方面是否有效,采用目標檢測算法中的多項指標對模型的性能進行評估,與原始未改進的YOLOv5 實驗結果進行比較,具體評估指標包括精準度(P)、召回率(R)與平均精度均值(mAP)。
3.4.1 基于YOLOv5的DIOU-NMS改進
經(jīng)過實驗,對于原始未改進的YOLOv5模型,將NMS改為DIOU-NMS進行對比,結果如表1所示。
表1 不同NMS模型對比 %
由表1 可知,改為DIOU-NMS 后,精準度P提升2.1%,召回率R提升2.3%,mAP 值提升1.8%??梢奃IOU-NMS能夠對重疊羊群進行更加精確檢測,得到更優(yōu)檢測結果。
3.4.2 基于YOLOv5的注意力機制改進
經(jīng)過實驗,將YOLOv5模型的C3模塊引入SeNet注意力機制,并對加入不同注意力機制進行對比,結果如表2所示。由表2可知,C3SE相較于其它注意力機制,P值、R值和mAP值相較于原模型都有提升,能更加有效提取羊只特征信息。
3.4.3 消融實驗
最后為驗證改進算法有效性,做多組實驗,使用相同數(shù)據(jù)集,輸入圖片經(jīng)過輸入端處理后統(tǒng)一為640×640,epoch 設為300,訓練時,遵循控制變量的實驗方法,其他實驗條件均保持不變。實驗對比結果如表3所示。
表3 改進模型 %
由表3可知,在分別對YOLOv5模型進行改進解耦頭,NMS改為DIOU-NMS,增加注意力機制C3SE等操作后,精準度P、召回率R、平均精度均值mAP與原始模型(序號為0)相比,均得到不同程度的提升,將3組改進同時進行,可得到1個最優(yōu)模型(序號為3),與原模型相比,P值提升2.8%,R值提升3.5%,mAP值提升3.0%,檢測對比見圖7。改進之后的檢測識別效果有明顯的提升,對于頭部與腿部都被遮擋的羊只也能進行有效的識別檢測。
圖7 改進模型與YOLOv5檢測結果比較
3.4.4 不同算法對比
目前目標檢測主流模型有YOLOv3、YOLOv5 等,采用mAP 作為檢測評估標準,用改進的YOLOv5 模型與其他主流模型檢測結果做對比,如表4所示,改進后的模型與其他主流模型相比,具有更好的結果。
表4 不同算法定量對比 %
圖8展示不同模型羊只檢測效果。圖8中共有4只目標羊只,且重疊在一起,YOLOv3只檢測出3只羊,并且置信度不高,YOLOV5s也只檢測出3只羊,重疊部分出現(xiàn)漏檢,而YOLOv5n檢測出4只羊,但重疊部分置信度很低,檢測不夠準確,本文算法模型檢測出正確數(shù)量和位置,成功檢測出后方頭部與腿部被完全遮擋的羊只,且準確率較高,效果最好。
圖8 不同模型檢測對比
針對羊的群居特性導致羊只重疊程度較高,檢測效率低且易造成漏檢錯檢等問題,本文通過在C3模塊加入注意力機制,將NMS改為DIOU-NMS,將YOLOX的解耦頭應用于YOLOv5中,優(yōu)化模型,使精準度P提升2.8%,召回率R提升3.5%,mAP提升3.0%,有效增加檢測準確率,在保證精確前提下也提升收斂速度??偟膩碚f,改進后的YOLOv5 模型可以有效地解決當前羊只目標檢測算法在實際場景中的很多問題。