孫云濤 ,何秀文 ,黃 巍 ,彭興鵬 ,羅世林 ,劉仁鑫
(江西農業大學工學院,江西 南昌 330045)
隨著計算機技術的發展,“機器視覺”與“深度學習”的概念開始在各個行業掀起浪潮。近年來,動物福利成為國內、國際的熱議話題[1],因此生豬養殖也開始朝著“智能養豬”方向發展,由此產生了精細畜牧業[2]這一養殖概念。在現代化大規模養豬場中,機器視覺已經開始運用于各個方面,在體重預測、豬只在欄內狀況、豬只出欄盤點等方面都有不錯的發揮。如今大部分豬舍對豬只數量的盤點仍舊依靠飼養員人工進行,這對飼養員的眼力要求十分高。在進行大規模盤點時,大量生豬數據的匯總可能會導致飼養員出現計算錯誤,并且傳統的計數方式需要耗費大量的時間和人力去進行統計。利用語義分割對豬欄中的豬進行計數,不僅耗時短,不需要過多的飼養員一個一個欄進行計數,大大降低了時間和人工成本,提高了養豬場的經濟效益;而且減少了飼養員與豬只的直接接觸,更滿足“動物福利化”的養殖需求。
在計算機視覺中,語義分割是一個十分重要的方向。隨著全卷積神經網絡(CNN)[3]的提出,傳統的圖像分割方法逐漸被諸如FCN、U-Net、DeepLab等高效率的語義分割方法所替代。本文針對群豬圖像使用了DeepLab系列分割方法。
DeepLab V3+[4]網絡模型屬于DeepLab系列之一,是在DeepLab V3 模型的基礎上進行了升級,相較于V3,V3+模型將整個V3 網絡作為編碼器,并且將編碼器所得的特征圖提取出來對其進行多次卷積和上采樣操作,最后得到預測值。其原理如圖1所示。

圖1 DeepLab V3+原理圖
DeepLab V3+的解碼器對編碼器得到的特征圖分別進行1×1 的卷積,將主干網絡Xception 的特征層進行1×1 的卷積操作來改變原有通道數,再進行4 倍的上采樣得到新特征圖,與之前1×1 卷積得到的特征圖融合并進行一次3×3 卷積和4 倍上采樣,最終獲得預測值。
DeepLab V3+作為DeepLab 系列最新的網絡模型,在語義分割方面已經可以達到比較高的精度,但其使用的Xception 主干網絡在運行時會消耗大量的顯存,并且運行速度慢,會耗費大量的時間。
在豬欄監控豬只行為時,需要準確快速地反映豬只當前狀態,因此Xception[5]主干網絡精度足夠但響應速度還不夠快。于是本文引入了更輕量級的網絡Mobilenet V2,該網絡使用輕量級depthwise卷積[6]來過濾中間擴張層的特征,去除了窄層中的非線性激活函數[7],由此提升了運行速度。
1.3.1 混合注意力機制
將通道注意力與空間注意力互相串聯或者并聯組合后得到混合注意力機制[8],由于其更注重獲取通道維度和空間維度上的特征,因此可以靈活應用于卷積神經網絡以提高其表達能力。其工作原理如圖2所示。

圖2 CBAM原理圖
其公式如式(1)、式(2)所示:
其中,F'為一維通道圖,F''為二維空間圖,F∈RC×H×W,Mc∈RC×1×1,Ms∈R1×H×W。
1.3.2 通道注意力機制
人類在捕捉較為顯眼的特征時,注意力起到了極其重要的作用。近年來,注意力機制不斷被研究人員加入到卷積神經網絡中,用來加強卷積神經網絡對圖像特征的提取精度。通道注意力機制[8]是通過組合通道圖中的特征來選擇有所關聯的通道圖。其原理如圖3所示。

圖3 CAM原理圖
運行步驟如下:將特征圖F(H×W×C)輸入,H為特征圖的高度,W為特征圖的寬度,C為特征圖的通道數。將F進行全局最大池化和全局平均池化,得到Fmax和Favg,二者相加后將得到的結果輸入MLP(雙層神經網絡),經過Sigmoid 函數計算得到Mc,對原始F進行復制操作得到Fe,將Mc與Fe相乘,最終得到所需要的輸出特征圖。計算公式如式(3)、式(4)所示:
其中,W0為第一層網絡,W1為第二層網絡,W0∈RC/r×C,W1∈RC×C/r,σ為Sigmoid函數,Fed為最終輸出圖。
1.3.3 空間注意力機制
在卷積神經網絡中,圖像特征在網絡的不同階段有著不同的表現能力[9]。由于圖片中含有大量的背景特征信息,在很大程度上影響了圖像的分割精度;將直接獲取的低級特征作為輸入圖,也會對圖像的分割精度造成影響。空間注意力機制[8]可以有效地解決這一問題,空間注意力機制可以利用高級特征將大量的無用的背景特征濾去,使神經網絡更聚焦于目標區域特征,有助于獲得更高的精度效果。
其工作步驟如下:空間注意力機制得到輸入值F后,將其進行最大池化和平均池化,將得到的兩個層拼接并進行卷積得到Fc,接著對Fc進行Sigmoid 函數處理得到最終圖。其運行原理圖如圖4 所示。

