孫 強,郝 敏
(內蒙古農業大學機電工程學院,呼和浩特 010000)
內蒙古地區擁有大規模的畜牧養殖業,是我國牛奶、牛肉、羊肉、羊絨的主要產地之一。隨著經濟快速發展,國內市場對高蛋白的牛羊肉等需求逐年增加,呈現出消費增幅快于生產增幅的態勢[1]。在內蒙古地區的牛羊飼養中,草原放牧畜產品更受市場青睞,但畜牧業發展要兼顧自然環境的保護,放牧生產端需要定期統計放牧牛羊數量反饋給牧民和有關部門進行載畜量分析、生產調整和科學管理,因此便捷準確地對同一放牧草原中不同放牧牲畜識別計數以折合為羊單位進行實際載畜量統計,進行草畜平衡分析對保護生態平衡和促進畜牧業健康發展、促進草地可持續發展具有十分重要的意義和作用。
目前牲畜養殖中電子耳標使用廣泛[2],在福利化養殖中主要針對奶牛這種長期養殖牲畜采用耳標用于記錄牛的健康狀況,但這類接觸式的計數手段成本高,不適用于短期養殖牲畜或草原自由放牧較多牲畜的場合。隨著機器視覺的發展,李琦等[3]采用YOLOv3 與DeepSORT算法相結合,提出基于雙線計數法的草原羊的自動計數,但該方法需要在羊圈中預設檢測設施,不適用于大型草原。
隨著智能化畜牧養殖業的發展,結合航拍圖像使用機器視覺技術代替人眼,通過目標檢測算法無接觸進行目標場景下的牲畜識別和數量統計具有檢測簡單快速的優越性。伍天舟[4]利用無人機航拍圖像制作羊頭數據集結合SSD算法進行放牧羊群的自動計數。趙建敏等[5]提出基于無人機圖像的羊群密集計數方法,初步解決了羊群密度判斷。杜永興等[6]采用標注點的方式標注羊只,高斯核回歸轉換成標簽,提升了高密度場景下計數準確度。
但針對航拍圖片中牛羊小目標粘連現象,目前研究中以羊頭為目標比以羊背作目標檢測效果好,但航拍圖像中存在羊頭被遮導致漏檢;設計不同大小檢測框無法滿足牛羊等形態各異的檢測需求。本文利用深度學習算法研究適應性更強的特征提取網絡,以羊背作為檢測目標,引入anchor-free 類的CenterNet 關鍵點檢測算法,針對小目標檢測難同時對牛羊進行分類識別,引入多尺度的特征提取網絡Res2Net提取更多特征[7],再添加注意力機制優化模型,以快速準確地對牛、羊兩種放牧牲畜進行識別與計數。
在內蒙古自治區烏蘭察布草原,考慮到不同高度下待檢測目標的分辨率,使用DJI Mavic Air2 無人機在20 m 和25 m 兩個高度下對放牧場景下的多個羊群和牛群在雪地、草原、人工養殖場等多個不同場景、早中晚等不同光照條件下分別進行圖像采集,研究所獲取的無人機可見光原圖像的分辨率最高為5472×3648 像素,航拍圖像如圖1所示。

圖1 無人機航拍圖像
本研究的深度學習實驗平臺的環境配置如表1所示。

表1 深度學習實驗平臺搭建
為了提升模型的泛化性能,從拍攝目標與拍攝條件兩方面著手來提升數據的豐富度。牛羊數量較大,且覓食喜歡群聚,識別準確率與圖像所含目標數量相關,其識別難度體現在牲畜群聚時識別對象粘連程度,因此圖像裁剪和數據集構建時考慮單張圖像內包含的各類識別對象的類型、數量。另外手動剔除了一些由于圖片過曝過暗、目標遮擋過多、拍攝角度傾斜的低質量圖像。
1.2.1 圖像預處理
考慮到深度學習方法需要足夠數量訓練集圖像進行模型訓練,但原圖像數量有限且含有較多目標,對原圖像的不同類型目標進行單個目標的整只裁剪和包含目標大約20~400個不同數量目標區域裁剪以擴充數據集,達到每張樣本圖像中都含有多個待識別的目標的基本要求。
整只裁切后的圖片長寬比并不規則,算法模型需要輸入固定長寬比的圖像,一般的resize處理強行改變長寬比導致牛羊目標體型變形影響后續模型訓練,如圖2所示。

