沈明霞 太 猛 CEDRIC Okinda 劉龍申 李嘉位 孫玉文
(1.南京農業大學工學院, 南京 210031; 2.江蘇省智能化農業裝備重點實驗室, 南京 210031)
我國生豬養殖數量和豬肉消費量均居世界第一位,養豬業是我國農業的支柱產業[1-2]。生豬養殖主要的經濟損失來源于初生仔豬的高死亡率[3],仔豬斷奶前死亡率高達13%,擠壓致死率占其中的15%~51%[4]。及時檢測母豬起臥等高危動作、精確快速識別初生仔豬目標對提高仔豬成活率具有重要意義[5]。自然場景下,初生仔豬有明顯的聚群行為[6],粘連現象嚴重,個體特征不明顯,難以提取;分娩欄空間狹窄,仔豬目標小,容易被限位欄和母豬身體遮擋;母豬分娩多在夜間[7],初生仔豬與母豬體色相似,易融于背景色,受光線變化影響嚴重[8]。因此,在全天候多干擾場景下快速且準確識別初生仔豬目標是急需解決的關鍵問題。
近年來,科研人員對自然環境下生豬目標識別進行了深入研究。總體分為3類:①利用顏色空間差異進行圖像分割識別目標[9]。采用幀間差分法和背景差分法進行仔豬目標識別易于操作[10-11],但精度低,對噪聲干擾敏感;文獻[12]基于改進高斯混合建模和短時穩定度的方法只適用于緩慢運動的豬只目標檢測,對靜止目標檢測泛化能力差;文獻[13]利用豬舍固定攝像背景去除法,能夠較為精確地提取前景豬只目標,但檢測速度較慢。②基于傳統機器學習算法識別目標。文獻[14]基于周長面積比、長短軸比和Hu幾何距表示體態特征,采用SVM實現豬只分類;文獻[15]基于SVM-HMM模型,利用Baum-Welch算法識別豬只各類姿態;文獻[16]對YCrCb 色彩空間里的 Cb分量進行灰度化處理,用形態學方法去除噪聲,運用色彩空間聚類算法識別豬只位置。上述方法在圖像去噪特征提取階段較為繁雜,需要豐富的領域經驗設計特征,且檢測速度無法滿足實時要求。③利用卷積神經網絡直接由數據本身驅動特征抽象化識別目標[17]。相比傳統方法,深層卷積神經網絡能夠簡化訓練流程,提高識別速度和精度[18],在醫學影像分析[19]、手寫字體識別[20]、人臉識別以及農作物識別等領域廣泛應用[21-22]。在動物目標識別領域,文獻[23]基于視頻分析和卷積神經網絡識別奶牛個體,視頻段樣本識別率達到93.33%;文獻[24-25]結合Faster R-CNN深層卷積神經網絡框架,識別母豬5類姿態,平均識別精度達到90.14%,檢測速度接近20 f/s;文獻[26]利用Faster R-CNN網絡識別群養豬的攝食行為,精確率為99.6%,召回率為86.93%。但類Faster R-CNN的卷積神經網絡目標識別算法需要先經過ROI proposal,再分別進行分類和定位兩個任務識別目標[27],影響了檢測速度。
為提高對初生仔豬目標檢測速度,考慮到既能對全天候多干擾場景下的仔豬目標表現出良好的泛化能力,又能同時簡化復雜的圖像去噪特征提取過程,本文提出一種將整幅圖像作為ROI、多通道數據集融合、將分類和定位合并為一個任務的初生仔豬目標實時檢測方法。該方法支持圖像數據批量處理,以及視頻和錄像監控實時檢測,并以多樣化方式存儲檢測結果。
卷積神經網絡(Convolutional neural networks,CNNs)主要包括卷積層、激活層和池化層。圖像輸入后,多個卷積核分別提取局部特征,激活層將局部特征非線性化,池化層壓縮圖像并將局部特征融合,抽象化為更高層的語義信息作為下個卷積層的輸入。Residual block網絡結構解決了準確率飽和下降的問題[28],使得深層卷積神經網絡(DCNNs)可以學習圖像中更為緊致的語義信息。對大量標記好的圖像進行訓練,通過梯度下降算法逐漸調整各層參數權重,直至損失函數下降到局部最優值,最終的權重模型可以在驗證集和測試集中表現出良好的泛化能力。
深層卷積神經網絡進行目標識別的方法可分為兩類,流程如圖1所示:①先提取圖像中的興趣域再進行分類和定位識別目標,代表網絡模型是Faster R-CNN。②以整幅圖像作為興趣域將分類和定位合并為一個任務識別目標,代表網絡模型是YOLOv3。本文采用類YOLOv3的網絡模型,總體網絡框架包含兩部分:①darknet53主干網絡在ImageNet數據集進行預訓練[29],遷移學習結果作為仔豬目標識別的特征提取網絡。②結合3種尺度預測的特征交互層利用FPN算法將不同層級的特征融合[30],增強對小目標物體的檢測效果。

