蘇森,陳春雨,劉文龍,李誠(chéng)
哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001
近些年,我國(guó)的養(yǎng)殖業(yè)、畜牧業(yè)發(fā)展十分迅速,無(wú)論是從養(yǎng)殖質(zhì)量還是養(yǎng)殖結(jié)構(gòu),都在轉(zhuǎn)型為現(xiàn)代畜牧業(yè)方向。行業(yè)共識(shí)已經(jīng)發(fā)展為規(guī)模化,集約化。同時(shí),高污染、高耗能的小規(guī)模散養(yǎng)方式逐漸褪去市場(chǎng)優(yōu)勢(shì),最終將成為歷史[1]。隨著每年生豬出欄總數(shù)不斷達(dá)到歷史新高,至2018 年底,我國(guó)生豬全年產(chǎn)量已突破7.2 億頭,與2000 年比較,增速為41%[2]。然而,隨著養(yǎng)殖產(chǎn)業(yè)向著更大規(guī)模發(fā)展,傳統(tǒng)人工監(jiān)控、投料、飼養(yǎng)已經(jīng)無(wú)法滿足養(yǎng)殖的高效性。現(xiàn)代的、科學(xué)的生豬養(yǎng)殖模式被逐步推廣。通過(guò)觀察了解圈養(yǎng)生豬的生活習(xí)慣,發(fā)現(xiàn)生豬的姿態(tài)、行為與其情緒以及健康狀況都有一定的聯(lián)系[3]。例如,當(dāng)生豬出現(xiàn)長(zhǎng)期趴臥、食欲不振、離群活動(dòng)以及單獨(dú)休息等一些異常情況時(shí),極大可能表明該生豬出現(xiàn)了病情[4]。在傳統(tǒng)的生豬養(yǎng)殖產(chǎn)業(yè)中,生豬病情主要靠飼養(yǎng)員自主觀察判斷。對(duì)于大規(guī)模的養(yǎng)殖場(chǎng),這樣的工作不僅耗費(fèi)大量的人力,而且十分依賴于飼養(yǎng)員的個(gè)人素質(zhì)和知識(shí)儲(chǔ)備。即便如此,若想詳細(xì)地了解每一頭生豬的健康狀態(tài),仍然是一件非常困難的事情。養(yǎng)殖無(wú)人化是未來(lái)的大勢(shì)所趨,對(duì)于生豬研究的最終目的是用機(jī)器代替人進(jìn)行實(shí)時(shí)監(jiān)控、預(yù)警甚至處理,因此對(duì)生豬行為動(dòng)作的檢測(cè)很有研究?jī)r(jià)值。王傳哲等[5]通過(guò)可穿戴微慣性傳感器采集4 類動(dòng)作對(duì)應(yīng)的加速度、角速度和姿態(tài)角共6 000 組數(shù)據(jù),使用BP 神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練與推理。張聰[6]建立生豬體態(tài)12 種特征數(shù)據(jù)集,使用決策樹(shù)支持向量機(jī)對(duì)特征進(jìn)行分類。嵇楊培等[7]通過(guò)改進(jìn)YOLOv2 神經(jīng)網(wǎng)絡(luò)識(shí)別生豬進(jìn)食、飲水行為。
目前,隨著計(jì)算機(jī)硬件發(fā)展,尤其是圖形處理器(graphics processing unit,GPU)等運(yùn)算能力的提高,促進(jìn)了深度學(xué)習(xí)的發(fā)展和應(yīng)用。其中動(dòng)作識(shí)別是一個(gè)熱門的研究方向[8]。最常見(jiàn)的動(dòng)作識(shí)別方法應(yīng)用是將給定的視頻通過(guò)卷積網(wǎng)絡(luò)分類為確定的類別。然而實(shí)際應(yīng)用中視頻不僅存在多種類別的動(dòng)作,還有復(fù)雜的干擾背景[9]。本文使用二維卷積神經(jīng)網(wǎng)絡(luò)(2D-CNN)提取空間特征,三維卷積神經(jīng)網(wǎng)絡(luò)(3D-CNN)提取時(shí)序特征,將空間特征、時(shí)序特征相融合,提出了一種分析生豬在視頻中位置和運(yùn)動(dòng)狀態(tài)的方法。
本文采取的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。