圖2 resize效果圖
本研究引入等比例放縮的letterbox圖像預處理輸出特定尺寸的圖片。由于裁剪圖片的長寬比不同導致縮放填充后兩端的灰度大小不同,灰度填充較多導致信息冗余影響推理速度,對letterbox 的縮放策略進行改進,即:先計算原圖像寬高與輸入尺寸的縮放比例Rw和Rh,若是放大選取R=min(Rw,Rh),若是縮小選取R=max(Rw,Rh),再將原圖像按R進行相應縮放;此時原圖像寬或高里有一邊與規定輸入尺寸相同,沒有達到輸入尺寸的另一邊計算與規定輸入尺寸的差值,然后進行上下(或左右)的填充,實現了對原圖像自適應的灰度填充,如圖3所示。

圖3 letterbox效果圖

圖4 CenterNet網絡結構
1.2.2 自建數據集
制作的數據集包括1000 張牛羊航拍圖片,其中有200 張來自互聯網,800 張圖片來自烏蘭察布草原。由程序隨機劃分100張做測試集,剩余900 張按照9∶1 的比例由程序隨機劃分訓練集和驗證集。表2是自建數據集所含目標數量分布情況。使用圖像注釋工具LabelImg 對裁剪及縮放后的圖像進行牛羊分類標注,通過最小外接矩形將樣本中的牛、羊背部分別標出,記錄該矩形的左上、右下的頂點坐標并分別設置類別標簽為cattle和sheep。

表2 數據集的目標數量分布

表3 ImageNet數據集的目標檢測效果

表4 自建數據集的目標檢測效果
本次研究采集的航拍牛、羊目標像素占原圖像總像素的比例小,屬于小目標檢測范疇。待檢測牛、羊目標自身包含的像素信息過少,因而包含的判定性特征過少;由于小目標的ground truth box 和anchor 都較小,加上小目標對定位的要求較高,anchor 和ground truth box 稍微偏移就會造成IoU(intersection over union)過低,導致該目標被模型判斷為負樣本[8]。本實驗圖像中牛羊所占比例不同,針對性設計anchor 無法滿足自建數據集同一類型目標所需anchor 不同的要求,本研究使用不需要生成ancor 的anchor-free模型。
CenterNet 主 要 分 為Backbone、 Decoder、Head三個部分,將目標檢測轉換成中心點預測。經過Backbone提取初步特征,在Decoder中通過反卷積模塊三次上采樣得到更高的分辨率特征輸入到Head,通過預測目標點的偏移量(Offset)與寬高(Width&Height)來獲取預測的矩形框,模型對于牛、羊都會產生一個單獨的Heatmap圖,對于生成的Heatmap 圖,如果某個坐標處含有牛、羊的中心點,則在該坐標處生成一個關鍵點。模型只需要從Heatmap 中提取目標,不使用NMS(non-maximum suppression),降低了計算量,最后將Head 的3 個分支預測結果進行整合,得到目標的檢測框和所屬的類別[9]。
本研究對于模型的改進與提升主要體現在防止小數據集訓練過度擬合和提升模型對于牛羊計數的精度上。自建牛羊數據集圖片較少,訓練模型易產生過擬合。為獲得準確的預測,使用下列三種方法預防過擬合。
2.2.1 運用遷移學習
遷移學習是先在可用的大型數據集上訓練通用模型,然后在小型數據集上對其進行微調。本研究是對牛、羊的目標檢測,模型在VOC 07+12數據集上預先訓練,再對模型進行微調。比起從零開始使用小數據集訓練的模型,使用大型數據集預先訓練的模型更可能產生準確的預測[10]。
2.2.2 模型選擇與組合
組合模型通過個體模型預測值加權平均計算出最終預測值,提升模型泛化能力。為防止過擬合,限制權重和參數量排除掉可能具有非線性或特征交互的模型,本研究使用CenterNet論文中平衡性最佳的ResNet 類作為特征提取網絡,降低出現訓練過擬合的可能。
2.2.3 平衡樣本
小數據集中異常值對預測結果影響較大,處理數據時需要識別并刪除異常值[11],而特殊數據不足導致數據種類不平衡時可使用合成樣本。另一方面,在模型的目標中心點與分類中用Focal Loss 控制正負樣本、容易分類和難分類樣本的權重[12]。
交叉熵損失在二分類問題的函數為
上式中y表示目標的類別,值為1 和-1,類別的概率分別用P和(1-P)表示。
此時,CE(P,y) =CE(Pt)= -ln(Pt)。
通過引入一個在[0,1]范圍內的系數αt實現正負樣本對loss的控制:
通過(1 -Pt)可以計算出某個類屬于容易分類還是難分類,引入調制系數(1 -Pt)γ來控制模型趨向于難分類樣本:
通過將Focal loss 控制正負樣本的加權,降低易分類樣本參與模型訓練的可能性。
小目標可利用像素較少難以提取特征,隨著網絡層數的增加,目標的特征信息與位置信息也逐漸丟失,難以檢測。因此小目標檢測引入多尺度學習提取深層語義信息與淺層表征信息。
2.3.1 替換多尺度Backbone
Res2Net是ResNet升級而來的一種多尺度特征提取網絡。
圖5(b)中的Bottleneck block 網絡第一個1×1卷積核負責降低通道維度,最后一個1×1 卷積核負責提升通道維度,增加了網絡深度,相比Basicblock的計算量反而有所下降[13]。