圖1 兩種基于深層卷積神經網絡目標識別算法流程圖Fig.1 Flow chart of two object detection algorithms based on deep convolution neural network
(1)輸入層
經過歸一化后的圖像數據和標簽數據,標簽為PASCAL VOC格式。
(2)主干網絡
以darknet53作為主干網絡,如圖2(上半部分)所示。卷積層結合了殘差結構,可在反向傳播過程中解決梯度消失問題并控制過擬合。每個殘差結構塊包含兩個卷積層,卷積核尺寸分別為1×1和3×3。每一層卷積層后都設計有批量歸一化層和非線性激活層,激活函數為LeakyReLU。省略了ROI proposal過程,以整幅圖像作為特征提取的ROI,降低了假陽性的預測概率,能夠加快檢測速度。
LeakyReLU激活函數定義為
(1)
式中yn——激活函數輸出
xn——激活函數輸入
α——系數,取0.02
與ReLU相比[31],LeakyReLU能保留輸入負值,更多保留目標的細節特征,這符合初生仔豬目標較小的實際情況。用卷積下采樣層代替最大池化層,成倍減小特征圖尺寸,節省計算資源的同時,進一步增強了特征的表達能力,卻沒有增加網絡深度。下采樣層卷積核尺寸設為3×3,滑動步長為2,邊界填充為1。下采樣層輸出結果通過殘差結構將特征進一步抽象化。
(3)特征交互層
特征交互層如圖2(下半部分)所示。網絡設計將識別目標分為13×13、26×26和52×52共3個尺度。采用FPN算法,將97層上采樣特征與36層輸出特征融合,對大尺度目標預測;將85層上采樣特征和61層輸出特征融合,對中型尺度目標預測;深層特征語義信息豐富,淺層特征對小目標物體的特征保留完善,深層特征與淺層特征融合,可以提高對小目標仔豬的識別精確度。
(4)輸出層
輸出層直接輸出識別結果,即仔豬目標單類。預測框輸出使用了非極大值抑制(NMS)的預測框篩選機制[32]。網絡模型測試階段,設置預測框與標注框的IOU閾值配合NMS對每個仔豬目標輸出唯一預測框,IOU定義為
(2)
式中TIOU——預測框與標注框的交并比
Soverlap——預測框與標注框之間的交集
Sunion——預測框與標注框之間的并集

圖2 網絡模型框架圖Fig.2 Network model frame diagram
實驗數據采集于江蘇省靖江市豐園生態農業園有限公司。選擇兩間母豬產房,面積同為7 m×9 m,每間劃分成6個2.2 m×1.8 m的分娩欄,欄內均為妊娠期107 d左右的待產母豬。視頻采集時間為2017年4月24日—5月31日。采用12個(每個分娩欄中都配有1個攝像頭)分辨率為2 048像素×1 536像素的海康威視攝像頭(DS-2CD3135F-l型,Hikvision)實時監控并備份錄像,俯測高度3 m。
采用縮放、旋轉(90°、180°和270°)、平移、鏡像,區間內調整曝光度、飽和度、色調等數據增強技術,減輕過擬合現象。網絡模型設計中定義超參數,在迭代訓練的每個批次中動態隨機增強數據,同一幅圖像只標注1次,相對于先增強數據再統一標注的方法,能夠減少標注成本。訓練階段,每10次迭代后將圖像剪切,控制在320~608像素之間,每隔32像素(5次卷積下采樣,圖像縮放到輸入的1/32)縮放1次,再次將數據量擴大10倍。
使用開源圖像標注軟件labelImg進行圖像標注,標注圖像包括3通道(白天和開啟白熾燈的晚上圖像)圖像9 683幅,單通道圖像9 683幅(夜間圖像),標注格式為PASCAL VOC數據集標準格式[33],圖像縮放至500像素×375像素。應對初生仔豬目標識別中的多干擾場景標注方案如下:①欄桿兩側都明顯有同一仔豬身體部位,則保留范圍內全部區域,若完全遮擋仔豬的頭部或尾部,則保留入鏡部分。②仔豬出鏡,保留在視頻范圍內的部分。③仔豬類內粘連問題采用貝葉斯錯誤率為衡量指標[34],標注人眼可清楚識別的范圍內仔豬部分。圖3為多干擾場景的標注方案。

