涂淑琴 劉曉龍 梁 云 張 宇 黃 磊 湯寅杰
(1.華南農業大學數學與信息學院, 廣州 510642; 2.華南農業大學電子工程學院, 廣州 510642)
豬只的健康情況決定著生豬養殖業的發展與經濟效益,多數生豬疾病的臨床或亞臨床體征表現之前常伴隨行為異常[1-2],故對豬只的運動、飲食等行為的監測有助于判斷豬只健康情況。目前人工監測是豬場的主要管理方式,但需要大量勞動力并且難以實現長期持續觀察,借助無線射頻技術(Radio frequency identification,RFID)的監測可避免人工監測的缺陷,但易對豬只造成刺激。信息技術手段已成為現代農業發展的重要引擎,通過借助計算機視覺技術,可以實現低成本、無接觸地自動監測豬只[3],實現生豬智慧養殖。
國內外學者在生豬自動監測方面的研究可分為兩類,分別為豬只行為識別和豬只跟蹤。在豬只行為識別中,主要采用傳統圖像處理與深度學習的方法。ZHU等[4]利用閾值分割和形態學處理等機器視覺技術,實現非接觸地對豬只飲水行為進行識別。李菊霞等[5]針對豬舍環境下豬只飲食行為自動化檢測程度較低的問題,提出了一種基于 YOLO v4 的豬只飲食行為檢測模型。ALAMEER等[6]基于YOLO v2與Faster R-CNN監測豬只的姿態與飲水行為,其無需傳感器或對個體識別即可監測豬只行為。高云等[7]提出使用3D CONV 對群養豬侵略性行為進行識別,可為豬場養殖環境中豬只侵略性行為檢測提供參考。在豬只跟蹤方面,近年來也有很多研究者開展相關工作。XIAO等[8]通過顏色信息識別豬只,并通過分析二值圖像中連接區域消除噪聲,根據DT-ACR關聯規則對豬進行跟蹤。SUN等[9]提出一種多通道彩色特征自適應融合算法,并利用目標豬的輪廓信息實時更新比例,提升在目標形變與尺度變化下的跟蹤效果。ZHANG等[10]利用分層數據關聯算法將基于卷積神經網絡的檢測器與相關濾波器的跟蹤器結合,實現單個豬只跟蹤。張偉等[11]基于CenterNet 設計斷奶仔豬目標檢測模型,結合DeepSORT算法[12]實現斷奶仔豬的多目標跟蹤,改善豬只外觀高度相似與遮擋情況下的跟蹤效果。
目前,視頻監控技術由于其設備價格低廉和實現簡單的優點,已廣泛應用于生豬的行為識別與跟蹤研究。但是,在真實養殖場景下,由于光照變化與豬群的密集遮擋,容易造成跟蹤中目標ID 頻繁跳變;同時,很多研究只是對豬只的行為進行識別[13-15]或跟蹤[16-17],算法獲取的豬只信息難以滿足現代化生豬養殖業的要求。基于此,本文將行為識別與多目標跟蹤進行融合,并改進DeepSORT算法中的軌跡生成與匹配過程,提出基于YOLO v5s的改進DeepSORT算法。通過將YOLO v5s檢測算法得到的行為類別信息引入DeepSORT跟蹤算法,實現跟蹤中的行為識別,使得在跟蹤中算法可以獲取到目標的行為信息;同時,針對特定場景下豬只數量穩定不變的特點,改進DeepSORT算法中的軌跡生成與匹配過程,提升跟蹤中豬只ID的穩定性;最終在真實群養環境下實現穩定ID的豬只行為跟蹤,以期為無接觸式自動監測生豬提供技術支持。
實驗數據從文獻[18]的數據集中選擇,篩選保留15段豬只移動較多的有效視頻,每段視頻為60 s,每秒為5幀。將視頻分辨率裁剪為2 688像素×1 012像素,在視頻段中只保留同一豬舍下的豬只。使用DarkLabel軟件對視頻段進行標注,構建3個數據集分別用于訓練目標檢測模塊、重識別模塊和驗證行為跟蹤算法效果,這3個數據集中均包含白天與夜間場景、豬只擁擠與稀疏場景、豬只活動頻繁與較少場景。
選取真實群養環境下4段不同條件的視頻段作為行為跟蹤數據集,用于驗證算法效果,記為序號01~04,如表1所示。

