宋著福,王順利,孫 倩,鞠 林,王秀麗*,李 丹,曾勇慶*
(1.山東農(nóng)業(yè)大學(xué)信息科學(xué)與工程學(xué)院,山東 泰安 271018;2.山東農(nóng)業(yè)大學(xué)動物科技學(xué)院,山東 泰安;3.山東醫(yī)藥技師學(xué)院,山東 泰安)
豬的養(yǎng)殖是我國畜牧業(yè)養(yǎng)殖中十分關(guān)鍵的組成部分,對豬的健康狀況進行實時監(jiān)測是生產(chǎn)管理的重要環(huán)節(jié)。豬的某些行為和姿態(tài)往往是其健康出現(xiàn)異常的反應(yīng),如蜷縮身體、一直側(cè)臥等,因此在養(yǎng)殖過程中實時監(jiān)控豬只的行為姿態(tài)有重要的意義[1]。目前監(jiān)管豬場的任務(wù)大多采用人為監(jiān)控的方式進行豬的健康監(jiān)管,存在較高的主觀因素且時間成本較高[2]。
隨著計算機視覺領(lǐng)域的不斷發(fā)展以及算力水平的不斷提高,計算機視覺技術(shù)廣泛應(yīng)用在養(yǎng)殖業(yè)中。目前,基于深度學(xué)習(xí)的計算機視覺在豬只檢測領(lǐng)域取得了較好成果。楊阿慶[3]等提出一種基于色調(diào)信息輔助的深度學(xué)習(xí)網(wǎng)絡(luò)進行母豬圖像分割模型并提出自適應(yīng)局部時空特征的母豬哺乳行為分類方法。薛月菊[4]等提出基于改進Faster R-CNN 的哺乳母豬姿態(tài)識別算法,提高識別精度的同時保證了實時性。李丹[5]等提出一種基于Mask R-CNN 的豬只爬跨行為識別算法,自動有效地檢測豬只爬跨行為。李菊霞[6]等利用YOLOv4 深度學(xué)習(xí)網(wǎng)絡(luò)的深層次特征提取和高精度檢測分類特性,對豬只飲食行為進行檢測。Li[7]等基于改進后YOLOv4 進行豬只身份的識別,提高了檢測速度和準(zhǔn)確度。季照潼[8]等通過YOLOv4 模型對豬只的躺臥、站立、進食、坐立和侵略性行為進行識別,達到了較好的識別效果。丁奇安[9]等將YOLOv5 網(wǎng)絡(luò)量化后部署在Jetson Nano 端,對哺乳期仔豬實現(xiàn)了精準(zhǔn)檢測。
本文旨在使用目標(biāo)檢測的方法,通過在豬舍安裝?ntel Realsense D455 相機獲取豬只行為數(shù)據(jù)集信息,采用CBAM 注意力機制[10]優(yōu)化YOLOv5 網(wǎng)絡(luò)模型,對豬只行為進行識別。技術(shù)路線如圖1 所示,主要包括以下幾個環(huán)節(jié):數(shù)據(jù)采集與處理,在采集的視頻中提取關(guān)鍵幀,對關(guān)鍵幀使用數(shù)據(jù)增強方式構(gòu)建豬只數(shù)據(jù)集;基于改進的 YOLOv5 模型的豬只行為識別,對模型進行訓(xùn)練;分析檢測結(jié)果,為豬只養(yǎng)殖信息化提供理論依據(jù)與參考。
圖1 嵌入CBAM 注意力模塊的YOLOv5 網(wǎng)絡(luò)模型結(jié)構(gòu)
1.1.1 實驗圖像數(shù)據(jù)集采集 本研究使用?ntel Realsense D455 相機持續(xù)31 d 拍攝豬舍中豬的行為活動,選取每天不同時間段保存視頻信息,共錄制1 800 組圖像視頻序列。通過python 腳本每隔30 幀記錄一次圖像數(shù)據(jù)構(gòu)建圖像數(shù)據(jù)集,圖像數(shù)據(jù)集中刪除相似程度大于60%的數(shù)據(jù),降低豬只運動緩慢導(dǎo)致的冗余數(shù)據(jù),根據(jù)不同的光照強度篩選出2 243 張數(shù)據(jù)樣本。
1.1.2 數(shù)據(jù)集圖像增強 使用Label?mg 標(biāo)注豬日常生活中頻率較多的三種行為:站立行為(standing)、伏地行為(lying)、坐行為(sitting)。使用Mosaic 數(shù)據(jù)增強,通過隨機的縮放、裁剪反轉(zhuǎn)和排布構(gòu)成新的數(shù)據(jù)圖像,擴充數(shù)據(jù)集。
1.2.1 模型改進 為提高網(wǎng)絡(luò)模型對豬只行為的特征提取能力,采用CBAM 注意力機制優(yōu)化YOLOv5 網(wǎng)絡(luò)模型。注意力機制使網(wǎng)絡(luò)專注于某個特定部分,弱化檢測目標(biāo)無關(guān)的區(qū)域。CBAM網(wǎng)絡(luò)結(jié)構(gòu)的注意力體現(xiàn)在通道和空間兩個部分,特征融合效果較好。
通道注意力機制可以增強網(wǎng)絡(luò)模型的分類能力。在網(wǎng)絡(luò)模型中有多次卷積操作,每次卷積都會產(chǎn)生特征圖進而產(chǎn)生很多通道,但并不是所有通道都包含有效的信息,因此使用通道注意力可以更好地突出目標(biāo)的特征。首先對輸入的特征圖分別進行Max Pooling 和Avg Pooling 操作,獲得通道之間的全局信息,通過多層感知器獲取每個通道的權(quán)重,然后進行加權(quán)運算輸出通道注意力信息。
空間注意力機制可以增強網(wǎng)絡(luò)模型的定位能力,提高檢測過程的位置預(yù)測精度,在保證關(guān)鍵特征的前提下將特征圖的位置生成權(quán)值并加權(quán)輸出,達到增強特定位置的特征信息的目的。首先對通道注意力輸出的特征信息進行Max Pooling和Avg Pooling,將池化后的融合特征通過一個大小為7×7 卷積核進行融合,然后使用Sigmoid 激活函數(shù)生成權(quán)重與原始特征進行疊加輸出空間注意力信息。
本文將CBAM 模塊嵌入到Y(jié)OLOv5 模型的每個CSP 結(jié)構(gòu)的后面,整體網(wǎng)絡(luò)不做其他變動,改進后的網(wǎng)絡(luò)模型有效地提高了豬只行為的特征信息在通道和空間聯(lián)系。嵌入CBAM 注意力模塊的YOLOv5 網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1 所示。
1.2.2 模型訓(xùn)練 模型訓(xùn)練結(jié)束后,使用最優(yōu)權(quán)重推理出豬只行為,推理結(jié)果如圖2 所示,訓(xùn)練的模型準(zhǔn)確率均在90%以上,擬合效果較好。
圖2 模型推理結(jié)果
模型訓(xùn)練的硬件環(huán)境:CPU 為?ntel(R)Core(TM)i5-8265U CPU 1.60 GHz,GPU 為NV?D?A GeForce 940Mx,計算機內(nèi)存大小為8 G。軟件環(huán)境:集成開發(fā)環(huán)境為Anaconda,深度學(xué)習(xí)框架為PyTorch。模型訓(xùn)練的部分超參數(shù):epochs 為50,batch_size 為8,img-size 為640×640,learning_rate 為0.0001,workers 為8。
為正確客觀地評價CBAM 注意力機制優(yōu)化后的YOLOv5 網(wǎng)絡(luò)模型的擬合能力,本文引用的模型評估指標(biāo)為交并比 ?oU、模型準(zhǔn)確率Precision 和召回率Recall。
交并比表示模型預(yù)測邊界框和真實數(shù)據(jù)邊界框之間的交集面積與并集面積之比,交并比?oU計算公式見公式(1):
式(1)中P 表示模型預(yù)測的邊界框,R 表示實際邊界框。當(dāng)P 的邊界框與R 的邊界框重合度越高時,即?oU 值越趨于1 時,表明網(wǎng)絡(luò)的檢測效果越好。
混淆矩陣定義如表 1 所示,在本文中Positive 表示的是豬的真實行為的正樣本、Negative 表示不是豬的真實行為的負(fù)樣本,TP 表示樣本中檢測到豬的行為并且成功預(yù)測豬行為的數(shù)量,F(xiàn)P 表示檢測到豬的行為但預(yù)測錯誤的豬行為的數(shù)量,F(xiàn)N 表示沒有檢測到豬有某種行為但樣本存在豬某種行為的數(shù)量,TN 表示檢測到豬的某種行為但樣本中豬沒有該行為的數(shù)量。
表1 混淆矩陣定義
準(zhǔn)確率的含義為所有預(yù)測結(jié)果中成功預(yù)測豬的行為占所有預(yù)測結(jié)果中的比例,準(zhǔn)確率Precision 的計算公式見公式(2):
召回率為所有預(yù)測為正的樣本中實際為正樣本的比例,召回率 Recall 的計算公式見公式(3):
平均精度AP(Average Precision)表示預(yù)測類中每個召回率中最大精確率的平均數(shù)。mAP(mean Average Precision)為各個預(yù)測類的平均精度,在本文豬只行為識別問題中,預(yù)測類根據(jù)行為分為站立行為(standing)、伏地行為(lying)、坐行為(sitting)。
模型評估結(jié)果如圖3 所示。由準(zhǔn)確率迭代曲線可知,隨著迭代次數(shù)的增加,模型識別的準(zhǔn)確率在第0~10 個epoch 上下浮動,第10~20 個epoch 逐漸上升,最后迭代曲線收斂于95%,說明本模型的準(zhǔn)確率在訓(xùn)練集約在95%左右。由召回率迭代曲線可知,召回率在第20 個epoch 后收斂,收斂于90%左右。由mAP 0.5 迭代曲線和mAP 0.5:0.9 迭代曲線可知,隨著網(wǎng)絡(luò)訓(xùn)練的迭代次數(shù)不斷增加,均值平均精確度0.5 逐漸收斂于95%,均值平均精確度0.5:0.9 也在第35 個epoch中收斂到88%左右。
圖3 模型評估結(jié)果圖
通過分析訓(xùn)練過程的準(zhǔn)確率、召回率以及mAP 迭代曲線可以得出,采用CBAM 網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化的YOLOv5 網(wǎng)絡(luò)模型的訓(xùn)練效果非常理想,網(wǎng)絡(luò)模型均在第35 個epoch 前收斂,對豬只行為識別的準(zhǔn)確度高,可以較好地完成豬只行為識別檢測任務(wù)。
基于豬只行為識別模型,對豬只行為識別需求進行分析,使用PyQt 庫開發(fā)了豬只行為識別可視化系統(tǒng),可以對豬只圖片和視頻進行檢測,實時顯示檢測結(jié)果中的豬只行為信息。系統(tǒng)的數(shù)據(jù)讀取與參數(shù)設(shè)置模塊,讀取待檢測的豬只視頻或圖片文件,設(shè)置檢測過程中的相關(guān)參數(shù)。檢測結(jié)果顯示模塊顯示檢測的目標(biāo)文件和檢測結(jié)果。豬只行為統(tǒng)計模塊顯示當(dāng)前豬的行為及該行為豬的個數(shù)。
豬只行為檢測可視化系統(tǒng)使用便捷,選擇需要檢測的圖片或者視頻,設(shè)置相應(yīng)的?oU 值和置信度值(圖4)。檢測完成后,在右側(cè)顯示檢測結(jié)果,包括當(dāng)前檢測文件中豬的行為以及該行為的置信度,當(dāng)前測試數(shù)據(jù)測試出的結(jié)果置信度都在90%以上。視頻檢測時可選擇是否啟用幀間延時,達到更穩(wěn)定的視頻檢測效果。在視頻檢測過程中會出現(xiàn)視頻播放的進度條,左上角會顯示幀率,也可以點擊暫停來觀看當(dāng)前幀的檢測結(jié)果。經(jīng)試驗測試表明,本文設(shè)計的豬只行為檢測系統(tǒng)可以滿足日常的使用需求,實現(xiàn)了對豬只行為檢測的可視化操作。
圖4 豬只行為的視頻檢測結(jié)果
在豬只的養(yǎng)殖過程中,不僅要提供適宜的環(huán)境,充足的養(yǎng)料,還要對豬只的健康狀況進行高效準(zhǔn)確的監(jiān)測,豬只的異常行為與健康狀況有緊密的聯(lián)系。使用傳統(tǒng)人工方式監(jiān)測豬只行為效率低下,監(jiān)管成本較高,不利于養(yǎng)殖效益的提高。而基于深度學(xué)習(xí)的豬只行為識別技術(shù)可實現(xiàn)自動化的監(jiān)測,大大提高了管理效率,對豬只養(yǎng)殖業(yè)的發(fā)展有重要意義。
本文采用CBAM 注意力機制優(yōu)化YOLOv5算法并訓(xùn)練豬只行為識別模型,在測試集的識別準(zhǔn)確率達到93%,在研發(fā)的豬只行為識別可視化系統(tǒng)運行,研究成果對豬的生產(chǎn)和基于深度學(xué)習(xí)的豬只識別研究具有一定的價值。在光線條件較暗的情況下,豬只行為識別結(jié)果的準(zhǔn)確率稍低,后續(xù)需要增加光線較暗的豬只數(shù)據(jù)集并通過優(yōu)化網(wǎng)絡(luò)模型等方式提高識別的準(zhǔn)確率。