圖3 仔豬識別數據集多干擾場景及硬性遮擋標注方案圖示Fig.3 Multi-interference scene for piglet identification data set and tagging scheme for hard occlusion1.環境遮擋 2.部分出境 3.仔豬粘連
2.2.1模型訓練步驟與損失函數
模型訓練步驟如下:①網絡模型整體架構構建,超參數初始化。②主干網絡在ImageNet數據集上的訓練結果作為模型訓練初始權重,開始訓練進行微調。③分析訓練結果,根據網絡收斂特性適當調整相對應的超參數,每次重復訓練使用上次訓練模型作為初始化模型。④對比驗證集和測試集的識別效果,定位高偏差還是高方差問題,手動統計測試集誤差數據,重復步驟③、④。迭代終止條件為:①設定損失函數閾值為0.5,在預設迭代次數范圍內,平均損失若不大于0.5,則停止迭代。②訓練后的網絡模型在驗證集和測試集上的查準率和查全率浮動誤差不超過3%,停止迭代。其中,損失函數定義為
Lloss=Ecoord+EIOU+Ecls
(3)
其中
(4)
(5)
(6)
式中s——整幅圖像柵格劃分數量
Ecoord——定位誤差
EIOU——IOU誤差
Ecls——分類誤差
λcoord——定位誤差項權重
B——每個柵格生成目標框數



xn、yn、wn、hn——標定坐標值

λnoobj——不含目標柵格的權重


A0——仔豬類別

(7)

包含目標的邊界框pobject為1,否則為0。
式(6)中的柵格分類概率定義為
(8)
式中p(Dclassi|Dobject)——檢測目標是仔豬的概率
相同的定位偏差對小目標影響較大,將式(4)中的w、h做開方處理,增加小目標的損失占比,提高小目標識別精度;提高定位誤差項權重λcoord可增強定位精度;初生仔豬粘連現象嚴重,一個柵格可能包含多個目標,所以采用二元交叉熵計算分類損失;不包含目標的目標框置信度接近0,相應地放大了包含目標的目標框置信度誤差對網絡梯度參數的影響,可通過λnoobj權重項適當修正。
訓練在一臺工作站上進行,工作站配置為1塊GTX1080Ti顯卡,有效內存31.1 GB,2塊Xeon Gold 5118CPU。訓練總時長約為29 h。
2.2.2評價指標
仔豬識別的結果采用4個指標評價:精確率P(Precision)、召回率R(Recall)、精度均值A(Average precision)和精確率與召回率的調和平均數F1-S(F1-Score)。精確率是衡量模型對仔豬正樣本的識別能力,是從所有識別出的樣本中識別出的正樣本比例(仔豬目標為正樣本,其他類物體均為負樣本);召回率是衡量模型對仔豬正樣本的覆蓋能力,是從所有正樣本中識別出的正樣本比例;精度均值是模型對正樣本的識別準確程度和對正樣本覆蓋能力的權衡結果,是PR曲線與坐標軸圍成的曲線下方的面積;F1-S分數是綜合精確率和召回率的一個評估模型穩健度的指標。4個指標的計算公式為
(9)
(10)

(11)
(12)
式中TP——真正樣本(真陽性)數量
FP——假正樣本(假陽性)數量
Pos——正樣本數量,包括真正樣本和假負樣本數量
2.2.3訓練參數設計
(1)用于實驗(包括3通道和單通道)的圖像9 683幅,按照8∶1∶1的比例分割,其中訓練集、驗證集和測試集采用相同的多通道均衡分布,便于客觀衡量模型的泛化能力。
(2)初次訓練迭代30 000次,再訓練每次迭代10 000次。
(3)采用mini-batch隨機梯度下降法訓練,batch值為64。
(4)學習率初始化為0.001,學習策略為步進型,momentum為0.9,學習衰減率為0.000 5。每一次迭代學習率衰減方式定義為
(13)
式中Lr_n——第n次迭代時的學習率
Lr_initial——學習率初始值
n——迭代次數Decay——學習衰減率
在訓練迭代過程中,Lr_n會逐步調整學習步幅,提高模型收斂效果。
(5)損失函數中柵格數s為7,為13×13、26×26、52×52等3種預測尺度各分配3個先驗框(B為9),λcoord為5,λnoobj為0.5。
本文采用類YOLOv3的網絡框架識別仔豬目標,無興趣域提取過程,將分類和定位合并為一個任務,相比于Faster R-CNN,對目標定位效果較差,但檢測速度更快,通過加深卷積層數,能夠較為理想地兼顧識別效果和檢測速度。YOLOv3與Faster R-CNN網絡模型在COCO公開數據集中的目標識別結果對比見表1[35],其中,AP50和AP75表示不同的IOU閾值,本研究將IOU設定為0.8;APS、APM、APL分別表示識別小型、中型和大型目標對應的AP值。由對比結果知,YOLOv3總體識別效果與Faster R-CNN相近,在小目標上(APS)的識別效果略優,更適合應對初生仔豬目標較小的問題。在檢測速度方面,同在GTX 1080Ti顯卡上處理COCO test-dev數據集圖像,YOLOv3檢測速度是Faster R-CNN的3倍。綜合識別效果和檢測速度,YOLOv3網絡更適合應用于初生仔豬目標的實時檢測。