表1 行為跟蹤數據集Tab.1 Behavior tracking dataset
其余視頻段利用ffmpeg工具分割成圖像,使用腳本將圖像與標注信息分別構建目標檢測數據集和重識別數據集,其中目標檢測數據集將豬只分為躺臥、站立、飲食和其他行為4種類別。目標檢測數據集共3 300幅圖像,按照比例7∶2∶1隨機劃分為訓練集、驗證集和測試集。重識別數據集包含137頭豬只,平均每頭豬只300幅圖像,按照比例7∶3隨機劃分為訓練集和測試集。
為提升模型泛化能力,使用左右翻轉、上下翻轉、改變色彩屬性的數據增廣技術,擴充生豬的目標檢測與重識別訓練數據。其中,對圖像進行左右翻轉與上下翻轉可以擴大數據集的規模,以獲得理想的訓練效果;改變圖像色彩屬性,如隨機改變圖像的色調、飽和度和明度可以模擬光照情況變化對圖像的干擾,在一定程度上消除光環境的影響[19]。最終目標檢測訓練數據集擴充到4 620幅圖像,重識別訓練數據集中每頭豬只擴充到420幅圖像。生豬的目標檢測與重識別圖像數據增廣后樣例見圖1。

圖1 數據增廣后結果Fig.1 Results after data augmentation
采用YOLO v5s檢測器結合改進DeepSORT算法實現豬只行為跟蹤,如圖2所示,首先圖像輸入YOLO v5s目標檢測器,得到檢測結果;然后改進DeepSORT算法基于卡爾曼濾波與匈牙利算法對前后兩幀之間目標進行匹配,生成跟蹤軌跡;最后輸出行為跟蹤圖像。

圖2 行為跟蹤算法流程圖Fig.2 Flow chart of behavior tracking algorithm
在基于檢測的跟蹤算法中,目標檢測的效果對跟蹤算法的效果起著至關重要的作用。當前基于深度學習的目標檢測算法中,主要可劃分為One-stage和Two-stage兩類。在One-stage算法中占主流的是YOLO[20-23]系列等。Two-stage算法中占主流的是R-CNN[24]、Fast R-CNN[25]、Faster R-CNN[26]等。One-stage與Two-stage算法各有優劣,前者在檢測速度上有明顯的優勢,后者在檢測精度有更好的效果。YOLO v5s算法可以兼顧速度與精度的要求,本文將其作為目標檢測器。YOLO v5s網絡結構如圖3所示,該算法主要包括輸入端、主干網絡、頸部和輸出端4部分。其中,在輸入端對數據進行預處理,采用如Mosaic數據增強、自適應圖像縮放和自適應錨框計算等技術實現;主干網絡主要由Focus層、CONV層、C3層、SPP層等結構組成;頸部包含特征金字塔網絡(Feature pyramid networks,FPN)[27]、路徑聚合網絡(Path aggregation network,PAN)[28];輸出端主要是在3個不同大小的特征圖上預測不同尺寸的目標。

圖3 YOLO v5s 網絡結構Fig.3 Network structure of YOLO v5s
DeepSORT算法是在SORT[29]基礎上引入重識別模型,通過外觀信息與運動信息增強匈牙利算法的匹配效果,減少ID切換的數量;其通過卡爾曼濾波器和匈牙利算法,分別處理跟蹤問題的運動預測和數據關聯部分。
2.2.1軌跡的狀態估計
2.2.2匹配問題
DeepSORT算法結合運動信息度量與外觀信息度量,使用匈牙利算法解決檢測框與軌跡的匹配問題。對于運動信息度量,算法表示為
(1)
式中d(1)(i,j)——第j個檢測框和第i個軌跡預測得到的邊界框的馬氏距離
dj——第j個檢測框
yi——第i個軌跡預測后的邊界框
Si——第i個軌跡預測得到的在當前測量空間的協方差矩陣
馬氏距離用于過濾可能性極低的匹配,當d(1)(i,j)小于指定的閾值,認為匹配成功。
對于外觀信息度量,引入重識別模型,用于提取目標的外觀信息。重識別模型網絡結構如表2所示,主要包括1個卷積層、1個最大池化層、8個殘差層和1個平均池化層。

