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