表1 YOLOv3與Faster R-CNN在COCO test-dev數據集識別結果對比Tab.1 Comparison of recognition results between YOLOv3 and Faster R-CNN in COCO test-dev data sets
表2為采用YOLOv3與Faster R-CNN網絡框架識別初生仔豬目標對比結果,圖像標注類型為PASCAL VOC,GPU型號為GTX1080Ti,訓練集7 747幅,測試集968幅,像素均為500像素×375像素,測試視頻為MP4格式,視頻分辨率為2 045像素×1 536像素,檢測速度為10次輸出結果的平均值(每一次輸出結果包含一次瞬時檢測速度)。由表2可見,YOLOv3在準確率上與Faster R-CNN(ResNet101)相差較大,其他各項指標相近,顯著地提高了檢測速度。

表2 YOLOv3識別與Faster R-CNN識別初生仔豬目標結果對比Tab.2 Target comparison of YOLOv3 and Faster R-CNN for recognition of newborn pig lets
3.2.1不同迭代次數的影響
網絡深度對卷積神經網絡模型的性能至關重要,但隨著網絡層數的增加,過擬合現象會加劇。在特定應用領域,數據集數量、迭代次數與卷積神經網絡深度之間尚未發現普適規律。本研究中訓練集有7 747幅圖像,網絡深度為106層(不包括輸入層),根據模型訓練過程中損失函數收斂過程可視化以及3種不同迭代權重模型的識別效果的對比可知,在20 000次迭代時接近模型局部最優值。分析圖4,批次損失和平均損失在50~200次的迭代過程中急劇下降,整個過程在1 000收斂到0.36附近,訓練效果較為理想,但在20 000次迭代附近有明顯非平滑下降波動。

圖4 批次損失和平均損失收斂圖Fig.4 Convergence diagram of batch loss and average loss
分析圖5和表3,對比3個權重模型的PR(Precision and recall)曲線。為了更清楚地顯示在迭代訓練過程中3種權重模型的變化情況,將召回率坐標取對數,準確率坐標取線性級數,可見在召回率較低的階段,3個模型都有較明顯的波動,尤其是WEIGHT3,急速下降后上升,說明在驗證集上的收斂情況達到飽和點后迅速下降,反向傳播過程中出現了梯度消失或過擬合現象。結合WEIGHT3在檢測時經常將母豬的耳朵和四肢、柵欄內透進的光線、飼養人員裸露出的小腿和脖頸識別為仔豬,證明WEIGHT3權重模型出現了過擬合現象。

圖5 仔豬識別PR曲線Fig.5 PR curves of newborn piglet recognition
分析表3,3個模型的檢測速度基本相同,處理圖像速度近似為53.19 f/s,一般MP4視頻播放速度為25 f/s,可見在相應硬件配置下的檢測時間能夠滿足實時檢測要求;WEIGHT2在精確率和召回率之間達到了很好的平衡,與WEIGHT3相比,犧牲了準確率,在召回率上更有優勢;在衡量模型穩定度的指標F1-S上的表現,兩個模型相近;對比A,WEIGHT2明顯更高。綜上可知,20 000次迭代的權重模型效果最優,在接下來的檢測過程中,均采用WEIGHT2的權重文件對圖像數據或視頻數據進行檢測。
20 000次迭代權重模型在測試集中的精確率和召回率都略差于驗證集,圖6顯示了部分識別錯誤的情況。模型在檢測視頻時,由于人的手臂和母豬的耳朵會不停的移動,保育箱口有仔豬經過時亮暗程度也會產生變化,將這些物體錯誤識別為仔豬。