表2 重識別模型網絡結構Tab.2 Network structure of re-identification model
對于外觀信息度量,算法表示為
(2)
式中d(2)(i,j)——第j個檢測框與第i個軌跡的最小余弦距離
rj——第j個檢測框dj相應的外觀描述符,設置‖rj‖=1

Ri——第i個軌跡的外觀信息倉庫,保存最新100條目標成功匹配的外觀描述符
當d(2)(i,j)小于指定閾值時,認為匹配成功。
馬氏距離提供基于運動目標可能的位置信息,余弦距離通過考慮外觀信息可以在目標發生遮擋重疊情況下恢復ID,為提升跟蹤效果,將馬氏距離與余弦距離結合作為最終度量,公式為
ci,j=λd(1)(i,j)+(1-λ)d(2)(i,j)
(3)
式中ci,j——第j個檢測框與第i個軌跡的關聯程度
λ——權重系數
沿用原算法將λ設置為0,即運動信息度量用于限制明顯不可行的匹配,關聯矩陣中只使用外觀信息度量計算。
2.3.1跟蹤中的行為識別
在原DeepSORT跟蹤算法的基礎上,將豬只行為類別添加到目標跟蹤的軌跡中,其實現效果如圖4所示,圖4a中左上角為目標豬只的ID編號,是原算法效果;圖4b中左上角為目標的行為類別和ID編號,是改進后效果。首先在YOLO v5s目標檢測算法中將檢測到的豬只行為類別分為躺臥、站立、飲食和其他4類;然后將行為類別作為DeepSORT算法的輸入,存儲在目標豬只軌跡的參數中,以此實現豬只跟蹤過程中的行為識別。

圖4 行為識別效果Fig.4 Effect of behavior recognition
2.3.2改進匹配過程與軌跡生成
DeepSORT算法在跟蹤實驗中,隨著視頻幀增長,同一豬只目標易被分配不同的ID,導致ID最大值大幅超出真實的豬只目標數量。主要原因是目標豬只發生運動或遮擋重疊現象時,檢測結果無法與原軌跡匹配,導致未匹配的檢測結果生成新軌跡。基于上述問題,針對豬舍特定場景,對算法的匹配過程與軌跡生成進行改進。
由于豬舍為封閉場景,無目標新增或減少,為提升匹配效果,增加第2輪交并比匹配對未匹配的檢測框進行處理。改進后的匹配過程:第1輪交并比匹配完成初步匹配,第2輪放寬交并比最大距離的限制來盡可能使未匹配的檢測框與軌跡匹配成功。
在該場景下通過改進軌跡生成的方式來限制ID增長。具體實現如下:封閉場景下目標總數是穩定不變的,則ID最高數量是已知的,動態存儲檢測結果中的目標總數,將其計為ID極大值,由于檢測結果有一定概率出現誤檢漏檢現象,ID極大值由最近3幀中檢測目標數量的平均數決定,若當前生成軌跡ID超過ID極大值,不生成新軌跡;若未超過,則生成新軌跡。
改進后算法匹配過程如圖5所示,其中虛線框部分為算法改進內容。軌跡初始化為未確認態,滿足連續3幀都成功匹配,將未確認態轉化為確認態。

圖5 匹配過程流程圖Fig.5 Flow chart of matching process
算法步驟如下:
(1)首先將檢測結果與卡爾曼濾波預測的確認態軌跡進行級聯匹配;級聯匹配采用匈牙利算法,對運動信息與外觀信息的關聯矩陣求解,從而匹配檢測框與軌跡。
(2)未確認態軌跡、級聯匹配中未匹配的軌跡和未匹配的檢測框進行第1輪交并比匹配;交并比匹配采用匈牙利算法,對交并比關聯矩陣求解,從而匹配檢測框與軌跡。
(3)進行第2輪交并比匹配,將第1輪交并比匹配中未匹配的軌跡和未匹配檢測框進行第2輪最大交并比距離匹配;判斷未匹配的檢測框是否滿足軌跡生成條件,滿足則生成軌跡,不滿足則不做處理;最終判斷未匹配的軌跡是否滿足刪除條件,滿足則刪除軌跡,不滿足則繼續參與匹配。
(4)當前幀匹配過程結束后執行卡爾曼濾波更新。
針對豬舍中群養豬的行為跟蹤進行3個實驗,分別是:目標檢測實驗訓練YOLO v5s 檢測器;重識別實驗訓練DeepSORT算法中重識別模塊;在生豬行為跟蹤數據集進行實驗,測試與分析改進DeepSORT算法的性能。
實驗采用Windows 10平臺,編程語言為Python 3.6,模型框架為Pytorch 1.7.1,硬件環境為AMD Ryzen5 2600X處理器、64 GB內存、NVDIA GeForce GTX TITAN X顯卡。
目標檢測實驗采用YOLO v5s模型,檢測生豬躺臥、站立、飲食和其他行為,其他行為描述豬只行為轉換過程的中間狀態。實驗不采用預訓練模型,輸入圖像尺寸為640像素×640像素,優化器為隨機梯度下降法(Stochastic gradient descent,SGD),初始學習率為0.01,批量大小為64,模型迭代200次。
為驗證檢測效果,選取精確率(Precision)、召回率(Recall)、調和平均數(F1-score,F1)、平均精度均值(Mean average precision,mAP)對模型進行綜合評價。
YOLO v5s在測試集上的精確率-召回率曲線如圖6所示,檢測器對豬只的4種行為均有較好的檢測效果。