圖4 SAM原理圖
其公式如式(5)所示:
其中,k設置為7,σ為Sigmoid 函數,Ms(F)為最終輸出。
最終模型原理圖如圖5 所示。

圖5 改進后DeepLab V3+原理圖
本文試驗所使用的CPU 為Intel(R) Core(TM)i7-9700F,內存8 GB,GPU 為NVIDIA GeForce RT X 2 0 7 0 S U P E R,內存1 2 G B,開發環境為Tensorflow2.2.0,Cuda10.1,python3.7。
目前能找到的關于豬的數據集都是單只,不符合本文試驗要求。因此,本試驗的所有數據均來自江西省九江市瑞昌市洪一鄉綠色巨農養殖場,使用??低晹z像頭,將攝像頭置于豬欄上方,拍攝豬只活動視頻,并將視頻剪輯成圖片,篩選清晰的原始圖片共640張。
本文試驗采用的數據集格式為j s o n,利用Labelme 標注工具對豬只進行標注,豬欄構成簡單,因此只有“pig”一個標簽文件,如圖6 所示。利用程序獲取標簽文件的png 格式圖,如圖7 所示。將數據集以7∶3的比例分為訓練集與驗證集。

圖6 標簽文件

圖7 png文件
為防止過擬合訓練,提高模型的分割精度,同時也為了增加圖片數量,對原始數據集進行高斯濾波、亮度處理、隨機裁剪、隨機翻轉等操作,進行數據加強,圖像數量擴充為1 920 張。由于標簽文件只有“pig”一個類別,因此在訓練時將DeepLab V3+模型中的類別更改為2,包含“pig”以及“background”。損失函數為交叉熵損失函數(Cross Entropy Loss),如式(6)所示;Freeze_Epoch=50,batch_size 為6,UnFreeze_Epoch=100,batch_size為3。
式中,N為batch_size數值,m為樣本數量。
語義分割常用的評價指標為交并比(Intersection over Union, IoU)、平均交并比(Mean Intersection over Union, MIoU)、像素準確率(Pixel Accuracy, PA)、類別像素準確率(Class Pixel Accuracy, CPA)、類別平均像素準確率(Mean Pixel Accuracy, MPA)[10]。
其中,pij指本是i類卻被預測為j類的像素數量,pji相反;pii為預測正確的像素數量。
分別對原始模型以及改進后的模型進行比對,如圖8、圖9所示。

圖8 Loss對比圖

圖9 MIoU對比圖
由圖8 和圖9 可知,將Xception 作為主干網絡的模型在訓練損失值以及平均交并比(MIoU)的評估中均優于改進后的模型,加入注意力機制后的V2+SE模型優于V2模型。具體參數如表1所示。

表1 各模型指標比對圖
從表1 可以看出,在精度上,改進后的V2 模型稍弱于原始模型,加入注意力機制后的模型又優于V2 模型0.48%而弱于原始模型2.97%,但在響應速度上,改進后的模型速度提升了38.77%。在分割效果上,三個模型的差距并不是很大,具體如圖10所示。

圖10 各模型分割效果對比圖
豬只是好動的,在豬舍中會經常性移動,所以需要快速地捕捉豬只圖像并進行分割,因此在保持一定精度的前提下,響應速度是十分重要的指標。改進后的模型犧牲了小部分的精度,大大提高了分割速度,而犧牲的精度并不會大幅度影響分割效果。
1)提出了利用Mobilenet V2 主干網絡代替Xception 主干網絡的改進模型,并進一步提出將通道注意力機制運用于低級特征的提取以及將空間注意力機制運用于高級特征的提取。
2)去養豬場實地采集了數據并利用Labelme 標注軟件制作了屬于自己的數據集,分別利用原始模型和改進后的模型進行了三次試驗。結果顯示,相較于原始模型,改進后的模型精度略有下降,但是響應速度大幅提升,滿足了豬舍監控分割速度快的需求。