表3 3種權重模型指標評價對比Tab.3 Evaluation comparison of three weight model indexes
其主要原因是數據量不足、初生仔豬目標小特征不明顯,導致模型過擬合。

圖6 過擬合現象圖示Fig.6 Overfitting phenomenon diagram
3.2.2不同通道數的影響
數據集分布的均衡程度和數據集數量對深層卷積神經網絡模型的泛化能力至關重要。在建立的訓練樣本庫中,包含白天、夜間和開啟白熾燈的夜間圖像,夜間圖像為單通道,其余為3通道。表4比較了不同通道數據集對訓練結果的影響,樣本數據集均為9 683幅圖像,分辨率相同,在全天組中,3通道數據集5 000幅圖像,單通道數據集4 683幅圖像。由表4知:只有3通道的數據集和只有單通道的數據集訓練的模型只在相應通道的測試數據集上表現良好,對其他場景數據集泛化能力差;當模型訓練的數據集分布更加均衡時,模型的泛化能力顯著提高。另一方面,全天的數據集數據分布更加均衡但白天和夜間的數據數量相對較少,所以全天數據集訓練得到的模型不如單一場景下對場景內測試數據集的識別效果。

表4 不同數據集分布訓練模型效果對比Tab.4 Comparison of training model effects between different data sets distribution
對圖像數據的檢測結果可以保存為圖像和文本文件兩種形式。圖像保存形式如圖7所示,這些圖像在驗證集中隨機選擇。可見,模型的識別效果較為理想,對初生仔豬目標識別過程中容易出現的粘連、硬性遮擋、光線干擾等問題能夠表現出良好的泛化能力。

圖7 仔豬識別模型對不同場景下的仔豬目標識別結果Fig.7 Piglet recognition model for piglet target recognition under different scenarios
文本文件的保存格式如圖8所示,文本按行計數共有10條記錄,表示在這幅圖像中共識別出10只仔豬。第1列表示圖像編號為000009;第2列表示每只仔豬通過網絡模型識別的置信度,如第1條記錄中識別到的目標有99.983 5%的可能性是仔豬;后4列表示仔豬目標的坐標,分別為Xmin、Ymin、Xmax、Ymax。

圖8 仔豬識別模型批量識別圖像的文本文件結果Fig.8 Text file result of batch recognition picture of piglet recognition model
對視頻數據的檢測結果可以保存為視頻和文本文件兩種形式。在對2 048像素×1 536像素分辨率的海康威視攝像頭實時監控的視頻處理時,檢測速度約為10 f/s,在對清晰度720 P及以下的視頻處理時,檢測速度大于22 f/s,基本滿足實時檢測的需求。視頻數據檢測過程中會對每一幀進行識別,同時動態顯示對應仔豬坐標、置信度和檢測速度并保存到文本文件。視頻檢測結果如圖9所示。
多樣化檢測結果可以用來分析仔豬的狀態和行為。圖10中的1號仔豬是“死胎”。文本文件分析:圖10所示記錄1、2、3分別表示3幅圖像中1號仔豬的識別結果。分析3條記錄可知,1號仔豬的坐標基本保持不變,引起坐標變化的主要原因是模型的定位誤差和人工標注時的誤差,配合視頻檢測結果,1號仔豬預測框未移動,其他仔豬爭搶吃奶預測框不斷變化,判斷1號仔豬為死胎。

圖9 仔豬識別模型視頻檢測輸出結果Fig.9 Output of piglet recognition model video detection1.檢測速度 2.目標與置信度 3.仔豬坐標

圖10 仔豬死胎判斷方法圖示Fig.10 Determination of stillbirth in piglets
(1)基于深層卷積神經網絡,提出一種以整幅圖像作為興趣域的初生仔豬識別算法,簡化了圖像去噪特征提取的復雜過程,采用FPN算法將高層與底層特征融合,準確、快速地檢測到初生仔豬目標。在配備單塊顯卡GTX1080Ti下,對清晰度720P及以下的視頻能夠達到實時檢測的效果,對500像素×375像素的圖像檢測速度達到53.19 f/s。
(2)對比了不同通道數數據集以及不同迭代次數對模型性能的影響,發現在3通道與單通道數據均衡采樣9 683幅的情況下,訓練迭代20 000次時接近模型最優效果,在驗證集和測試集上的精確率分別達到95.76%和93.84%,召回率分別為95.47%和94.88%。
(3)該方法支持圖像批量處理,也可以對視頻和監控錄像實時檢測,并將識別結果以圖像、視頻和文本文件的形式保存,多樣化的識別結果相結合可以對仔豬的狀態和行為作出準確判定。