圖6 精確率-召回率曲線Fig.6 Precision-recall curves
算法在測試集上全部結果如表3所示。在豬只的躺臥、站立、飲食行為上檢測效果較好,其平均精確率(AP)均達到99%以上,說明檢測器對于豬舍場景中大多數行為的檢測效果較好,而在其他行為上的召回率為95.2%,說明模型在檢測豬只行為轉

表3 目標檢測實驗結果Tab.3 Experimental results of object detection %
換過程中存在少量漏檢情況。綜合豬只的各個行為結果,檢測器在處理豬舍場景行為檢測問題上效果良好,可為跟蹤階段建立最優的輸入。
利用YOLO v5s算法對不同條件下群養生豬圖像進行測試,結果如圖7所示。圖7a為白天、豬只較少和遮擋情況下檢測效果,算法對于豬只較少的情況能達到優越的檢測效果;圖7b為夜晚、豬只較少和擁擠的情況下檢測效果,在擁擠重疊情況下,算法仍保持著精準的檢測效果;圖7c為白天、豬只較多和擁擠的情況下檢測效果,算法也具有精準的檢測效果;圖7d為夜晚、豬只較多和擁擠的情況下檢測效果,算法在豬只嚴重擁擠情況下保持著較強的性能,無漏檢。不同場景下YOLO v5s算法都能準確識別豬只行為。

圖7 YOLO v5s算法的群養生豬檢測結果 Fig.7 Detection results of group-housed pigs based on YOLO v5s algorithm
實驗使用Market-1501[30]數據集上預訓練得到的權重文件,為提升對生豬的重識別效果,在本文數據集上重新訓練重識別模型,批量大小為256,迭代100次,其余參數沿用原算法。
重識別模型可以提取出豬只具有區分度的特征,實現不同幀中同一豬只的重新識別,使用Top-1準確率評價模型效果,其表示模型預測概率最大結果的正確總數占所有樣本的比率,值越接近1說明模型提取特征能力越強,即重識別效果越好。
圖8為重識別模型的Top-1準確率曲線,在迭代25次后,曲線趨于平穩,此時模型基本達到收斂,迭代100次后Top-1準確率在測試集上結果為99.88%,此時重識別模型能夠較好地提取出目標的表觀特征,從而準確地實現豬只的重識別。

圖8 重識別模型的Top-1準確率曲線Fig.8 Top-1 accuracy curves of re-identification model
3.3.1行為跟蹤算法評價指標
選用5個指標評價行為跟蹤算法的效果:身份編號切換次數(Identity switch,IDS),跟蹤目標ID發生改變的次數,值越小表示跟蹤穩定性越好。識別平均數比率(Identification F1,IDF1)是識別精確率與識別召回率的調和平均數,用于評價跟蹤算法的穩定性,值越大說明算法越能長時間地對某個目標進行準確地跟蹤。多目標跟蹤準確率(Multiple object tracking accuracy,MOTA),同時考慮誤報、漏報和IDS,衡量跟蹤算法在檢測目標和保持軌跡時的性能,與目標檢測精度無關,值越大表示算法的性能越好。多目標跟蹤精確度(Multiple object tracking precision,MOTP),量化檢測器的定位精度越大表示檢測器的精度越高。幀率(Frames per second,FPS)是算法每秒處理的視頻幀數,值越大表明處理速度越快。
3.3.2行為跟蹤實驗結果與分析
為驗證改進算法對性能的提升,沿用原算法的參數設置,利用生豬行為跟蹤數據集測試改進DeepSORT算法,改進前后實驗結果如表4所示。

