劉瓔瑛,曹晅,郭彬彬,陳慧杰,戴子淳,龔長萬
(1.南京農(nóng)業(yè)大學(xué)人工智能學(xué)院,江蘇 南京 210031;2.農(nóng)業(yè)農(nóng)村部養(yǎng)殖裝備重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210031;3.江蘇省農(nóng)業(yè)科學(xué)院畜牧研究所,江蘇 南京 210014)
家禽的智能化養(yǎng)殖已逐漸成為福利化養(yǎng)殖的發(fā)展需求。家禽的姿態(tài)[1]和行為與它們的身體狀態(tài)和健康狀況密切相關(guān),不同的姿態(tài)和行為會傳遞不同的健康信息[2]。肉鵝是群居性家禽,具有合群性[3],其姿態(tài)和行為的一致性較強(qiáng)。傳統(tǒng)的肉鵝健康狀態(tài)判斷主要通過飼養(yǎng)人員肉眼長期觀察肉鵝姿態(tài)和行為,根據(jù)經(jīng)驗(yàn)得出結(jié)論,主觀性強(qiáng)、耗時(shí)費(fèi)力。以計(jì)算機(jī)視覺和深度學(xué)習(xí)相結(jié)合的方式,應(yīng)用在肉鵝養(yǎng)殖過程的姿態(tài)識別上,養(yǎng)殖管理人員可以通過養(yǎng)殖場的攝像頭遠(yuǎn)程獲取自然狀態(tài)下肉鵝的姿態(tài)變化,為后續(xù)實(shí)現(xiàn)自動(dòng)監(jiān)控家禽生長狀況及異常行為的預(yù)警有重要意義。
伴隨著人工智能技術(shù)的發(fā)展,計(jì)算行為學(xué)逐漸得到學(xué)界的重視[4]。將深度學(xué)習(xí)[5-6]算法應(yīng)用于禽畜的姿態(tài)和行為識別[7]成為當(dāng)下研究的熱點(diǎn)。Fang等[8]通過構(gòu)建肉雞姿態(tài)骨架特征點(diǎn),跟蹤其身體特定部位,并結(jié)合深度神經(jīng)網(wǎng)絡(luò)(DNN)和貝葉斯模型(BM),實(shí)現(xiàn)了對肉雞站立、行走、奔跑、進(jìn)食、休息等姿態(tài)的準(zhǔn)確識別。李娜等[9]篩選了7 988幅圖片對雞的采食、趴臥、站立、梳羽、打架和梳羽行為進(jìn)行標(biāo)注,利用YOLO v4目標(biāo)檢測模型識別,并采用時(shí)間序列分析方法提取持續(xù)時(shí)間大于30 s的梳羽行為,實(shí)現(xiàn)群養(yǎng)雞只行為的實(shí)時(shí)自動(dòng)監(jiān)測。Shao等[10]建立了人工標(biāo)注的豬姿態(tài)識別數(shù)據(jù)集,包括站立、俯臥、側(cè)臥、覓食4種豬姿態(tài),使用YOLO v5算法對單個(gè)豬目標(biāo)截取后,利用語義分割和ResNet網(wǎng)絡(luò)對豬的姿勢進(jìn)行分類,準(zhǔn)確率高達(dá)92.45%。劉亞楠等[11]利用YOLO v5模型識別母豬、仔豬姿態(tài),并通過加入db4小波的方法,實(shí)現(xiàn)了非接觸式母豬哺乳行為的判定和哺乳時(shí)長的監(jiān)測。為了提升網(wǎng)絡(luò)性能,學(xué)者們先后提出了SENet(squeeze and excitation networks)[12]、CBAM(convolutional block attention module)[13]、ECA(efficient channel attention)[14]等注意力機(jī)制[15-18]。這些研究表明增加注意力機(jī)制可以提高網(wǎng)絡(luò)的檢測能力,但尚未有將其應(yīng)用于畜禽姿態(tài)識別和行為分析的相關(guān)研究。
YOLO模型是目前工業(yè)領(lǐng)域使用最多的檢測網(wǎng)絡(luò),采用one-stage算法,網(wǎng)絡(luò)運(yùn)行速度快,內(nèi)存占用小。YOLO v5模型是YOLO系列的最新成果,在繼承原有YOLO模型優(yōu)點(diǎn)的基礎(chǔ)上,因其更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練策略技巧等使其具有更優(yōu)的檢測精度和更快的推理速度。按照其網(wǎng)絡(luò)寬度、深度的不同,一共有4個(gè)模型,本文選用尺寸最小的YOLO v5模型,易于部署在硬件配置相對簡單的養(yǎng)殖場環(huán)境。目前將YOLO檢測算法應(yīng)用在雞、豬等禽畜姿態(tài)行為識別的研究較多,但對鵝這種水禽研究較少。夏季高溫天氣,鵝熱應(yīng)激反應(yīng)大,通過監(jiān)測站立、休憩、飲水和梳羽4種姿態(tài)可以提前預(yù)警,降低死亡率。鵝場內(nèi)的光照環(huán)境復(fù)雜,且存在鐵絲網(wǎng)、網(wǎng)狀地格、遮陽布、飲水器、食盆等干擾物,鵝群易聚集,造成視頻中出現(xiàn)較多肉鵝遮擋的場景。故本研究在YOLO v5模型基礎(chǔ)上增加了注意力機(jī)制模塊,改進(jìn)優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),并對比分別增加SENet、CBAM、ECA不同注意力模塊后網(wǎng)絡(luò)的檢測效果,提高養(yǎng)殖場復(fù)雜場景下肉鵝4種姿態(tài)的檢測能力。同時(shí)根據(jù)養(yǎng)殖場實(shí)際情況,設(shè)計(jì)了明暗試驗(yàn)和密集場景試驗(yàn),驗(yàn)證了算法的有效性。改進(jìn)的YOLO v5模型可以實(shí)現(xiàn)養(yǎng)殖場復(fù)雜環(huán)境下肉鵝姿態(tài)準(zhǔn)確快速檢測,為后續(xù)肉鵝行為監(jiān)控和健康防疫提供數(shù)據(jù)。
1.1.1 數(shù)據(jù)采集從養(yǎng)殖場獲取肉鵝視頻,視頻拍攝于2020年8月,地點(diǎn)在安徽省滁州市全椒縣馬廠鎮(zhèn)。視頻來源于安徽天之驕鵝業(yè)有限公司的監(jiān)控?cái)z像頭,視頻圖像分辨率為1 920×1 080,鵝的品種為揚(yáng)州鵝。根據(jù)視頻實(shí)際情況,從中挑選不同時(shí)段的肉鵝活動(dòng)視頻,利用python腳本文件對視頻進(jìn)行抽幀處理,每個(gè)視頻按照一定的間隔抽幀獲取100張彩色RGB圖片,經(jīng)過數(shù)據(jù)清洗后將原有的MP4格式視頻數(shù)據(jù)轉(zhuǎn)為800張JPG圖像,包括400張白天肉鵝圖像和400張夜晚肉鵝圖像。圖像統(tǒng)一編號格式為“00000X.jpg”。
1.1.2 數(shù)據(jù)集制作肉鵝的姿態(tài)十分豐富,并且由于其細(xì)長的脖子,不同姿態(tài)之間有一定的相似性,常見的有站立、休憩、飲水、吃食、梳羽和展翅等姿態(tài)。本研究選取了站立(standing)、休憩(resting)、飲水(drinking)、梳羽(feather preening)這4種常見姿態(tài),其姿態(tài)識別分類的評判標(biāo)準(zhǔn)如表1所示。4種肉鵝姿態(tài)見圖1。利用LabelImg開源標(biāo)注工具對圖片內(nèi)的肉鵝目標(biāo)進(jìn)行人工標(biāo)注,并將標(biāo)注結(jié)果保存為PASCAL VOC格式,生成的.XML格式文件保存至預(yù)先創(chuàng)建的文件夾中。在人眼可區(qū)分的情況下,盡可能對圖片中的所有肉鵝目標(biāo)進(jìn)行標(biāo)注,對于模糊不清的肉鵝目標(biāo)采取不標(biāo),這樣可以避免因目標(biāo)未標(biāo)注被當(dāng)作負(fù)樣本進(jìn)而削弱算法區(qū)分正負(fù)樣本能力的影響。真實(shí)肉鵝養(yǎng)殖場的環(huán)境,存在欄桿遮擋、肉鵝目標(biāo)露出不全、黏連等情形,對于不同情形利用大小合適的矩形框進(jìn)行標(biāo)注。
1.1.3 數(shù)據(jù)集劃分通過python腳本文件,將800張圖片及對應(yīng)標(biāo)簽按照訓(xùn)練驗(yàn)證集∶測試集=9∶1以及訓(xùn)練集:驗(yàn)證集=9∶1的比例,完成了訓(xùn)練集、驗(yàn)證集、測試集的劃分。數(shù)據(jù)集共完成13 487個(gè)姿態(tài)標(biāo)注,其中訓(xùn)練集11 438個(gè)姿態(tài)(站立姿態(tài)2 827個(gè),休憩姿態(tài)6 481個(gè),飲水姿態(tài)408個(gè),梳羽姿態(tài)1 722個(gè)),驗(yàn)證集1 231個(gè)姿態(tài)(站立姿態(tài)324個(gè),休憩姿態(tài)654個(gè),飲水姿態(tài)42個(gè),梳羽姿態(tài)211個(gè)),測試集1 418個(gè)姿態(tài)(站立姿態(tài)351個(gè),休憩姿態(tài)766個(gè),飲水姿態(tài)50個(gè),梳羽姿態(tài)251個(gè))。
表1 肉鵝4種姿態(tài)定義Table 1 Definition of the meat goose’s four postures
圖1 肉鵝姿態(tài)示意圖Fig.1 Schematic diagram of meat goose posture
1.2.1 實(shí)驗(yàn)平臺與環(huán)境配置本研究基于應(yīng)用靈活的Pytorch開源框架,采用搭載Windows10 64位操作系統(tǒng)的筆記本進(jìn)行模型訓(xùn)練,中央處理器(CPU)為Intel(R)Core(TM)i5-8300H CPU@2.30GHz,顯卡(GPU)為NVIDIA GeForce GTX 1050Ti,顯存8GB,并配置深度學(xué)習(xí)Conda環(huán)境為:Python=3.8.0+torch=1.7.1+torchvision=0.8.2,CUDA版本為10.0。
1.2.2 基于改進(jìn)YOLO v5的肉鵝姿態(tài)識別模型傳統(tǒng)的如ResNet等網(wǎng)絡(luò)只能完成單個(gè)目標(biāo)圖像的分類任務(wù),本研究中每張圖片中有多只肉鵝目標(biāo),對于每只肉鵝目標(biāo),都需要實(shí)現(xiàn)對其框選和分類,目標(biāo)檢測模型是實(shí)現(xiàn)該任務(wù)的最佳選擇。為了更好適應(yīng)養(yǎng)殖場的復(fù)雜場景,本研究通過加入注意力機(jī)制模塊對YOLO v5模型進(jìn)行改進(jìn),改進(jìn)后的模型網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。YOLO v5模型在網(wǎng)絡(luò)結(jié)構(gòu)上可以劃分為輸入端、主干網(wǎng)絡(luò)(backbone)、頸網(wǎng)絡(luò)(neck)、輸出端4個(gè)部分。其主干特征提取網(wǎng)絡(luò)采用與YOLO v4類似的CSP Darknet,Neck部分采用FPN(feature pyramid networks)結(jié)合PAN(path aggregation network)的結(jié)構(gòu),進(jìn)行網(wǎng)絡(luò)的特征融合和加強(qiáng)提取[19-20],自底向上路線的加入彌補(bǔ)加強(qiáng)了定位信息,提升了網(wǎng)絡(luò)特征融合的能力。在引入注意力模塊時(shí),通過對比放置在網(wǎng)絡(luò)不同位置的效果,最終選定放置在頸網(wǎng)絡(luò)的尾部,不同注意力模塊的結(jié)構(gòu)如圖3所示。CBAM模塊對于輸入的特征,先通過一個(gè)共享的多層感知機(jī)(multi layer perceptron,MLP)與Sigmoid函數(shù),學(xué)習(xí)各通道的權(quán)重信息,再通過一個(gè)卷積核為3×3、 膨脹系數(shù)為2的空洞卷積[21]與Sigmoid函數(shù),學(xué)習(xí)空間上各點(diǎn)的權(quán)重信息。SENet模塊通過2次全連接層和Sigmoid函數(shù)后獲得通道權(quán)重信息,ECA模塊將2次全連接層改為一維卷積,通過Sigmoid函數(shù)后獲得通道權(quán)重信息,具有良好的跨通道信息獲取能力[22]。在同一環(huán)境下訓(xùn)練及測試YOLO v5模型以及增加注意力機(jī)制模塊后的YOLO v5+SENet、YOLO v5+CBAM、YOLO v5+ECA模型,通過選取合適的評價(jià)指標(biāo),對模型進(jìn)行初步分析。為了更好地驗(yàn)證模型的泛化性,本研究設(shè)計(jì)了明暗試驗(yàn)和密集場景試驗(yàn),進(jìn)一步對模型做出評價(jià),最終挑選出更加準(zhǔn)確識別肉鵝站立、休憩、飲水、梳羽這4種常見姿態(tài)的模型。肉鵝姿態(tài)識別模型的構(gòu)建流程如圖4所示。
圖2 改進(jìn)的YOLO v5模型網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 The network structure diagram of improved YOLO v5 model
圖3 不同注意力模塊的結(jié)構(gòu)圖Fig.3 Structure diagram of different attention modules
圖4 肉鵝姿態(tài)識別模型的流程圖Fig.4 The flow chart of meat goose posture recognition model
圖5 改進(jìn)前后YOLO v5的訓(xùn)練損失曲線Fig.5 Training loss curve of YOLO v5 beforeand after improvement
1.2.3 訓(xùn)練參數(shù)設(shè)置在YOLO v5以及改進(jìn)YOLO v5的訓(xùn)練中,只進(jìn)行解凍訓(xùn)練,訓(xùn)練的epoch設(shè)為100,批次(batch_size)設(shè)置為8,總迭代次數(shù)為8 100次,初始學(xué)習(xí)率設(shè)置為0.001,最小學(xué)習(xí)率設(shè)置為0.000 01,使用adam優(yōu)化器,動(dòng)量參數(shù)設(shè)置為0.937,使用余弦退火函數(shù)動(dòng)態(tài)降低學(xué)習(xí)率。在改進(jìn)網(wǎng)絡(luò)中選擇關(guān)閉Mosaic數(shù)據(jù)增強(qiáng)方法。置信度設(shè)為0.3,非極大值抑制所用的交并比大小設(shè)為0.3。損失函數(shù)由3個(gè)部分組成:Reg(矩形框回歸預(yù)測)部分、Obj(置信度預(yù)測)部分、Cls(分類預(yù)測)部分。Reg部分采用CIOU損失,Obj部分和Cls部分采用BCE Loss(交叉熵?fù)p失)。在同一環(huán)境下訓(xùn)練,改進(jìn)前后YOLO v5網(wǎng)絡(luò)的訓(xùn)練損失曲線如圖5所示。
1.2.4 模型評價(jià)指標(biāo)采用精準(zhǔn)率(precision,P)表示模型正確識別肉鵝的占比,召回率(recall,R)表示識別圖片中肉鵝目標(biāo)的涵蓋程度。采用精度均值(average precision,AP)表示每種肉鵝姿態(tài)識別的精度,采用平均精度均值(mean average precision,mAP)表示所有類別肉鵝姿態(tài)的平均識別精度。采用參數(shù)量(parameters,Params)評價(jià)模型的空間復(fù)雜度,參數(shù)量表征了模型占用顯存的大小,指模型各網(wǎng)絡(luò)層的總字節(jié)數(shù)。采用計(jì)算量(floating point operations,FLOPs)評價(jià)模型的時(shí)間復(fù)雜度,計(jì)算量表征了模型運(yùn)算速度的大小,指浮點(diǎn)運(yùn)算次數(shù)。采用畫面每秒傳輸幀數(shù)(frames per second,FPS)和單張圖片的檢測時(shí)間評價(jià)模型實(shí)際識別肉鵝的速度。相關(guān)計(jì)算公式如下:
(1)
(2)
(3)
(4)
式中:TP表示實(shí)際為真預(yù)測正確的樣本數(shù);FP表示實(shí)際為假預(yù)測正確的樣本數(shù);FN表示實(shí)際為假預(yù)測錯(cuò)誤的樣本數(shù);C為肉鵝姿態(tài)類別總數(shù);k為肉鵝各姿態(tài)類別序號。
將不同模型在同一硬件環(huán)境下檢測,改進(jìn)前、后識別的性能指標(biāo)對比如表2所示。從表2可以看出,YOLO v5在增加不同的注意力模塊后,在P、R、mAP上能夠?qū)崿F(xiàn)一定程度的提升,檢測速度也有所提升,而模型的Params和Flops幾乎沒有增加。當(dāng)加入ECA注意力模塊后,模型識別效果提升最為明顯,改進(jìn)YOLO v5的精準(zhǔn)率由原來的83.46%上升到84.68%,提升了1.22%,召回率由原來的84.05%上升到85.88%,提升了1.83%,mAP值由原來的86.66%上升到88.93%,提升了2.27%,FPS也從26.70上升到30.92??偟膩碚f,注意力機(jī)制的引入有效提高了模型的檢測精度和檢測速度,改進(jìn)后的YOLO v5+ECA模型的檢測精度和檢測速度最高。
表2 改進(jìn)前、后YOLO v5模型的肉鵝姿態(tài)識別結(jié)果Table 2 Meat goose posture recognition results of YOLO v5 model before and after improvement
為了對YOLO v5+ECA模型的檢測過程進(jìn)行可視化解釋,采用Grad-CAM[23]可視化方法。它將目標(biāo)特征圖的融合權(quán)重表達(dá)為梯度,用梯度的全局平均來計(jì)算權(quán)重,求得各個(gè)類別對所有特征圖的權(quán)重后,再進(jìn)行加權(quán)和得到熱力圖(heatmap)。熱力圖可以直觀展示模型提取特征時(shí)關(guān)注的重點(diǎn),顏色越深,模型關(guān)注的越多,紅色部分(顏色最深的部分)代表模型關(guān)注的重點(diǎn)位置,如圖6所示。從圖6可以看出,YOLO v5+ECA模型在預(yù)測站立和飲水姿態(tài)時(shí),更加關(guān)注肉鵝的頸部以及足部特征,在預(yù)測休憩和梳羽姿態(tài)時(shí),更加關(guān)注其身體部位。
圖6 YOLO v5+ECA模型的預(yù)測圖像熱力圖Fig.6 Predicted image heatmap for YOLO v5+ECA model
同樣隨機(jī)挑選測試集中的1張白天圖像和1張夜晚圖像,利用YOLO v5和YOLO v5+ECA模型分別檢測后進(jìn)行對比,將各類姿態(tài)的檢測數(shù)自動(dòng)統(tǒng)計(jì)并顯示在檢測后的圖片上,如圖7所示。從圖7可以看出,改進(jìn)后的YOLO v5+ECA網(wǎng)絡(luò)的檢測精準(zhǔn)度更高,檢測到的姿態(tài)數(shù)更多,檢測效果更好。
圖7 改進(jìn)前、后YOLO v5模型的預(yù)測結(jié)果圖Fig.7 Prediction result images of YOLO v5 model before and after improvement
為了進(jìn)一步了解模型對于各姿態(tài)類別的識別效果,對改進(jìn)前、后模型對于不同姿態(tài)識別的AP進(jìn)行分析。從表3可見:站立姿態(tài)的識別AP最高達(dá)到91.85%,休憩姿態(tài)的識別AP最高為93.48%,飲水姿態(tài)的識別AP最高為93.00%,而梳羽姿態(tài)的識別最高只有80.42%。主要原因是肉鵝的梳羽姿態(tài)在特征上與站立和休憩均有一定的重合性,梳羽姿態(tài)包括站立時(shí)梳羽、休憩時(shí)梳羽的情形,并且訓(xùn)練集中站立和休憩姿態(tài)的數(shù)量要大于梳羽姿態(tài),其中,站立姿態(tài)有2 827個(gè),休憩姿態(tài)有6 481個(gè),而梳羽姿態(tài)只有1 722個(gè)。所以在預(yù)測時(shí),可能出現(xiàn)將梳羽姿態(tài)誤判為站立或休憩姿態(tài),從而導(dǎo)致梳羽姿態(tài)較低的識別精度。
2.3.1 明暗試驗(yàn)在大多數(shù)傳統(tǒng)的算法中,圖片亮度的影響一直都是算法檢測的一個(gè)問題。本研究同樣考慮亮度對模型可能帶來的影響,自制的訓(xùn)練集中包含400張白天圖像和400張夜晚圖像。為了測試模型對于亮度的敏感性,將測試集中的白天與夜晚圖片分開計(jì)算模型的mAP值,相關(guān)結(jié)果如表4所示。由表4可知,模型在明暗場景的姿態(tài)識別情況差異不大,并且加入注意力機(jī)制后,模型在白天和夜晚的場景中檢測精度均有所上升。
表3 改進(jìn)前、后YOLO v5模型對于肉鵝不同姿態(tài)的平均精度結(jié)果對比Table 3 Comparisons of average precision for different goose postures of YOLO v5model before and after improvement %
表4 改進(jìn)前、后YOLO v5模型的明暗試驗(yàn)識別結(jié)果Table 4 The identification results of light and dark experiments of YOLO v5 model before and after improvement %
2.3.2 密集場景試驗(yàn)密集場景試驗(yàn)是對模型小目標(biāo)檢測能力的考驗(yàn)。為了進(jìn)一步測試改進(jìn)后的YOLO v5+ECA模型對密集場景肉鵝姿態(tài)識別的能力,測試選取1張白天圖像,并且這張圖片不屬于測試集中的原有照片,可以驗(yàn)證模型的泛化能力。YOLO v5和YOLO v5+ECA模型在密集場景中進(jìn)行肉鵝姿態(tài)識別的預(yù)測如圖8所示,為了直觀對比模型的預(yù)測表現(xiàn),圖中黃色方框固定選取原圖中的一塊區(qū)域,并將該區(qū)域的部分誤檢漏檢情況展示在最右邊的灰色方格中。從圖8可以看出,在YOLO v5中出現(xiàn)了梳羽姿態(tài)誤檢為站立姿態(tài)以及站立姿態(tài)漏檢的問題,而在改進(jìn)后的YOLO v5+ECA模型均得到改善,改進(jìn)后的模型誤檢和漏檢現(xiàn)象減少,模型在密集場景下的表現(xiàn)有所提升。
圖8 改進(jìn)前、后YOLO v5模型的密集場景試驗(yàn)結(jié)果Fig.8 Dense scene experimental results of YOLO v5 model before and after improvement
本研究基于深度學(xué)習(xí)的方法,對YOLO v5算法引入注意力機(jī)制改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)。通過模型的基本測試以及魯棒性試驗(yàn)的對比,改進(jìn)后的YOLO v5+ECA模型能夠?qū)θ怡Z站立、休憩、飲水、梳羽這4種常見姿態(tài)進(jìn)行較為準(zhǔn)確的識別,平均檢測精度(mAP)達(dá)88.93%,相比YOLO v5提升2.27%,檢測速度為每秒30.92幀,提升4.22幀。站立、休憩、飲水的姿態(tài)識別AP都達(dá)到90%以上,梳羽姿態(tài)的識別AP值雖然只達(dá)到80.42%,但相比YOLO v5提升了6.07%。明暗試驗(yàn)和密集場景試驗(yàn)證明改進(jìn)后的YOLO v5+ECA模型在復(fù)雜場景下的檢測效果好,對光線的適應(yīng)性強(qiáng),漏檢和誤檢現(xiàn)象相對較少。
本文的研究雖然有了初步的成果,但仍有不足,今后在以下方面需要進(jìn)一步的完善與探索:1)由熱力圖分析出模型提取不同姿態(tài)特征的重點(diǎn),改進(jìn)肉鵝的圖像標(biāo)注以及實(shí)現(xiàn)對更多姿態(tài)的識別;2)在肉鵝姿態(tài)識別的基礎(chǔ)上增加視頻跟蹤技術(shù),進(jìn)行行為分析,為肉鵝的健康生長和異常行為預(yù)警提供更多數(shù)據(jù)。