黃 靜,張 晉
(浙江理工大學(xué)信息學(xué)院,浙江 杭州10338)
近幾年由于需求增多,國內(nèi)外豬的養(yǎng)殖產(chǎn)業(yè)規(guī)模日益龐大,養(yǎng)殖規(guī)模大帶來的壓力是豬的健康問題及監(jiān)管問題所致,若可以提前發(fā)現(xiàn)豬群中存在隱患豬,就可以提前預(yù)防及干預(yù),進(jìn)而提前處理養(yǎng)殖過程中的風(fēng)險與隱患,減少對整個養(yǎng)殖環(huán)境的不利影響,進(jìn)而更好的保證養(yǎng)殖生產(chǎn)的可持續(xù)性與健康化。
目前豬養(yǎng)殖場中,一般都是以人工監(jiān)控的方式進(jìn)行監(jiān)管,這種監(jiān)管方式存在不穩(wěn)定的主觀因素,不僅對人力資源過于浪費,而且需要人工對每頭豬進(jìn)行長時間觀察與識別,對于數(shù)量多且繁殖規(guī)模大的養(yǎng)殖場是不適合的監(jiān)管模式,因此,后來推出了自動化的豬體監(jiān)管系統(tǒng),即通過傳感器監(jiān)測豬行為變化并提供反饋。包括用于個體識別的無線射頻標(biāo)簽、用于檢測運動行為的加速度計量器、用于檢測跛腳行為的壓力墊、用于檢測飲水行為的水量傳感器等[1]。而附著于豬身或豬耳的耳標(biāo)傳感器,存在普遍問題,即在豬的運動過程中發(fā)生碰撞剮蹭而脫落,另外耳標(biāo)打入是對豬本身也有傷害影響,若對傷口處理不適當(dāng)會引起傷口發(fā)炎等現(xiàn)象,引起豬的應(yīng)激反應(yīng)進(jìn)而更容易使耳標(biāo)脫落,因此非接觸式的監(jiān)管對于動物畜牧類來說更為合適與方便。
一般非接觸式監(jiān)管采用的方式是以固定在豬棚中的攝像頭作為采集數(shù)據(jù)的源頭,數(shù)據(jù)傳入主控室或監(jiān)管室,由監(jiān)管室管理人員實時監(jiān)控/監(jiān)管,這種方法存在的問題是,在現(xiàn)場的養(yǎng)殖人員若發(fā)現(xiàn)豬場異常情況,無法第一時間記錄異常豬的情況。本文針對這個問題設(shè)計了一種基于樹莓派的便攜式豬體識別相機(jī),提供給養(yǎng)殖現(xiàn)場的工作人員使用,當(dāng)工作人員發(fā)現(xiàn)有異常豬的情況時,可以利用此便攜移動設(shè)備拍下目標(biāo)豬的圖像數(shù)據(jù),再通過wifi 將圖像信息傳入到豬場監(jiān)管處或主控室,可以提高發(fā)現(xiàn)異常豬的效率,同時可以較為準(zhǔn)確地在豬群中找到異常豬。
本設(shè)計利用樹莓派4B作為總控制器,用以實現(xiàn)數(shù)據(jù)處理以及數(shù)據(jù)轉(zhuǎn)發(fā)等功能;USB 攝像頭模組用以獲取豬體的圖像信息,以完成為對豬的識別。輔以ESP32鋰電池電源板為便攜式設(shè)備提供電源。圖像部分以YOLOv5 目標(biāo)檢測模型以實現(xiàn)對豬的識別與目標(biāo)檢測,同時使用pyqt 來設(shè)計出拍照時所用的界面,使該便攜式設(shè)備可以實現(xiàn)使用者在現(xiàn)場對目標(biāo)豬識別拍照,并將圖像數(shù)據(jù)編號后存儲本地,并同時上傳至服務(wù)器或監(jiān)管室設(shè)備處的功能。整個系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
Raspberry Pi(中文名為“樹莓派”,簡寫為RPi,是為學(xué)生計算機(jī)編程教育而設(shè)計,只有信用卡大小的微型電腦,其系統(tǒng)基于Linux。本設(shè)計采用的是Raspbian官方推薦的操作系統(tǒng),它是Debian 在ARM 的編譯版,加上針對樹莓派深度定制的硬件驅(qū)動與軟件程序。作為最新4B 版本的樹莓派,相比之前幾個版本,其優(yōu)勢在于,SOC 由Broadcom BCM2837 系列換成了Broadcom BCM2711 系列,CPU 由40nm 工藝升級為28nm 工藝級別,藍(lán)牙由4.1 版本升級至5.0 版本,同時USB 接口也開始配備3.0 級別接口。諸多部件的升級使得本設(shè)計選擇樹莓派4B作為主控模塊。
攝像頭模塊采用的是200萬像素雙目夜視攝像頭模組,型號為WSD-2882-V1.0,其感光尺寸可達(dá)1/2.7 inch cmos,雙攝像頭均可實現(xiàn)RGB+近紅外鏡頭的功能,最大分辨率可達(dá)1920*1080,在攝像頭中,焦距越小,成像范圍越大。鏡頭毫米數(shù)越大,看的越遠(yuǎn),在同樣距離監(jiān)控視角越小。該攝像頭模塊可以達(dá)到本設(shè)計對于目標(biāo)識別的要求。
該模塊是便攜式移動電源。支持3V/1A 和5V/2.2A 兩個電壓輸出,5V 電壓輸出的額定電流為2.2A。最大支持3A 電流,電流的輸出取決于18650 電池,MICRO USB 充電電流600mA-800mA,最多支持兩節(jié)18650 電池。本模塊用于給整個設(shè)備進(jìn)行供電,以支撐可隨身攜帶使用。同時該模塊具有帶保護(hù)功能,以避免出現(xiàn)過充電與過放電的隱患。
豬體識別部分系統(tǒng)設(shè)計如圖2所示。
圖2 識別系統(tǒng)流程圖
YOLO 系列網(wǎng)絡(luò)模型是最為經(jīng)典的one-stage 算法,也是目前工業(yè)領(lǐng)域使用得最多的目標(biāo)檢測網(wǎng)絡(luò),目前已經(jīng)有五個較為成熟的版本。YOLOv5網(wǎng)絡(luò)模型是YOLO 系列的最新版本,在繼承了原有YOLO 網(wǎng)絡(luò)模型優(yōu)點的基礎(chǔ)上,具有更優(yōu)的檢測精度和更快的推理速度。YOLOv5 系列可分為四個模型,分別為YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,四個模型的網(wǎng)絡(luò)結(jié)構(gòu)基本一致,只是其中的模塊數(shù)量與卷積核個數(shù)不一致。
YOLOv5目標(biāo)檢測模型相比于其他YOLO系列模型在網(wǎng)絡(luò)結(jié)構(gòu)上更加復(fù)雜,同時在數(shù)據(jù)增強(qiáng)與訓(xùn)練策略上也使用很多技巧來提升模型的檢測精度與速度[2-4]。YOLOv5 網(wǎng)絡(luò)模型可以分為四部分,第一部分為輸入端(input),負(fù)責(zé)Mosaic 數(shù)據(jù)增強(qiáng),自適應(yīng)瞄框計算,自適應(yīng)圖片縮放。第二部分為主干網(wǎng)絡(luò)(Backbone),負(fù)責(zé)目標(biāo)的特征提取,由Focus 模塊、BottlenCSP 模塊、SPP模塊組成[5-7]。第三部分為頸部(Neck)網(wǎng)絡(luò),主要是對主干網(wǎng)絡(luò)所提取的特征進(jìn)行增強(qiáng),所采用的模塊是PANet路徑聚合結(jié)構(gòu)。第四部分為預(yù)測部分(Prediction),采用的是GIOU_Loss損失函數(shù)預(yù)測框[8-10]。
3.3.1 獲得預(yù)訓(xùn)練權(quán)重
為了縮短網(wǎng)絡(luò)的訓(xùn)練時間,并達(dá)到更好的精度,我們一般加載預(yù)訓(xùn)練權(quán)重進(jìn)行網(wǎng)絡(luò)的訓(xùn)練。而YOLOv5的5.0 版本給我們提供了幾個預(yù)訓(xùn)練權(quán)重,我們可以去對應(yīng)我們不同的需求,選擇不同的版本的預(yù)訓(xùn)練權(quán)重??梢垣@得權(quán)重的名字和大小信息,可以預(yù)料的到,預(yù)訓(xùn)練權(quán)重越大,訓(xùn)練出來的精度就會相對來說越高,但是其檢測的速度就會越慢。
3.3.2 修改數(shù)據(jù)與模型配置文件
訓(xùn)練目標(biāo)檢測模型需要修改兩個yaml 文件中的參數(shù)。一個是data 目錄下的相應(yīng)的yaml 文件,一個是model目錄文件下的相應(yīng)的yaml文件。修改data目錄下的相應(yīng)的yaml文件。找到目錄下的voc.yaml文件,將該文件復(fù)制一份,將復(fù)制的文件重命名,最好和項目相關(guān),這樣方便后面操作。由于該項目使用的是yolov5s.pt這個預(yù)訓(xùn)練權(quán)重,所以要使用models目錄下的yolov5s.yaml文件中的相應(yīng)參數(shù)。
本次實驗中通過使用豬檢測訓(xùn)練集訓(xùn)練YOLOv5s網(wǎng)絡(luò)模型,使用驗證集來檢驗該檢測模型的表現(xiàn),再通過測試集對模型進(jìn)行測試。訓(xùn)練的epoch 為300,在訓(xùn)練約150個epoch后,同樣其驗證集損失下降到一定程度后已經(jīng)基本保持不變,該模型也已訓(xùn)練完成,所以選擇訓(xùn)練150個epoch后的網(wǎng)絡(luò)模型進(jìn)行后續(xù)實驗。
實驗所需圖像來源于網(wǎng)絡(luò)豬照片和一些在金華某屠宰場部分實地拍攝視頻所截取的圖像照片,共2000張,圖像保存格式為JPG。數(shù)據(jù)標(biāo)注采用Labelimg 工具對圖像數(shù)據(jù)進(jìn)行標(biāo)注,標(biāo)注后會自動形成目標(biāo)檢測模型所用數(shù)據(jù)集,為了擴(kuò)充數(shù)據(jù)集數(shù)量,對已采集的數(shù)據(jù)圖像進(jìn)行一系列數(shù)據(jù)增強(qiáng)技術(shù)擴(kuò)充數(shù)據(jù)集,例如翻轉(zhuǎn)、隨機(jī)旋轉(zhuǎn)、隨機(jī)飽和度和明度調(diào)節(jié)、隨機(jī)亮度調(diào)節(jié)、隨機(jī)加噪等,完成后整合為訓(xùn)練集部分,用以模型訓(xùn)練,同時將剩下的實地拍攝視頻做分幀截取,整合出500張圖像數(shù)據(jù)作為測試集來進(jìn)行驗證使用。
為了使用者更方便采集豬的圖像數(shù)據(jù)信息,本設(shè)計利用pyQt 編寫出一個可供使用者拍照并記錄目標(biāo)圖像編號的界面,在該界面操作可以實現(xiàn)實時拍照并編號,再將編號后的圖像數(shù)據(jù)信息存儲在本地文件夾中,進(jìn)而下一步可以選擇本地操作或通過網(wǎng)絡(luò)上傳至服務(wù)器或監(jiān)管室處設(shè)備,進(jìn)行數(shù)據(jù)存儲與分析。
將從屠宰場實地拍攝片段視頻用于驗證識別效果,將識別出的豬在驗證視頻中用紅色框標(biāo)注出,效果如圖3,圖4所示。
圖3 識別效果圖1
圖4 識別效果圖2
設(shè)備基本功能完整,采用ESP32 鋰電池電源板為整個設(shè)備供電,同時搭配HDMI LCD5寸顯示觸摸屏,用以更好提高設(shè)備的可操作性,便攜式設(shè)備可以完全脫離PC,操作者可以使用該便攜式設(shè)備對目標(biāo)豬進(jìn)行拍照,編號,存儲圖像數(shù)據(jù),在連接網(wǎng)絡(luò)情況下可以上傳數(shù)據(jù),基本實現(xiàn)便攜式豬識別照相機(jī)的功能,設(shè)備實物圖如圖5所示。
圖5 設(shè)備實物圖
本設(shè)計采用樹莓派作為主控核心,配以攝像頭模塊及觸摸顯示屏等其他硬件部分配件,同時采用YOLOv5 目標(biāo)檢測算法為豬識別提供檢測方法,搭建出便攜式豬識別相機(jī),實現(xiàn)了豬場工作人員當(dāng)發(fā)現(xiàn)有異常豬存在時,可隨時使用該設(shè)備對相機(jī)圖像中的豬進(jìn)行識別,并手動拍照保存下目標(biāo)豬的圖像數(shù)據(jù),再進(jìn)行數(shù)據(jù)上傳,為豬場在監(jiān)測豬日?;顒拥倪^程提供了更及時有效的方法與工具。此設(shè)計經(jīng)多次流程測試,已達(dá)到基本功能。