表4 改進前后實驗結果Tab.4 Experimental results before and after improvement
在IDS方面,改進DeepSORT算法為33,較改進前的204,降低了83.8%,特別是測試視頻01,改進算法對該測試視頻的IDS為0,即不發生ID切換,說明改進算法對跟蹤場景條件良好(如豬只較少)的情況下效果顯著。在IDF1方面,改進算法為89.2%,較原算法提升了16.9個百分點,在所有測試視頻段均有明顯提升,說明改進部分在不同場景條件下可以明顯提升跟蹤算法的穩定性。在MOTA方面,改進算法為91.9%,較改進前提升了1.0個百分點,改進算法對測試視頻01、02、03的處理均優于原算法,說明在大多數場景條件下改進后算法均能提升跟蹤準確率。在MOTP方面與FPS方面,改進前后算法基本維持不變。綜上,改進算法在跟蹤準確率與穩定性方面顯著提升。
改進前后DeepSORT算法在白天、豬群稀疏、豬只活動頻繁場景(視頻段01)下跟蹤結果如圖9所示,圖9a中豬只最大ID為20,而圖9b中豬只最大ID穩定在7,可以看出在豬只劇烈運動的情況下,原算法跟蹤中ID頻繁切換;圖9c中原算法最大ID已經增長到55,而圖9d中改進算法最大ID依舊穩定在7,無ID切換,跟蹤性能優異,且可以準確識別全部豬只的行為。

圖9 改進前后DeepSORT算法跟蹤結果(視頻段01)Fig.9 Tracking results of DeepSORT algorithm before and after improvement (video segment 01)
改進前后DeepSORT算法在白天、豬群擁擠、豬只活動較少場景(視頻段02)下跟蹤結果如圖10所示,在豬只發生嚴重遮擋重疊情況下,改進前后算法均出現少量目標丟失,圖10a與圖10b中豬只最大ID均為 16;圖10c中原算法最大ID已經增長到57,而圖10d中改進算法最大ID穩定在16,可以看出改進算法可以大幅抑制ID切換,在豬只嚴重密集擁擠情況下仍可以實現良好跟蹤,并且可以識別到大部分豬只的行為。

圖10 改進前后DeepSORT算法跟蹤結果(視頻段02)Fig.10 Tracking results of DeepSORT algorithm before and after improvement (video segment 02)
改進前后DeepSORT算法在夜晚、豬群擁擠、豬只活動頻繁場景(視頻段04)下跟蹤結果如圖11所示,圖11a與圖11b中豬只最大ID均為16,圖11c與圖11d為第246幀中算法對比結果,光照條件較弱與豬群發生嚴重遮擋導致原算法在跟蹤中出現大量ID切換,而改進算法能有效抑制ID切換,表明在復雜環境下改進算法仍有良好的跟蹤效果,并且可以準確識別到大部分豬只行為。

圖11 改進前后DeepSORT算法跟蹤結果(視頻段04)Fig.11 Tracking results of DeepSORT algorithm before and after improvement (video segment 04)
綜上,改進DeepSORT算法可以有效抑制ID切換,在復雜環境中仍有效,可以良好穩定地跟蹤群養生豬并準確識別其行為。
(1)在YOLO v5s檢測算法基礎上,將檢測結果中行為信息引入DeepSORT算法,并針對豬舍特定場景改進DeepSORT算法中的軌跡生成與匹配過程,提出了改進DeepSORT算法。
(2)實驗結果表明,YOLO v5s目標檢測實驗的mAP為99.3%,F1值為98.7%;生豬重識別實驗的Top-1準確率達到99.88%;在跟蹤方面,改進DeepSORT算法的MOTA為91.9%,IDF1為89.2%,IDS為33, MOTA和IDF1比原算法分別提升了1.0、16.9個百分點,IDS下降了83.8%。
(3)所構建群養生豬行為跟蹤算法可以滿足實際養殖環境中的需要,能夠為無接觸式的生豬自動監測提供技術支持。