圖1 本文提出的動(dòng)作識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)
整體設(shè)計(jì)在目標(biāo)檢測(cè)網(wǎng)絡(luò)YOLOv2 的基礎(chǔ)上,添加了1 路并行3D-CNN 支路提取時(shí)序特征信息,2D-CNN 提取空間位置信息。2 路特征融合時(shí),使用通道注意力模塊,使2 路特征進(jìn)行充分的關(guān)聯(lián),最后通過(guò)一個(gè)卷積層得到邊界框預(yù)測(cè)、分類的輸出。
1.1.1 特征提取網(wǎng)絡(luò)
由于時(shí)間序列信息對(duì)豬的行為理解十分重要,故本文網(wǎng)路結(jié)構(gòu)使用3D-CNN 來(lái)提取時(shí)空特征。其計(jì)算過(guò)程如圖2 所示。

圖2 3D-CNN 計(jì)算過(guò)程
采用連續(xù)視頻幀數(shù)據(jù)提取特征時(shí),將多幀數(shù)據(jù)拼接為一個(gè)數(shù)據(jù)長(zhǎng)方體,同時(shí)卷積核也具有3 個(gè)維度,三維卷積核在數(shù)據(jù)長(zhǎng)方體中有3 個(gè)滑動(dòng)的方向,利用這種結(jié)構(gòu)和計(jì)算方式,多個(gè)相鄰幀的特征會(huì)映射到同一個(gè)輸出,從而獲得時(shí)序運(yùn)動(dòng)信息。并行3D 支路輸入的是視頻數(shù)據(jù),如圖1所示。在本文中3D 支路輸入16 幀視頻序列,在計(jì)算量方面,3D-CNN 相對(duì)2D-CNN 計(jì)算量較大,訓(xùn)練、推理耗時(shí)較長(zhǎng),所以本文3D-CNN 主干網(wǎng)絡(luò)為3D-MobileNet。
2D-CNN 解決空間定位問(wèn)題,視頻序列最后一幀作為關(guān)鍵幀輸入2D 支路,2D-CNN 計(jì)算過(guò)程如圖3 所示。卷積核具有2 個(gè)維度,只在2 個(gè)方向上運(yùn)動(dòng),可以提取二維圖像中目標(biāo)的特征。本文使用的主干網(wǎng)絡(luò)為Darknet-19,能很好地平衡準(zhǔn)確率和速率之間的關(guān)系。

圖3 2D-CNN 計(jì)算過(guò)程
1.1.2 通道注意力模塊
為了使2D 支路和3D 支路的輸出特征圖平滑地融合,本文將3D-CNN 輸出的特征圖壓縮一個(gè)維度,使其最后2 個(gè)維度和2D 支路輸出相等,然后沿著通道方向?qū)? 路特征圖進(jìn)行拼接。這2 路特征包含了位置空間信息和時(shí)序運(yùn)動(dòng)信息。但是這2 路特征沒(méi)有進(jìn)行很好地聯(lián)系融合,故使用了通道注意力模塊,這種注意機(jī)制有利于合理融合來(lái)自不同來(lái)源的特征,顯著地提高了整體性能,通道注意力模塊結(jié)構(gòu)如圖4 所示。

圖4 通道注意力模塊
圖中B∈RC×H×W。

式中:C為通道數(shù),H為特征圖的高,W為特征圖的寬。
通過(guò)將特征圖B維度減少一維,變?yōu)榫仃嘑。然后對(duì)F與其轉(zhuǎn)置FT進(jìn)行矩陣積的操作:

得到矩陣G,它表示了不同通道的特征聯(lián)系。G中每個(gè)元素表示每個(gè)通道特征向量化映射i和j之間的內(nèi)積,具體表現(xiàn)形式為

對(duì)矩陣G進(jìn)行softmax 操作生成矩陣M,其中每個(gè)元素Mij是評(píng)判第j個(gè)通道對(duì)第i個(gè)通道影響的程度,所以矩陣M代表通道之間的聯(lián)系程度:

使注意力模塊與原始特征圖相結(jié)合,將矩陣M與矩陣F進(jìn)行矩陣乘法得到矩陣F′:

將矩陣F′增加一個(gè)維度與注意力模塊原始輸入特征圖B維度相等:

原始輸入特征圖B與F′′相結(jié)合,α為可學(xué)習(xí)的參數(shù),初始值為零:

輸入特征圖O的每個(gè)通道的特征是所有通道的特征和原始特征的加權(quán)和。這樣的網(wǎng)絡(luò)結(jié)構(gòu)涉及到了所有通道的特征圖,使2D 支路和3D 支路更加平滑且合理的融合,增強(qiáng)了特征識(shí)別的能力。
本文采用了YOLOv2 目標(biāo)檢測(cè)算法進(jìn)行動(dòng)作的分類和包圍框的回歸[10],該方法是2016 年Redmon 等[11]提出的YOLO 目標(biāo)檢測(cè)算法的改進(jìn)版本,算法在速度上大幅提升。該方法的缺點(diǎn)是小目標(biāo)檢測(cè)能力相對(duì)較弱。本文所使用的數(shù)據(jù)集中只對(duì)某一欄生豬進(jìn)行檢測(cè),其體積相差不大,不存在小目標(biāo)的情況,且監(jiān)控視頻需要在嵌入式設(shè)備中實(shí)時(shí)檢測(cè),所以本文使用的方法是基于YOLOv2 目標(biāo)檢測(cè)算法進(jìn)行設(shè)計(jì)。
包圍框回歸與YOLOv2 方法遵循相同準(zhǔn)則,對(duì)于網(wǎng)絡(luò)輸出特征圖的每個(gè)網(wǎng)格,使用k-means算法在訓(xùn)練集聚類出5 個(gè)先驗(yàn)包圍框,使網(wǎng)絡(luò)最終輸出的特征大小為[5×(Nc+5)×7×7],其中N代表數(shù)據(jù)集有Nc個(gè)動(dòng)作類別,此外還有包圍框4 個(gè)坐標(biāo)和前景概率得分,根據(jù)所得這些參數(shù)對(duì)包圍框回歸與動(dòng)作分類[12]。
包圍框回歸采用Smooth L1 損失函數(shù),其對(duì)異常值敏感度較低,防止梯度爆炸。前景概率得分采用L2 損失函數(shù),優(yōu)點(diǎn)為收斂速度較快,加快了訓(xùn)練的時(shí)間。分類概率使用Focalloss 損失函數(shù)解決類別不平衡問(wèn)題:

式中:y′為預(yù)測(cè)值;y為真實(shí)值;1 和0 分別為正例和負(fù)例;γ、α為權(quán)重影響因子,表示正例或負(fù)例對(duì)權(quán)重的影響程度,用來(lái)平衡樣本不平衡的問(wèn)題,需要預(yù)先設(shè)置參數(shù)。
樣本越容易檢出,則其貢獻(xiàn)的損失就越少,同時(shí),較難檢測(cè)出的樣本對(duì)于權(quán)重更新的比重就會(huì)變大[13]。
目前,關(guān)于生豬的動(dòng)作姿態(tài)研究較少,相關(guān)公開(kāi)數(shù)據(jù)集難以獲得,所以本文的數(shù)據(jù)集通過(guò)采集某生豬養(yǎng)殖場(chǎng)真實(shí)數(shù)據(jù),并通過(guò)人工標(biāo)注的方法進(jìn)行制作。采集2 個(gè)群養(yǎng)欄共12 段監(jiān)控視頻,總計(jì)1 456 f,圖片分辨率大小為320× 240。動(dòng)作分為躺臥、站立和移動(dòng)3 類。
2.2.1 實(shí)驗(yàn)環(huán)境和設(shè)置
本文訓(xùn)練的設(shè)備參數(shù)如下:Ubuntu 18.04,顯卡為GTX1080,顯存8 G,CPU 為i7-8700K,內(nèi)存16 GB。
在模型參數(shù)設(shè)置上,模型輸入圖片分辨率大小為224 ×224。權(quán)重更新方法采用具有動(dòng)量的小批量隨機(jī)梯度下降算法,動(dòng)量值為0.9,學(xué)習(xí)率初始值為0.000 1。由于數(shù)據(jù)集較小,在1 000、2 000、3 000 和4 000 代后,學(xué)習(xí)率每次衰減一倍。實(shí)驗(yàn)代碼基于深度學(xué)習(xí)框架PyTorch,實(shí)現(xiàn)模型端到端的訓(xùn)練。測(cè)試中,只檢測(cè)置信度大于0.25 的包圍框,使用非極大值抑制(non-maximum suppression,NMS)對(duì)包圍框進(jìn)行處理,交并比(intersection over union,IOU)閾值為0.4。
2.2.2 數(shù)據(jù)集包圍框聚類
為了檢測(cè)出的包圍框和實(shí)際標(biāo)注的包圍框有更大的IOU,訓(xùn)練時(shí)加速收斂,對(duì)標(biāo)注的包圍框尺寸進(jìn)行k-means 聚類操作。對(duì)數(shù)據(jù)集包圍框的尺寸數(shù)據(jù)和聚類中心坐標(biāo)數(shù)據(jù)進(jìn)行可視化,如圖5所示。

圖5 生豬動(dòng)作數(shù)據(jù)集檢測(cè)框聚類
數(shù)據(jù)點(diǎn)橫縱坐標(biāo)是包圍框所占圖像像素的大小,從圖5 中可以看出,自制生豬動(dòng)作數(shù)據(jù)集包圍框大部分分布在20 ×20 到70 ×120 之間,較小尺寸的包圍框所占比例也較小。
2.2.3 并行3D-CNN 有效性實(shí)驗(yàn)
在連續(xù)輸入16 f 的情況下,對(duì)不同網(wǎng)絡(luò)組合結(jié)構(gòu)的模型進(jìn)行測(cè)試。評(píng)價(jià)標(biāo)準(zhǔn)為各個(gè)類別的平均準(zhǔn)確率(AP0.5),下標(biāo)代表檢測(cè)出的包圍框與真實(shí)標(biāo)注值IOU 閾值為0.5。由于自制數(shù)據(jù)集數(shù)據(jù)量相對(duì)較少,容易產(chǎn)生過(guò)擬合現(xiàn)象,本次實(shí)驗(yàn)中3D 支路迭代1 000 次后,3D 支路參數(shù)停止更新,只更新2D 支路的參數(shù)。
測(cè)試結(jié)果如表1 所示。只使用2D 網(wǎng)絡(luò)檢測(cè)指標(biāo)比較低,這是因?yàn)闆](méi)有結(jié)合時(shí)序特征信息,單純使用3D 網(wǎng)絡(luò);AP0.5明顯優(yōu)于2D 網(wǎng)絡(luò),說(shuō)明3D 網(wǎng)絡(luò)在獲取時(shí)序動(dòng)作特征時(shí)更具優(yōu)勢(shì),更加關(guān)注于運(yùn)動(dòng)的過(guò)程,但是時(shí)間序列中生豬的位置變動(dòng)會(huì)導(dǎo)致定位能力下降;而在2D 和3D 網(wǎng)絡(luò)相結(jié)合時(shí),將關(guān)鍵幀的空間位置信息和時(shí)間序列動(dòng)作信息結(jié)合,檢測(cè)指標(biāo)有一定的提升。對(duì)于本文數(shù)據(jù)集所涉及的躺臥、站立和移動(dòng)3 種動(dòng)作,其中移動(dòng)動(dòng)作具有更多的時(shí)序信息,所以(表1)使用3DCNN 后,移動(dòng)動(dòng)作AP0.5提高最多。

