孫 強(qiáng),郝 敏
(內(nèi)蒙古農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院,呼和浩特 010000)
內(nèi)蒙古地區(qū)擁有大規(guī)模的畜牧養(yǎng)殖業(yè),是我國(guó)牛奶、牛肉、羊肉、羊絨的主要產(chǎn)地之一。隨著經(jīng)濟(jì)快速發(fā)展,國(guó)內(nèi)市場(chǎng)對(duì)高蛋白的牛羊肉等需求逐年增加,呈現(xiàn)出消費(fèi)增幅快于生產(chǎn)增幅的態(tài)勢(shì)[1]。在內(nèi)蒙古地區(qū)的牛羊飼養(yǎng)中,草原放牧畜產(chǎn)品更受市場(chǎng)青睞,但畜牧業(yè)發(fā)展要兼顧自然環(huán)境的保護(hù),放牧生產(chǎn)端需要定期統(tǒng)計(jì)放牧牛羊數(shù)量反饋給牧民和有關(guān)部門進(jìn)行載畜量分析、生產(chǎn)調(diào)整和科學(xué)管理,因此便捷準(zhǔn)確地對(duì)同一放牧草原中不同放牧牲畜識(shí)別計(jì)數(shù)以折合為羊單位進(jìn)行實(shí)際載畜量統(tǒng)計(jì),進(jìn)行草畜平衡分析對(duì)保護(hù)生態(tài)平衡和促進(jìn)畜牧業(yè)健康發(fā)展、促進(jìn)草地可持續(xù)發(fā)展具有十分重要的意義和作用。
目前牲畜養(yǎng)殖中電子耳標(biāo)使用廣泛[2],在福利化養(yǎng)殖中主要針對(duì)奶牛這種長(zhǎng)期養(yǎng)殖牲畜采用耳標(biāo)用于記錄牛的健康狀況,但這類接觸式的計(jì)數(shù)手段成本高,不適用于短期養(yǎng)殖牲畜或草原自由放牧較多牲畜的場(chǎng)合。隨著機(jī)器視覺(jué)的發(fā)展,李琦等[3]采用YOLOv3 與DeepSORT算法相結(jié)合,提出基于雙線計(jì)數(shù)法的草原羊的自動(dòng)計(jì)數(shù),但該方法需要在羊圈中預(yù)設(shè)檢測(cè)設(shè)施,不適用于大型草原。
隨著智能化畜牧養(yǎng)殖業(yè)的發(fā)展,結(jié)合航拍圖像使用機(jī)器視覺(jué)技術(shù)代替人眼,通過(guò)目標(biāo)檢測(cè)算法無(wú)接觸進(jìn)行目標(biāo)場(chǎng)景下的牲畜識(shí)別和數(shù)量統(tǒng)計(jì)具有檢測(cè)簡(jiǎn)單快速的優(yōu)越性。伍天舟[4]利用無(wú)人機(jī)航拍圖像制作羊頭數(shù)據(jù)集結(jié)合SSD算法進(jìn)行放牧羊群的自動(dòng)計(jì)數(shù)。趙建敏等[5]提出基于無(wú)人機(jī)圖像的羊群密集計(jì)數(shù)方法,初步解決了羊群密度判斷。杜永興等[6]采用標(biāo)注點(diǎn)的方式標(biāo)注羊只,高斯核回歸轉(zhuǎn)換成標(biāo)簽,提升了高密度場(chǎng)景下計(jì)數(shù)準(zhǔn)確度。
但針對(duì)航拍圖片中牛羊小目標(biāo)粘連現(xiàn)象,目前研究中以羊頭為目標(biāo)比以羊背作目標(biāo)檢測(cè)效果好,但航拍圖像中存在羊頭被遮導(dǎo)致漏檢;設(shè)計(jì)不同大小檢測(cè)框無(wú)法滿足牛羊等形態(tài)各異的檢測(cè)需求。本文利用深度學(xué)習(xí)算法研究適應(yīng)性更強(qiáng)的特征提取網(wǎng)絡(luò),以羊背作為檢測(cè)目標(biāo),引入anchor-free 類的CenterNet 關(guān)鍵點(diǎn)檢測(cè)算法,針對(duì)小目標(biāo)檢測(cè)難同時(shí)對(duì)牛羊進(jìn)行分類識(shí)別,引入多尺度的特征提取網(wǎng)絡(luò)Res2Net提取更多特征[7],再添加注意力機(jī)制優(yōu)化模型,以快速準(zhǔn)確地對(duì)牛、羊兩種放牧牲畜進(jìn)行識(shí)別與計(jì)數(shù)。
在內(nèi)蒙古自治區(qū)烏蘭察布草原,考慮到不同高度下待檢測(cè)目標(biāo)的分辨率,使用DJI Mavic Air2 無(wú)人機(jī)在20 m 和25 m 兩個(gè)高度下對(duì)放牧場(chǎng)景下的多個(gè)羊群和牛群在雪地、草原、人工養(yǎng)殖場(chǎng)等多個(gè)不同場(chǎng)景、早中晚等不同光照條件下分別進(jìn)行圖像采集,研究所獲取的無(wú)人機(jī)可見(jiàn)光原圖像的分辨率最高為5472×3648 像素,航拍圖像如圖1所示。
圖1 無(wú)人機(jī)航拍圖像
本研究的深度學(xué)習(xí)實(shí)驗(yàn)平臺(tái)的環(huán)境配置如表1所示。
表1 深度學(xué)習(xí)實(shí)驗(yàn)平臺(tái)搭建
為了提升模型的泛化性能,從拍攝目標(biāo)與拍攝條件兩方面著手來(lái)提升數(shù)據(jù)的豐富度。牛羊數(shù)量較大,且覓食喜歡群聚,識(shí)別準(zhǔn)確率與圖像所含目標(biāo)數(shù)量相關(guān),其識(shí)別難度體現(xiàn)在牲畜群聚時(shí)識(shí)別對(duì)象粘連程度,因此圖像裁剪和數(shù)據(jù)集構(gòu)建時(shí)考慮單張圖像內(nèi)包含的各類識(shí)別對(duì)象的類型、數(shù)量。另外手動(dòng)剔除了一些由于圖片過(guò)曝過(guò)暗、目標(biāo)遮擋過(guò)多、拍攝角度傾斜的低質(zhì)量圖像。
1.2.1 圖像預(yù)處理
考慮到深度學(xué)習(xí)方法需要足夠數(shù)量訓(xùn)練集圖像進(jìn)行模型訓(xùn)練,但原圖像數(shù)量有限且含有較多目標(biāo),對(duì)原圖像的不同類型目標(biāo)進(jìn)行單個(gè)目標(biāo)的整只裁剪和包含目標(biāo)大約20~400個(gè)不同數(shù)量目標(biāo)區(qū)域裁剪以擴(kuò)充數(shù)據(jù)集,達(dá)到每張樣本圖像中都含有多個(gè)待識(shí)別的目標(biāo)的基本要求。
整只裁切后的圖片長(zhǎng)寬比并不規(guī)則,算法模型需要輸入固定長(zhǎng)寬比的圖像,一般的resize處理強(qiáng)行改變長(zhǎng)寬比導(dǎo)致牛羊目標(biāo)體型變形影響后續(xù)模型訓(xùn)練,如圖2所示。
圖2 resize效果圖
本研究引入等比例放縮的letterbox圖像預(yù)處理輸出特定尺寸的圖片。由于裁剪圖片的長(zhǎng)寬比不同導(dǎo)致縮放填充后兩端的灰度大小不同,灰度填充較多導(dǎo)致信息冗余影響推理速度,對(duì)letterbox 的縮放策略進(jìn)行改進(jìn),即:先計(jì)算原圖像寬高與輸入尺寸的縮放比例Rw和Rh,若是放大選取R=min(Rw,Rh),若是縮小選取R=max(Rw,Rh),再將原圖像按R進(jìn)行相應(yīng)縮放;此時(shí)原圖像寬或高里有一邊與規(guī)定輸入尺寸相同,沒(méi)有達(dá)到輸入尺寸的另一邊計(jì)算與規(guī)定輸入尺寸的差值,然后進(jìn)行上下(或左右)的填充,實(shí)現(xiàn)了對(duì)原圖像自適應(yīng)的灰度填充,如圖3所示。
圖3 letterbox效果圖
圖4 CenterNet網(wǎng)絡(luò)結(jié)構(gòu)
1.2.2 自建數(shù)據(jù)集
制作的數(shù)據(jù)集包括1000 張牛羊航拍圖片,其中有200 張來(lái)自互聯(lián)網(wǎng),800 張圖片來(lái)自烏蘭察布草原。由程序隨機(jī)劃分100張做測(cè)試集,剩余900 張按照9∶1 的比例由程序隨機(jī)劃分訓(xùn)練集和驗(yàn)證集。表2是自建數(shù)據(jù)集所含目標(biāo)數(shù)量分布情況。使用圖像注釋工具LabelImg 對(duì)裁剪及縮放后的圖像進(jìn)行牛羊分類標(biāo)注,通過(guò)最小外接矩形將樣本中的牛、羊背部分別標(biāo)出,記錄該矩形的左上、右下的頂點(diǎn)坐標(biāo)并分別設(shè)置類別標(biāo)簽為cattle和sheep。
表2 數(shù)據(jù)集的目標(biāo)數(shù)量分布
表3 ImageNet數(shù)據(jù)集的目標(biāo)檢測(cè)效果
表4 自建數(shù)據(jù)集的目標(biāo)檢測(cè)效果
本次研究采集的航拍牛、羊目標(biāo)像素占原圖像總像素的比例小,屬于小目標(biāo)檢測(cè)范疇。待檢測(cè)牛、羊目標(biāo)自身包含的像素信息過(guò)少,因而包含的判定性特征過(guò)少;由于小目標(biāo)的ground truth box 和anchor 都較小,加上小目標(biāo)對(duì)定位的要求較高,anchor 和ground truth box 稍微偏移就會(huì)造成IoU(intersection over union)過(guò)低,導(dǎo)致該目標(biāo)被模型判斷為負(fù)樣本[8]。本實(shí)驗(yàn)圖像中牛羊所占比例不同,針對(duì)性設(shè)計(jì)anchor 無(wú)法滿足自建數(shù)據(jù)集同一類型目標(biāo)所需anchor 不同的要求,本研究使用不需要生成ancor 的anchor-free模型。
CenterNet 主 要 分 為Backbone、 Decoder、Head三個(gè)部分,將目標(biāo)檢測(cè)轉(zhuǎn)換成中心點(diǎn)預(yù)測(cè)。經(jīng)過(guò)Backbone提取初步特征,在Decoder中通過(guò)反卷積模塊三次上采樣得到更高的分辨率特征輸入到Head,通過(guò)預(yù)測(cè)目標(biāo)點(diǎn)的偏移量(Offset)與寬高(Width&Height)來(lái)獲取預(yù)測(cè)的矩形框,模型對(duì)于牛、羊都會(huì)產(chǎn)生一個(gè)單獨(dú)的Heatmap圖,對(duì)于生成的Heatmap 圖,如果某個(gè)坐標(biāo)處含有牛、羊的中心點(diǎn),則在該坐標(biāo)處生成一個(gè)關(guān)鍵點(diǎn)。模型只需要從Heatmap 中提取目標(biāo),不使用NMS(non-maximum suppression),降低了計(jì)算量,最后將Head 的3 個(gè)分支預(yù)測(cè)結(jié)果進(jìn)行整合,得到目標(biāo)的檢測(cè)框和所屬的類別[9]。
本研究對(duì)于模型的改進(jìn)與提升主要體現(xiàn)在防止小數(shù)據(jù)集訓(xùn)練過(guò)度擬合和提升模型對(duì)于牛羊計(jì)數(shù)的精度上。自建牛羊數(shù)據(jù)集圖片較少,訓(xùn)練模型易產(chǎn)生過(guò)擬合。為獲得準(zhǔn)確的預(yù)測(cè),使用下列三種方法預(yù)防過(guò)擬合。
2.2.1 運(yùn)用遷移學(xué)習(xí)
遷移學(xué)習(xí)是先在可用的大型數(shù)據(jù)集上訓(xùn)練通用模型,然后在小型數(shù)據(jù)集上對(duì)其進(jìn)行微調(diào)。本研究是對(duì)牛、羊的目標(biāo)檢測(cè),模型在VOC 07+12數(shù)據(jù)集上預(yù)先訓(xùn)練,再對(duì)模型進(jìn)行微調(diào)。比起從零開(kāi)始使用小數(shù)據(jù)集訓(xùn)練的模型,使用大型數(shù)據(jù)集預(yù)先訓(xùn)練的模型更可能產(chǎn)生準(zhǔn)確的預(yù)測(cè)[10]。
2.2.2 模型選擇與組合
組合模型通過(guò)個(gè)體模型預(yù)測(cè)值加權(quán)平均計(jì)算出最終預(yù)測(cè)值,提升模型泛化能力。為防止過(guò)擬合,限制權(quán)重和參數(shù)量排除掉可能具有非線性或特征交互的模型,本研究使用CenterNet論文中平衡性最佳的ResNet 類作為特征提取網(wǎng)絡(luò),降低出現(xiàn)訓(xùn)練過(guò)擬合的可能。
2.2.3 平衡樣本
小數(shù)據(jù)集中異常值對(duì)預(yù)測(cè)結(jié)果影響較大,處理數(shù)據(jù)時(shí)需要識(shí)別并刪除異常值[11],而特殊數(shù)據(jù)不足導(dǎo)致數(shù)據(jù)種類不平衡時(shí)可使用合成樣本。另一方面,在模型的目標(biāo)中心點(diǎn)與分類中用Focal Loss 控制正負(fù)樣本、容易分類和難分類樣本的權(quán)重[12]。
交叉熵?fù)p失在二分類問(wèn)題的函數(shù)為
上式中y表示目標(biāo)的類別,值為1 和-1,類別的概率分別用P和(1-P)表示。
此時(shí),CE(P,y) =CE(Pt)= -ln(Pt)。
通過(guò)引入一個(gè)在[0,1]范圍內(nèi)的系數(shù)αt實(shí)現(xiàn)正負(fù)樣本對(duì)loss的控制:
通過(guò)(1 -Pt)可以計(jì)算出某個(gè)類屬于容易分類還是難分類,引入調(diào)制系數(shù)(1 -Pt)γ來(lái)控制模型趨向于難分類樣本:
通過(guò)將Focal loss 控制正負(fù)樣本的加權(quán),降低易分類樣本參與模型訓(xùn)練的可能性。
小目標(biāo)可利用像素較少難以提取特征,隨著網(wǎng)絡(luò)層數(shù)的增加,目標(biāo)的特征信息與位置信息也逐漸丟失,難以檢測(cè)。因此小目標(biāo)檢測(cè)引入多尺度學(xué)習(xí)提取深層語(yǔ)義信息與淺層表征信息。
2.3.1 替換多尺度Backbone
Res2Net是ResNet升級(jí)而來(lái)的一種多尺度特征提取網(wǎng)絡(luò)。
圖5(b)中的Bottleneck block 網(wǎng)絡(luò)第一個(gè)1×1卷積核負(fù)責(zé)降低通道維度,最后一個(gè)1×1 卷積核負(fù)責(zé)提升通道維度,增加了網(wǎng)絡(luò)深度,相比Basicblock的計(jì)算量反而有所下降[13]。
圖5 Basicblock、Bottleneck、Bottle2neck(4s)結(jié)構(gòu)
如圖5(c),Res2Net在單個(gè)殘差塊內(nèi)構(gòu)造具有等級(jí)制的類似殘差連接,取代了Bottleneck block 的3×3 卷積核,稱為Bottle2neck。Res2Net在更細(xì)粒度級(jí)別表示多尺度特征,并增加了每個(gè)網(wǎng)絡(luò)層的感受野。
在Res2Net 中引入了Scale 層,Scale 表示block 中分支的個(gè)數(shù),圖5(c)中X分成4 份,表示s= 4。而w表示每一個(gè)分支的通道數(shù)目,Res2Net 用一組較小的卷積核組替代n個(gè)通道的3×3卷積核,這些卷積核組以分層類似殘差的連接,用來(lái)增加尺度表示輸出特征[14]。由于s和w的引入,Res2Net具有多個(gè)版本。
選擇參數(shù)量較少的版本替換原有的Backbone在自建的牛羊數(shù)據(jù)集上運(yùn)行。
多類目標(biāo)的檢測(cè)模型需要直觀地展現(xiàn)各指標(biāo)的聯(lián)系,選擇各項(xiàng)指標(biāo)平衡性最佳的模型。由于參數(shù)量大的模型訓(xùn)練小數(shù)據(jù)集更易過(guò)擬合,如圖6所示,選擇精度和參數(shù)量?jī)蓚€(gè)指標(biāo)平衡性最好的Res2Net-v1b-50。
圖6 Paraeters-mAP示意圖
牛、羊兩類目標(biāo)具有一定差異,訓(xùn)練效果存在差異,繪制直方堆疊圖展示模型性能,紅色星星柱和藍(lán)色斜線柱的高度分別代表APsheep和APcattle的值,整體的高度反映mAP高低,直方堆疊圖從mAP和兩類AP兩個(gè)角度比較模型的性能。
圖7 中選擇Res2Net-v1b-50 的模型AP最高且參數(shù)量適中,APcattle-sheep雖然較高,但同類型的Res2Net-26w-4s 的APcattle-sheep較 低,Res2Net-v1b僅修改了Res2Net-26w-4s 代碼的頂層,用三層卷積組合代替了原來(lái)的一層卷積層,后續(xù)有改善APcattle-sheep的可能。選用Res2Net-v1b-50的模型綜合表現(xiàn)更好。
圖7 APcattle-sheep直方堆疊圖
圖8 注意力機(jī)制位置添加示意圖
2.3.2 引入注意力機(jī)制
在深度卷積神經(jīng)網(wǎng)絡(luò)中嵌入注意模塊可以提升部分性能[15]。引入常用的3 種注意力機(jī)制,傳統(tǒng)的通道注意力SENet[16],擁有空間及通道注意力CBAM[17],以及優(yōu)化SENet 而來(lái)的輕量化ECANet[18],選擇效果最佳的注意力機(jī)制。注意力機(jī)制是一個(gè)即插即用的模塊,理論上可以置于任何一個(gè)特征層后,由于是改進(jìn)后的組合模型,放在主干網(wǎng)絡(luò)會(huì)導(dǎo)致預(yù)訓(xùn)練權(quán)重?zé)o法使用,選擇加在Backbone 中,針對(duì)Res2Net 中添加了Scale 層,為不影響Res2Net 在更細(xì)粒度級(jí)別表示多尺度特征,選擇Res2Net-v1b-50在Backbone的Attention Module-1 和Attention Module-2 兩 個(gè)位置分別加入這三類注意力機(jī)制。訓(xùn)練結(jié)果見(jiàn)表5,在Attention Module-1 處添加ECANet 提升效果最佳,最終載畜量計(jì)數(shù)模型選擇用此改進(jìn)模型。
表5 添加注意力機(jī)制后自建數(shù)據(jù)集的檢測(cè)效果
2.3.3 網(wǎng)絡(luò)訓(xùn)練及參數(shù)設(shè)置
模型其他參數(shù)設(shè)置:選擇adam 優(yōu)化器來(lái)更新學(xué)習(xí)率從而對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,達(dá)到快速收斂的效果;使用余弦退火指數(shù)衰減策略,使得模型收斂達(dá)到最優(yōu)解,避免陷入局部最小值;訓(xùn)練時(shí)將初始學(xué)習(xí)率設(shè)置為5×10-6,網(wǎng)絡(luò)訓(xùn)練時(shí)epoch值設(shè)置為500,Batch_size值設(shè)置為32。
2.4.1 檢測(cè)速度評(píng)價(jià)
模型的參數(shù)量與計(jì)算速度有一定的關(guān)系,而評(píng)價(jià)模型檢測(cè)速度主要是比較FPS(frames per second)。
通過(guò)代碼記錄檢測(cè)每幀圖片所用的時(shí)間T(單位:秒),得:
2.4.2 檢測(cè)精度評(píng)價(jià)
其中,TP:被正確識(shí)別為正樣本的數(shù)量;FP:被錯(cuò)誤識(shí)別為正樣本的數(shù)量;TN:被正確識(shí)別為負(fù)樣本的數(shù)量;FN:被錯(cuò)誤識(shí)別為負(fù)樣本的數(shù)量。
根據(jù)訓(xùn)練數(shù)據(jù)繪制Precision-Recall曲線,得到:
本實(shí)驗(yàn)類平均精度為
為了反映對(duì)牛羊類別的檢測(cè)差異,計(jì)算牛羊AP差值A(chǔ)Pcattle-sheep,得:
2.4.3 漏檢率評(píng)價(jià)
參考行人檢測(cè)的評(píng)價(jià)標(biāo)準(zhǔn),對(duì)數(shù)平均漏檢率(log-average miss rate,LAMR)是反映多目標(biāo)圖像檢測(cè)能力的指標(biāo)[19],每幅圖誤檢個(gè)數(shù)(false positive per image,F(xiàn)PPI):
漏檢率(miss rate,MR)反映正確預(yù)測(cè)負(fù)樣本的能力。
繪制類似于Precision-Recall曲線的MR-FPPI曲線,在橫坐標(biāo)FPPI的10-2到100之間均勻取9個(gè)點(diǎn),獲取這9個(gè)點(diǎn)的MR值。
圖像中FPPI上限與牛羊密度有關(guān),建立在MR-FPPI曲線上的LAMR對(duì)模型有一定參考價(jià)值,LAMR越小模型性能越好。
為了檢驗(yàn)改進(jìn)后模型的檢測(cè)能力,用自建牛羊數(shù)據(jù)集以同樣的參數(shù)設(shè)置,對(duì)以ResNet-50為初步特征提取網(wǎng)絡(luò)的CenterNet模型進(jìn)行訓(xùn)練。牛和羊的檢測(cè)框設(shè)為綠色和紅色(如圖9 所示),在只含牛的圖片檢測(cè)中,使用ResNet-50 提取特征信息不足,存在將背景識(shí)別為牛的情況;在同時(shí)含有牛羊目標(biāo)的圖像中,最終模型提升了多只羊粘連的檢測(cè)以及牛羊的分類識(shí)別能力;在羊群密集時(shí),最終模型對(duì)羊目標(biāo)檢測(cè)改善明顯。
圖9 目標(biāo)檢測(cè)框效果
CenterNet 檢測(cè)框的生成依靠Heatmap 圖,見(jiàn)圖10,在Heatmap 中,若某個(gè)坐標(biāo)處有物體目標(biāo)的中心點(diǎn),即在該坐標(biāo)處產(chǎn)生一個(gè)高斯圓。由于檢測(cè)框是在Heatmap 的基礎(chǔ)上生成,通過(guò)Heatmap圖可以看到黑色牛,尤其是偏黑色背景中ResNet-50 上的檢測(cè)效果較差,而最終模型提取更多特征信息,對(duì)于擁有較小信息量的目標(biāo)和受背景干擾目標(biāo)的檢測(cè)效果更佳。
圖10 Heatmap目標(biāo)檢測(cè)效果
參數(shù)量接近時(shí),犧牲部分檢測(cè)速度,最終模型在牛羊計(jì)數(shù)任務(wù)上取得了更好的結(jié)果,見(jiàn)表6。
表6 模型參數(shù)比較
改進(jìn)后的最終模型對(duì)比使用ResNet-50 的模型mAP提升了2.89 個(gè)百分點(diǎn),對(duì)比CenterNet 原論文中使用的ResNet-18 和ResNet-101 分別提升了5.78 和4.15 個(gè)百分點(diǎn),最終模型中牛和羊的LAMR 對(duì)比ResNet-50 都下降了約10 個(gè)百分點(diǎn),提升了密集目標(biāo)的檢測(cè)能力。最終模型提升了個(gè)體分界不明顯和粘連目標(biāo)的檢測(cè)能力。