圖5 Basicblock、Bottleneck、Bottle2neck(4s)結構
如圖5(c),Res2Net在單個殘差塊內構造具有等級制的類似殘差連接,取代了Bottleneck block 的3×3 卷積核,稱為Bottle2neck。Res2Net在更細粒度級別表示多尺度特征,并增加了每個網絡層的感受野。
在Res2Net 中引入了Scale 層,Scale 表示block 中分支的個數,圖5(c)中X分成4 份,表示s= 4。而w表示每一個分支的通道數目,Res2Net 用一組較小的卷積核組替代n個通道的3×3卷積核,這些卷積核組以分層類似殘差的連接,用來增加尺度表示輸出特征[14]。由于s和w的引入,Res2Net具有多個版本。
選擇參數量較少的版本替換原有的Backbone在自建的牛羊數據集上運行。
多類目標的檢測模型需要直觀地展現各指標的聯系,選擇各項指標平衡性最佳的模型。由于參數量大的模型訓練小數據集更易過擬合,如圖6所示,選擇精度和參數量兩個指標平衡性最好的Res2Net-v1b-50。

圖6 Paraeters-mAP示意圖
牛、羊兩類目標具有一定差異,訓練效果存在差異,繪制直方堆疊圖展示模型性能,紅色星星柱和藍色斜線柱的高度分別代表APsheep和APcattle的值,整體的高度反映mAP高低,直方堆疊圖從mAP和兩類AP兩個角度比較模型的性能。
圖7 中選擇Res2Net-v1b-50 的模型AP最高且參數量適中,APcattle-sheep雖然較高,但同類型的Res2Net-26w-4s 的APcattle-sheep較 低,Res2Net-v1b僅修改了Res2Net-26w-4s 代碼的頂層,用三層卷積組合代替了原來的一層卷積層,后續有改善APcattle-sheep的可能。選用Res2Net-v1b-50的模型綜合表現更好。

圖7 APcattle-sheep直方堆疊圖