表1 不同網(wǎng)絡(luò)結(jié)構(gòu)實(shí)驗(yàn)結(jié)果
該實(shí)驗(yàn)證明了在目標(biāo)檢測(cè)網(wǎng)絡(luò)中,添加3DCNN 提取時(shí)序信息,有助于時(shí)空動(dòng)作識(shí)別和定位。
2.2.4 通道注意力模塊實(shí)驗(yàn)
2D 支路與3D 支路特征融合時(shí),本文使用了通道融合注意力機(jī)制。如表2 所示,該實(shí)驗(yàn)研究了通道注意力模塊對(duì)檢測(cè)結(jié)果的影響。結(jié)果表明通道注意力模塊對(duì)特征融合具有積極作用。

表2 通道注意力模塊對(duì)網(wǎng)絡(luò)的影響
2.2.5 不同序列采樣間隔實(shí)驗(yàn)
模型輸入為不同采樣間隔的視頻序列,輸入跨度為16 f,序列保留最后一幀作為關(guān)鍵幀輸入2D 支路。實(shí)驗(yàn)結(jié)果如表3 所示。

表3 視頻序列采樣間隔網(wǎng)絡(luò)實(shí)驗(yàn)效果
采樣間隔為1 時(shí),AP0.5優(yōu)于連續(xù)輸入16 f,該實(shí)驗(yàn)表明了對(duì)于本文所采用的生豬動(dòng)作數(shù)據(jù)集中視頻幀之間存在冗余信息。
采樣間隔繼續(xù)增大到2 時(shí),移動(dòng)動(dòng)作AP0.5開(kāi)始下降,而靜止動(dòng)作躺臥、站立的AP0.5基本保持不變或略有上升。這表明檢測(cè)靜態(tài)動(dòng)作時(shí),2D 圖像就可以提取足夠的特征信息;而對(duì)于動(dòng)態(tài)動(dòng)作,需要有足夠的時(shí)序信息。
采樣間隔繼續(xù)增大到3 時(shí),3D 支路實(shí)際輸入的視頻序列只有5 f,這時(shí)各個(gè)動(dòng)作的AP0.5都有下降,但是與表1 所得結(jié)果相比,仍然優(yōu)于只使用2D 支路的網(wǎng)絡(luò)結(jié)構(gòu)。
本文針對(duì)生豬動(dòng)態(tài)運(yùn)動(dòng)特征,采用了并聯(lián)一路3D 網(wǎng)絡(luò)和一個(gè)用于融合不同特征的注意力機(jī)制,提出了一種結(jié)合時(shí)空信息的動(dòng)作識(shí)別與定位的方法。
1)本文通過(guò)實(shí)驗(yàn)證明了3D 加2D 的特征提取網(wǎng)絡(luò)結(jié)構(gòu)和通道注意力機(jī)制在生豬動(dòng)作的時(shí)空定位任務(wù)上具有充分的有效性。
2)將深度學(xué)習(xí)技術(shù)運(yùn)用到生豬的動(dòng)作識(shí)別,有利于實(shí)際的應(yīng)用。
3)本文算法適用于目標(biāo)相對(duì)較大的場(chǎng)景,針對(duì)小目標(biāo)檢測(cè)問(wèn)題還有研究空間。
接下來(lái)還可以考慮使用FPN 結(jié)構(gòu)優(yōu)化小目標(biāo)檢測(cè)能力,提高算法在不同場(chǎng)景下的泛化能力和魯棒性。另外3D 卷積參數(shù)量巨大,計(jì)算時(shí)間較長(zhǎng),因此對(duì)模型的壓縮剪枝也將成為未來(lái)研究的重點(diǎn)。