劉月峰 邊浩東 何瀅婕 郭 威 張小燕
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院, 包頭 014010)
奶牛的科學(xué)飼養(yǎng)需要實(shí)時掌握奶牛的行為表現(xiàn)等信息。其中,奶牛采食行為監(jiān)測是奶??茖W(xué)飼養(yǎng)中重要一環(huán)[1]。通過對奶牛的反芻、采食量、進(jìn)食時間與進(jìn)食頻率等數(shù)據(jù)進(jìn)行實(shí)時監(jiān)測,能夠掌握奶牛養(yǎng)殖信息;通過對數(shù)據(jù)的分析處理,能夠達(dá)到疾病診斷與異常預(yù)警等目的[2-3]。傳統(tǒng)的奶牛行為監(jiān)測方法主要依賴于人工觀測記錄或穿戴式設(shè)備監(jiān)測[4-6]。人工觀測不僅效率低下、成本高昂,而且人工觀測方法并不能滿足制定科學(xué)飼養(yǎng)方案的實(shí)時性與全天候要求,同時也無法適應(yīng)奶牛養(yǎng)殖場現(xiàn)代化發(fā)展的需求。有研究者提出利用佩戴式設(shè)備監(jiān)測奶牛進(jìn)食行為[7-8]。佩戴式設(shè)備雖然能在一定程度上保證監(jiān)測的準(zhǔn)確率,但在目前條件下,很難為每頭奶牛個體配備高成本的監(jiān)測設(shè)備。因此開發(fā)出一種基于機(jī)器視覺技術(shù)、可以進(jìn)行多目標(biāo)奶牛進(jìn)食行為監(jiān)測的方法十分必要。
比較奶牛的進(jìn)食與非進(jìn)食狀態(tài)圖像,將奶牛目標(biāo)總體分為“進(jìn)食”與“非進(jìn)食”兩類目標(biāo),并利用目標(biāo)檢測算法,對兩類奶牛目標(biāo)進(jìn)行分類定位,可有效監(jiān)測奶牛進(jìn)食行為。張宏鳴等[8]通過改進(jìn)YOLO v3網(wǎng)絡(luò)設(shè)計了一種基于機(jī)器視覺的多目標(biāo)肉牛進(jìn)食行為識別方法。而YOLO系列算法[9-11]具有參數(shù)數(shù)量龐大、計算成本高等特點(diǎn),對未來智慧牧場任務(wù)場景下的邊緣計算與一些計算資源受限且需要控制成本的項(xiàng)目來說并不友好。文獻(xiàn)[12-14]提出的YOLO v3 tiny是一個基于YOLO v3的輕量化目標(biāo)檢測模型,但是其網(wǎng)絡(luò)層數(shù)少,會降低其在目標(biāo)檢測時的準(zhǔn)確率[15]。
FRANKLE和CARBIN在2019年提出了一種利用幅值迭代剪枝(Iterative magnitude pruning,IMP)算法尋找最優(yōu)子網(wǎng)絡(luò)的彩票假設(shè)(Lottery ticket hypothesis,LTH)[16-17],該方法旨在通過幅值迭代剪枝方法找到一個優(yōu)秀的稀疏子網(wǎng)絡(luò),該稀疏子網(wǎng)絡(luò)重新訓(xùn)練后不僅和原始網(wǎng)絡(luò)性能相當(dāng),而且最多可以將網(wǎng)絡(luò)的參數(shù)減少90%~95%,并且網(wǎng)絡(luò)性能不受影響。若是能夠從稠密網(wǎng)絡(luò)中甄選出一個更加精巧且性能優(yōu)異的稀疏子網(wǎng)絡(luò),就能大量減少推理過程中所使用的模型規(guī)模與參數(shù)數(shù)量[18],從而能在節(jié)約成本的同時將所訓(xùn)練的網(wǎng)絡(luò)應(yīng)用在類似邊緣計算等資源受限或需要控制成本的任務(wù)上,以滿足目前智慧牧場的規(guī)模化、現(xiàn)代化需要[19]。
為實(shí)現(xiàn)在多目標(biāo)場景下對每頭奶牛的進(jìn)食行為進(jìn)行監(jiān)測,首先要確定觀測范圍內(nèi)全部奶牛的進(jìn)食狀態(tài),得到目標(biāo)圖像,再確認(rèn)每頭奶牛的身份。為確定多目標(biāo)奶牛進(jìn)食狀態(tài),本研究參考彩票假設(shè),基于IMP算法,提出一種多目標(biāo)奶牛進(jìn)食行為識別方法。采集并篩選奶牛養(yǎng)殖場奶牛牛舍監(jiān)控視頻,根據(jù)目標(biāo)的背景差異與奶牛的姿態(tài)差異將奶牛劃分為不同狀態(tài)類別,以構(gòu)建奶牛進(jìn)食行為數(shù)據(jù)集。再基于YOLO v3算法,利用奶牛進(jìn)食行為數(shù)據(jù)集,訓(xùn)練奶牛進(jìn)食行為識別模型。根據(jù)彩票假設(shè),在訓(xùn)練過程中對模型進(jìn)行幅值迭代剪枝,在模型性能不受影響甚至更優(yōu)的情況下,實(shí)現(xiàn)對奶牛進(jìn)食行為識別模型的壓縮。
視頻數(shù)據(jù)為2020年在內(nèi)蒙古自治區(qū)包頭市某奶牛養(yǎng)殖場采集的52頭泌乳期荷斯坦奶牛進(jìn)食視頻。視頻共3 840段,每段時長45 min,視頻幀高度為1 080像素、寬度為1 920像素、碼率為1 639 kb/s、格式為MPEG4。選用牛舍內(nèi)甬道上方攝像頭的監(jiān)控視頻作為試驗(yàn)數(shù)據(jù),視頻畫面如圖1所示,攝像頭安裝位置如圖2所示。
圖1 牛舍監(jiān)控視頻畫面Fig.1 Cowshed surveillance video screen
圖2 牛舍內(nèi)攝像頭安裝位置Fig.2 Installation position of camera in cowshed
本研究的目的是訓(xùn)練出一個可用于奶牛進(jìn)食行為識別的輕量化模型,采用YOLO v3目標(biāo)檢測網(wǎng)絡(luò),使目標(biāo)的定位與識別同步進(jìn)行。再根據(jù)彩票假設(shè),使用幅值迭代剪枝這一神經(jīng)網(wǎng)絡(luò)壓縮方法使模型輕量化。研究方案流程圖如圖3所示,共包含4部分:數(shù)據(jù)集構(gòu)建、奶牛進(jìn)食行為識別、奶牛進(jìn)食行為識別模型壓縮和結(jié)果分析。
圖3 技術(shù)路線圖Fig.3 Technology route chart
1.2.1數(shù)據(jù)集構(gòu)建
首先使用關(guān)鍵幀提取軟件將視頻轉(zhuǎn)換為關(guān)鍵幀序列。為了提高模型的魯棒性,根據(jù)不同光照條件、奶牛目標(biāo)遮擋情況、奶牛目標(biāo)重疊情況與正負(fù)樣本均衡等情況人工篩選出1 410幅圖像作為數(shù)據(jù)集。再從數(shù)據(jù)集中隨機(jī)選出100幅圖像作為驗(yàn)證集、100幅作為測試集,余下1 210幅作為訓(xùn)練集。使用LabelImg數(shù)據(jù)標(biāo)注軟件對數(shù)據(jù)集中的目標(biāo)進(jìn)行標(biāo)注,其中包括9 310個奶牛目標(biāo)。為了識別奶牛進(jìn)食行為,又將奶牛目標(biāo)分為:進(jìn)食中、等待進(jìn)食、游走。其中進(jìn)食中4 602個、游走653個、等待進(jìn)食3 949個。人工標(biāo)注時對奶牛進(jìn)食行為的判斷依據(jù)為:①奶牛的頭伸出護(hù)欄。②奶牛低頭。③料槽有料。奶牛進(jìn)食行為判斷表如表1所示。表1中T表示滿足該判斷依據(jù),F(xiàn)則表示不滿足。
圖5 部分?jǐn)?shù)據(jù)集圖像Fig.5 Partial dataset images
表1 奶牛進(jìn)食行為判斷Tab.1 Feeding behavior judging of dairy cows
如表1所示,同時滿足3點(diǎn)判斷依據(jù)便判定目標(biāo)為進(jìn)食中,記為Object 1。滿足判斷依據(jù)①但不滿足判斷依據(jù)②或③便判定目標(biāo)為等待進(jìn)食,記為Object 2。不能滿足判斷依據(jù)①便判定目標(biāo)為游走,記為Object 3。奶牛進(jìn)食行為數(shù)據(jù)集數(shù)據(jù)標(biāo)注示意圖如圖4所示,其中目標(biāo)①為標(biāo)注的進(jìn)食中奶牛,目標(biāo)②為等待進(jìn)食奶牛,目標(biāo)③為游走奶牛。目標(biāo)④為不標(biāo)注奶牛。
圖4 奶牛數(shù)據(jù)集標(biāo)注示意圖Fig.4 Schematic of dairy cow dataset annotation
為了提高模型的魯棒性與泛化能力,提高多種條件下奶牛進(jìn)食行為識別模型的性能,保證模型全天候能力,本文從牛舍監(jiān)控視頻中選取不同光照條件、不同密集程度、不同時間段的圖像作為數(shù)據(jù)集。部分?jǐn)?shù)據(jù)集圖像如圖5所示。
1.2.2奶牛進(jìn)食行為識別方法
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)圖像識別技術(shù)對奶牛進(jìn)食行為的識別,需要目標(biāo)檢測模型先定位目標(biāo)再使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural networks, CNN)對目標(biāo)進(jìn)行分類。本文方法基于YOLO v3網(wǎng)絡(luò),該網(wǎng)絡(luò)在各領(lǐng)域應(yīng)用中的表現(xiàn)都較為穩(wěn)定,其參考?xì)埐罹W(wǎng)絡(luò)創(chuàng)建主干架構(gòu),疊加特征與輸入,將結(jié)果作為下一層網(wǎng)絡(luò)的輸入,優(yōu)化了模型的訓(xùn)練效果,降低了梯度爆炸的風(fēng)險。生成新的特征圖采用了多尺度預(yù)測方式,將生成的小尺寸特征用于檢測大尺寸目標(biāo),大尺寸特征用于檢測小尺寸目標(biāo),降低模型對背景的誤檢率,提高小尺寸目標(biāo)識別能力。沒有了目標(biāo)位置預(yù)測的過程,使YOLO系列算法運(yùn)算速度更快,更加適合本研究的應(yīng)用場景。
本文利用YOLO v3算法將奶牛目標(biāo)識別作為回歸問題求解,所輸入的圖像經(jīng)過一次推理便可得到圖像中奶牛目標(biāo)的位置與分類結(jié)果,而區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Regions with CNN, RCNN)[20]將目標(biāo)識別分為分類和回歸兩部分求解。所以YOLO網(wǎng)絡(luò)結(jié)構(gòu)更加簡單,推理速度更快。本文方法使用YOLO v3網(wǎng)絡(luò),將奶牛目標(biāo)分為進(jìn)食中、未進(jìn)食兩種狀態(tài)。由于未進(jìn)食狀態(tài)中的樣本差異過大,在一定程度上會造成召回率過低,所以人工標(biāo)注時將未進(jìn)食奶牛細(xì)分為等待進(jìn)食與游走兩類目標(biāo)進(jìn)行識別,提高了奶牛進(jìn)食行為識別模型的推理速度與召回率。如圖6所示,本文模型的輸入圖像尺寸為416像素×416像素,在各尺度的特征圖的每個網(wǎng)格中設(shè)置3個先驗(yàn)框,每個先驗(yàn)框包含不同尺度的預(yù)測。每個預(yù)測為8維向量,分別表示邊框坐標(biāo)、邊框置信度、對象類別數(shù)量。
圖6 基于YOLO v3的奶牛進(jìn)食行為識別模型結(jié)構(gòu)圖Fig.6 Structure diagram of cow feeding behavior recognition model based on YOLO v3
1.2.3基于彩票假設(shè)的幅值迭代剪枝方法
剪枝是一種成熟的神經(jīng)網(wǎng)絡(luò)壓縮技術(shù),通過刪除神經(jīng)網(wǎng)絡(luò)模型中對推理結(jié)果影響較小的權(quán)重以減少參數(shù)數(shù)量,提高推理性能。彩票假設(shè)提出:通過對一個前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行幅值迭代剪枝,能夠找到一個可以重新訓(xùn)練的稀疏子網(wǎng)絡(luò),通過對子網(wǎng)絡(luò)進(jìn)行訓(xùn)練便可達(dá)到與原始網(wǎng)絡(luò)相近的性能。甚至經(jīng)過多次訓(xùn)練后,稀疏子網(wǎng)絡(luò)性能會優(yōu)于原始稠密網(wǎng)絡(luò),并且其參數(shù)量最少可以減少到原始網(wǎng)絡(luò)的5%~10%。研究發(fā)現(xiàn),使用原始網(wǎng)絡(luò)的初始化權(quán)重對子網(wǎng)絡(luò)進(jìn)行初始化,效果優(yōu)于使用隨機(jī)權(quán)重初始化的子網(wǎng)絡(luò),所以本文方法采用IMP算法從基于YOLO v3的奶牛進(jìn)食行為識別模型中篩選最優(yōu)子網(wǎng)絡(luò),步驟如下:
(1)利用YOLO v3網(wǎng)絡(luò)在COCO2014數(shù)據(jù)集上進(jìn)行訓(xùn)練得到的預(yù)訓(xùn)練權(quán)重初始化網(wǎng)絡(luò),得到權(quán)重W0。
(3)利用奶牛進(jìn)食行為數(shù)據(jù)集訓(xùn)練網(wǎng)絡(luò)至收斂。
(6)重復(fù)步驟(3)~(5)直到模型準(zhǔn)確率大幅下降或參數(shù)數(shù)量達(dá)到要求。幅值迭代剪枝過程示意圖如圖7所示。
圖7 幅值迭代剪枝過程示意圖Fig.7 Iterative magnitude pruning process schematic
本文方法將奶牛目標(biāo)分為進(jìn)食中與非進(jìn)食兩類,需要同時關(guān)注模型對每個類別的識別平均精確率,故選擇平均精度均值作為評價指標(biāo)[21]。
本文使用IMP算法將奶牛進(jìn)食行為識別模型進(jìn)行壓縮,減少其參數(shù)數(shù)量,使其可以部署在低成本設(shè)備上。而IMP算法所使用的非結(jié)構(gòu)化剪枝方法與結(jié)構(gòu)化剪枝不同,非結(jié)構(gòu)化剪枝并不會刪除卷積通道,而是創(chuàng)建一個只有0和1的掩模(mask),使掩模與參數(shù)相乘得到稀疏矩陣,許多參數(shù)僅是被設(shè)置為零,但仍然存在。所以模型推理能力只有在應(yīng)用稀疏計算庫[22]或稀疏計算硬件[23]時提升。為了證明壓縮方法的有效性,采用模型參數(shù)數(shù)量與浮點(diǎn)運(yùn)算次數(shù)(Floating point operations,F(xiàn)LOPs)衡量壓縮效果。
試驗(yàn)環(huán)境為64位CentOS系統(tǒng),最大Turbo頻率為5.10 GHz英特爾至強(qiáng)W-10855M處理器,NVIDIA GeForce RTX 2080Ti GPU,內(nèi)存512 GB,編程語言為 Python 3.6.5,使用Pytorch 1.7.1框架構(gòu)建和訓(xùn)練網(wǎng)絡(luò)模型,開發(fā)工具為PyCharm 2020。
試驗(yàn)中使用基于彩票假設(shè)的IMP算法對奶牛進(jìn)食行為識別模型進(jìn)行壓縮,在IMP算法中使用不同的剪枝率對模型進(jìn)行剪枝,為了得到最合適的剪枝率,分別將剪枝率設(shè)置為20%、40%、60%和80%,在每次迭代后進(jìn)行剪枝,每次迭代包含300個周期(epoch),并設(shè)置早停機(jī)制以防止過擬合,早停參數(shù)為75個epoch。如圖8所示,根據(jù)訓(xùn)練損失值與驗(yàn)證集上平均精度均值的變化曲線,剪枝率20%時選用第12次迭代后的模型;剪枝率40%時選用第4次迭代后的模型;剪枝率60%時選用第3次迭代后的模型;剪枝率80%時選用第1次迭代后的模型。模型測試結(jié)果如表2所示。由表2可知,即便模型剩余參數(shù)數(shù)量相當(dāng),設(shè)置較小剪枝率進(jìn)行多次幅值迭代剪枝的模型也明顯優(yōu)于設(shè)置較大剪枝率而進(jìn)行較少次剪枝的模型,說明IMP中剪枝后的恢復(fù)訓(xùn)練尤為重要,經(jīng)過少量多次的剪枝與恢復(fù)訓(xùn)練能夠更有效地篩選出最優(yōu)稀疏子網(wǎng)絡(luò)。
圖9為不同剪枝率下模型的精確率-召回率曲線。由圖9可知,Object 3是導(dǎo)致整體精確率、召回率低的主要原因。根據(jù)測試圖像來看,因?yàn)閿z像機(jī)處于固定位置,而游走目標(biāo)的姿態(tài)各異、遮擋程度不同,而由于牛舍場景的特殊情況,數(shù)據(jù)集中“游走”目標(biāo)樣本數(shù)量較少,所以會導(dǎo)致模型對游走目標(biāo)的識別能力較弱。但本文關(guān)注的是奶牛進(jìn)食行為識別問題,重點(diǎn)在于對“進(jìn)食中”與“等待進(jìn)食”兩種目標(biāo)的識別,無需過分關(guān)注游走目標(biāo)的識別問題。經(jīng)過多次試驗(yàn)發(fā)現(xiàn),使用剪枝率20%和剪枝率40%對模型進(jìn)行剪枝時,與不進(jìn)行幅值迭代剪枝的模型相比,其運(yùn)算性能皆有小幅提升。其中應(yīng)用剪枝率40%、第4次迭代剪枝后所得模型的參數(shù)數(shù)量減少了87.04%,召回率提升了14.1個百分點(diǎn),平均精度均值提高了4.2個百分點(diǎn),精確率提升1.0個百分點(diǎn)。因?yàn)槟膛5倪M(jìn)食行為會在一個時間段內(nèi)保持不變,通過不斷地對監(jiān)控視頻幀進(jìn)行檢測,當(dāng)目標(biāo)檢測模型的精確率與召回率維持在70%以上時,基本可以滿足本研究對于奶牛進(jìn)食行為識別任務(wù)的需要。本文模型在奶牛進(jìn)食行為測試數(shù)據(jù)集上的識別情況如圖10所示。
總的來看,在奶牛進(jìn)食行為數(shù)據(jù)集上,通過執(zhí)行IMP算法,在多次剪枝后可以篩選出一個可訓(xùn)練的、具有更優(yōu)性能的稀疏子網(wǎng)絡(luò)。本文提出的基于幅值迭代剪枝的稀疏網(wǎng)絡(luò)多目標(biāo)奶牛進(jìn)食行為識別方法具有良好精確率與召回率,同時具有參數(shù)數(shù)量少、運(yùn)算速度快等特點(diǎn),可為奶牛行為監(jiān)測提供低成本的方法支持。
圖8 不同剪枝率下平均精度均值與損失值變化曲線Fig.8 Change curves of mAP and loss value at different pruning rates
表2 不同剪枝率下模型測試結(jié)果Tab.2 Model test results at different pruning rates
圖9 不同剪枝率下模型精確率-召回率曲線Fig.9 P-R curves of models with different pruning rates
圖10 本文模型對奶牛進(jìn)食行為識別效果Fig.10 Effectiveness of this model in identifying feeding behavior of dairy cows
利用奶牛養(yǎng)殖場內(nèi)奶牛牛舍監(jiān)控視頻制作了奶牛進(jìn)食行為識別數(shù)據(jù)集;基于YOLO v3目標(biāo)檢測算法構(gòu)建了奶牛進(jìn)食行為識別模型,實(shí)現(xiàn)了對多目標(biāo)奶牛進(jìn)食行為的識別;基于彩票假設(shè),使用IMP算法對基于YOLO v3的奶牛進(jìn)食行為識別模型進(jìn)行剪枝。經(jīng)過多次不同剪枝率的試驗(yàn),最終獲得的稀疏子網(wǎng)絡(luò)在測試集中測試結(jié)果為:3類奶牛目標(biāo)的平均精度均值為79.9%,平均精確率為82.1%,平均召回率為70.9%。模型參數(shù)數(shù)量為7.96×106個,僅為原始稠密網(wǎng)絡(luò)參數(shù)總數(shù)的12.96%,在減少網(wǎng)絡(luò)參數(shù)的同時模型性能有所提高,證明了通過幅值迭代剪枝技術(shù)降低奶牛行為監(jiān)測成本、提高奶牛行為監(jiān)測實(shí)時性的可行性。驗(yàn)證了基于彩票假設(shè)在奶牛行為監(jiān)測任務(wù)上篩選出更優(yōu)稀疏子網(wǎng)絡(luò)的可能性。