圖8 注意力機制位置添加示意圖
2.3.2 引入注意力機制
在深度卷積神經網絡中嵌入注意模塊可以提升部分性能[15]。引入常用的3 種注意力機制,傳統的通道注意力SENet[16],擁有空間及通道注意力CBAM[17],以及優化SENet 而來的輕量化ECANet[18],選擇效果最佳的注意力機制。注意力機制是一個即插即用的模塊,理論上可以置于任何一個特征層后,由于是改進后的組合模型,放在主干網絡會導致預訓練權重無法使用,選擇加在Backbone 中,針對Res2Net 中添加了Scale 層,為不影響Res2Net 在更細粒度級別表示多尺度特征,選擇Res2Net-v1b-50在Backbone的Attention Module-1 和Attention Module-2 兩 個位置分別加入這三類注意力機制。訓練結果見表5,在Attention Module-1 處添加ECANet 提升效果最佳,最終載畜量計數模型選擇用此改進模型。

表5 添加注意力機制后自建數據集的檢測效果
2.3.3 網絡訓練及參數設置
模型其他參數設置:選擇adam 優化器來更新學習率從而對網絡進行訓練,達到快速收斂的效果;使用余弦退火指數衰減策略,使得模型收斂達到最優解,避免陷入局部最小值;訓練時將初始學習率設置為5×10-6,網絡訓練時epoch值設置為500,Batch_size值設置為32。
2.4.1 檢測速度評價
模型的參數量與計算速度有一定的關系,而評價模型檢測速度主要是比較FPS(frames per second)。
通過代碼記錄檢測每幀圖片所用的時間T(單位:秒),得:
2.4.2 檢測精度評價
其中,TP:被正確識別為正樣本的數量;FP:被錯誤識別為正樣本的數量;TN:被正確識別為負樣本的數量;FN:被錯誤識別為負樣本的數量。
根據訓練數據繪制Precision-Recall曲線,得到:
本實驗類平均精度為
為了反映對牛羊類別的檢測差異,計算牛羊AP差值APcattle-sheep,得:
2.4.3 漏檢率評價
參考行人檢測的評價標準,對數平均漏檢率(log-average miss rate,LAMR)是反映多目標圖像檢測能力的指標[19],每幅圖誤檢個數(false positive per image,FPPI):
漏檢率(miss rate,MR)反映正確預測負樣本的能力。
繪制類似于Precision-Recall曲線的MR-FPPI曲線,在橫坐標FPPI的10-2到100之間均勻取9個點,獲取這9個點的MR值。
圖像中FPPI上限與牛羊密度有關,建立在MR-FPPI曲線上的LAMR對模型有一定參考價值,LAMR越小模型性能越好。
為了檢驗改進后模型的檢測能力,用自建牛羊數據集以同樣的參數設置,對以ResNet-50為初步特征提取網絡的CenterNet模型進行訓練。牛和羊的檢測框設為綠色和紅色(如圖9 所示),在只含牛的圖片檢測中,使用ResNet-50 提取特征信息不足,存在將背景識別為牛的情況;在同時含有牛羊目標的圖像中,最終模型提升了多只羊粘連的檢測以及牛羊的分類識別能力;在羊群密集時,最終模型對羊目標檢測改善明顯。

圖9 目標檢測框效果
CenterNet 檢測框的生成依靠Heatmap 圖,見圖10,在Heatmap 中,若某個坐標處有物體目標的中心點,即在該坐標處產生一個高斯圓。由于檢測框是在Heatmap 的基礎上生成,通過Heatmap圖可以看到黑色牛,尤其是偏黑色背景中ResNet-50 上的檢測效果較差,而最終模型提取更多特征信息,對于擁有較小信息量的目標和受背景干擾目標的檢測效果更佳。

圖10 Heatmap目標檢測效果
參數量接近時,犧牲部分檢測速度,最終模型在牛羊計數任務上取得了更好的結果,見表6。

表6 模型參數比較
改進后的最終模型對比使用ResNet-50 的模型mAP提升了2.89 個百分點,對比CenterNet 原論文中使用的ResNet-18 和ResNet-101 分別提升了5.78 和4.15 個百分點,最終模型中牛和羊的LAMR 對比ResNet-50 都下降了約10 個百分點,提升了密集目標的檢測能力。最終模型提升了個體分界不明顯和粘連目標的檢測能力。