何海燕,鄧國浩,胡鵬飛,李紅飛
(山西農(nóng)業(yè)大學(xué)信息科學(xué)與工程學(xué)院,山西 晉中 030801)
在家禽飼養(yǎng)行業(yè)中,種蛋孵化過程耗時、耗能,為節(jié)約養(yǎng)殖成本,提高經(jīng)濟(jì)效益,在孵化過程中及時并準(zhǔn)確地剔除無精蛋有著重要的意義。無精蛋若能及時被挑選出來,還可以減少營養(yǎng)成分的流失。
近年來,我國的禽蛋業(yè)有很大的發(fā)展,現(xiàn)在的孵化設(shè)備已經(jīng)有了自動化的控制功能,但是對于無精蛋的剔除工作,還是主要依靠傳統(tǒng)的人工照蛋的方法,在孵化的第7~8 天手持簡易照蛋器進(jìn)行挑選,這種方法不僅耗費(fèi)人力物力、效率低下,而且對照蛋環(huán)境要求嚴(yán)格。同時受精蛋不能太長時間暴露在空氣中,否則會嚴(yán)重影響受精蛋的質(zhì)量,導(dǎo)致孵化率下降,很難做到定量化和標(biāo)準(zhǔn)化。為了提高雞蛋孵化率和保證無精蛋品質(zhì),使經(jīng)濟(jì)效益最大化,需要對雞蛋孵化過程中的受精蛋挑選方法進(jìn)行改良。
國內(nèi)外許多學(xué)者和研究人員都對早期孵化雞蛋進(jìn)行了積極探索和研究,目前常用紅外光譜技術(shù)[1-2]、機(jī)器視覺[3-4]、生物電與機(jī)器學(xué)習(xí)結(jié)合[5]和神經(jīng)網(wǎng)絡(luò)[6-7]等方法對早期孵化禽蛋進(jìn)行無損檢測。本研究將深度學(xué)習(xí)與機(jī)器視覺相結(jié)合,對雞蛋中的受精蛋進(jìn)行識別和定位,可為養(yǎng)殖業(yè)自動化機(jī)械挑選提供技術(shù)支持,逐步實(shí)現(xiàn)用自動化的檢測辦法來代替人工挑選[8-10]。
本研究利用機(jī)器視覺,通過圖像采集裝置獲取雞蛋孵化第3天的圖像,選擇深度學(xué)習(xí)的YOLO V5 算法自動獲取圖像特征并進(jìn)行分析訓(xùn)練,再利用訓(xùn)練好的模型對雞蛋進(jìn)行挑選。本設(shè)計(jì)包括光源控制、圖像采集、數(shù)據(jù)處理、訓(xùn)練模型及驗(yàn)證模型,如圖1所示。
圖1 總體方案設(shè)計(jì)
首先設(shè)計(jì)一套圖像采集裝置,利用攝像頭采集圖片,將圖片進(jìn)行預(yù)處理,使用labelimg 對目標(biāo)進(jìn)行類別標(biāo)注,再將其按比例分為訓(xùn)練集和驗(yàn)證集,選擇合適的權(quán)重,建立受精蛋挑選模型,在樹莓派上進(jìn)行測試,分析結(jié)果。
采用樹莓派4B BCM2711 型CPU,8 GB 內(nèi)存,操作系統(tǒng)為樹莓派官方系統(tǒng)raspberry pi os,深度學(xué)習(xí)環(huán)境使用pytorch 框架搭建,本研究的訓(xùn)練與測試均在python3.7版本下完成。
在圖像采集過程中考慮到被測物表面分光反射特性,本研究選擇無輻射、低功耗的冷光LED 燈作為光源,并用樹莓派輸入輸出引腳驅(qū)動繼電器來控制光源,利用物聯(lián)網(wǎng)平臺可以通過手機(jī)控制光源開關(guān),控制電路如圖2所示。
圖2 光源控制電路
圖像采集模塊主要包括攝像頭、采集箱和傳送帶三部分,如圖3所示。
圖3 圖像采集裝置圖
攝像頭的選擇采用樹莓派CSI 攝像頭。CSI 攝像頭相較USB 攝像頭對CPU 占用率小,分辨率高,且在前期實(shí)驗(yàn)過程中,樹莓派對USB攝像頭的支持不如CSI攝像頭完美,偶爾會出現(xiàn)無法使用USB攝像頭的情況,經(jīng)過對比實(shí)驗(yàn)結(jié)果,最終選擇樹莓派CSI攝像頭。
采集箱采用普通紙箱。為了避免鏡面反射對后期提取目標(biāo)區(qū)域和自然光的影響,對采集箱內(nèi)環(huán)境進(jìn)行了處理,使箱內(nèi)處于無光且黑暗的條件下。實(shí)驗(yàn)過程中發(fā)現(xiàn)箱內(nèi)存在漏光現(xiàn)象,被拍攝雞蛋表面反光,采集的圖像不清晰,影響實(shí)驗(yàn)結(jié)果,為防止這種現(xiàn)象發(fā)生,在后續(xù)實(shí)驗(yàn)中用黑色布條對漏光縫隙處進(jìn)行了處理。
實(shí)驗(yàn)開始時,先將暗箱內(nèi)的光源和樹莓派CSI 攝像頭打開,調(diào)整攝像頭參數(shù),再開啟傳送帶,當(dāng)傳送帶將雞蛋傳送到暗箱后,暗箱上方的攝像頭開始捕捉圖像,并將采集到的圖像傳送到控制器??刂破鲗D像進(jìn)行處理,判斷是否為受精蛋,并將識別結(jié)果顯示出來。
利用cv2.VideoCapture()函數(shù)捕獲攝像頭圖像,捕獲視頻當(dāng)前幀并用imutils.resize()設(shè)置視頻幀圖像大小,通過時間函數(shù)time.sleep()完成定時拍照。核心代碼如下:
2.3.1 圖像分割
將獲取的一組雞蛋圖像分割成單張雞蛋,利用image.size 得到圖像的長度和寬度,原來圖像的長寬分別除以雞蛋的列數(shù)column 和行數(shù)row 得到新圖像的長寬,再利用兩層循環(huán),生成column*row 張基于原圖位置的圖片,并按從左到右、從上到下的順序?qū)D像存放在一個列表中。
核心代碼如下:
2.3.2 制作數(shù)據(jù)集
在深度學(xué)習(xí)模型測試中,做好數(shù)據(jù)的清洗和標(biāo)注能夠提高輸入數(shù)據(jù)的質(zhì)量和預(yù)測的準(zhǔn)確率。將存放在JPEGImages 文件夾的雞蛋圖片,使用labelimg數(shù)據(jù)標(biāo)注工具在每張圖片上標(biāo)注目標(biāo)類別,得到標(biāo)注格式為.xml 的數(shù)據(jù)。將.xml 文件內(nèi)目標(biāo)框坐標(biāo)(xmin,ymin,xmax,ymax)歸一化處理后轉(zhuǎn)換成為.txt 格式標(biāo)簽,得到目標(biāo)類別、標(biāo)注框的中心坐標(biāo)(X,Y)以及相對應(yīng)的高(H)和寬(W)等信息。
歸一化中心坐標(biāo):
標(biāo)注框的高和寬:
W=(xmax-xmin)/width,H=(ymax-ymin)/height
核心代碼如下:
將數(shù)據(jù)集按7∶3 的比例劃分訓(xùn)練集和驗(yàn)證集,把訓(xùn)練、驗(yàn)證和測試圖片的絕對路徑寫到對應(yīng)的.txt文件中,完成數(shù)據(jù)集的準(zhǔn)備。
本研究采用基于深度神經(jīng)網(wǎng)絡(luò)的對象識別和定位的YOLO V5 算法自動獲取圖像特征并進(jìn)行分析訓(xùn)練。其算法框架可分為輸入端、基準(zhǔn)網(wǎng)絡(luò)、Neck 和Head 輸出端四個模塊。輸入端將輸入圖像縮放到網(wǎng)絡(luò)輸入大小,并進(jìn)行一系列歸一化操作,用基準(zhǔn)網(wǎng)絡(luò)提取一些通用的特征表示,通過Neck 網(wǎng)絡(luò)進(jìn)一步提升和優(yōu)化特征的多樣性及魯棒性,最后用Head輸出端來完成目標(biāo)檢測結(jié)果的輸出。網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。
圖4 YOLO V5 網(wǎng)絡(luò)結(jié)構(gòu)
通過圖像作為輸入,將其分割成i×i 個單元格,用單元格預(yù)測圖像中目標(biāo)的邊界框、置信度和類別概率,確定圖像中目標(biāo)位置及其類別,實(shí)現(xiàn)對受精蛋的自動挑選和定位。
在樹莓派上構(gòu)建深度學(xué)習(xí)環(huán)境,指定標(biāo)注數(shù)據(jù)、類別、數(shù)據(jù)集存儲路徑、預(yù)訓(xùn)練模型、anchors、輸入尺寸。用ImageNet 數(shù)據(jù)集對卷積網(wǎng)絡(luò)的前20 個卷積層、池化層和全連接層進(jìn)行預(yù)訓(xùn)練,數(shù)據(jù)訓(xùn)練好之后生成兩個權(quán)重文件,用得到的網(wǎng)絡(luò)參數(shù)初始化模型前20 個卷積層的網(wǎng)絡(luò)參數(shù),用VOC 數(shù)據(jù)集進(jìn)行目標(biāo)識別的訓(xùn)練和預(yù)測。
為了驗(yàn)證模型的可靠性和準(zhǔn)確性,替換已經(jīng)訓(xùn)練好的模型參數(shù),導(dǎo)出pytorch 訓(xùn)練好的模型,打開攝像頭,獲取當(dāng)前圖像,調(diào)整圖像大小,將圖像傳遞給訓(xùn)練好的模型,輸出檢測結(jié)果。驗(yàn)證結(jié)果如圖5所示。
圖5 驗(yàn)證結(jié)果
利用模型對180 枚雞蛋進(jìn)行驗(yàn)證,其中受精蛋誤判數(shù)3 枚,無精蛋誤判數(shù)2 枚,共錯判5 枚,準(zhǔn)確率為97.2%。結(jié)果如表1所示。
表1 雞蛋挑選檢測結(jié)果
1)本研究利用圖像處理方法處理并制作數(shù)據(jù)集,通過深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練雞蛋圖像,自動提取受精蛋特征,減少了人為參與,通過驗(yàn)證模型,能夠?qū)崿F(xiàn)對受精蛋和無精蛋的區(qū)分和定位,通過檢測模型發(fā)現(xiàn)準(zhǔn)確率達(dá)95%以上。對檢測結(jié)果進(jìn)行分析發(fā)現(xiàn),光源的強(qiáng)度和采集箱的環(huán)境可能會對檢測結(jié)果造成影響,可進(jìn)一步改變實(shí)驗(yàn)環(huán)境,以達(dá)到更好的效果。本研究只是解決了種蛋識別自動化問題,還沒有實(shí)現(xiàn)硬件挑選自動化。
2)根據(jù)存在的問題,今后還可以從以下幾個方面繼續(xù)研究:在利用圖像采集模塊采集雞蛋圖像時,考慮在暗度更高、環(huán)境更加穩(wěn)定的條件下進(jìn)行試驗(yàn),避免因環(huán)境因素所造成的圖像噪聲對后續(xù)研究過程的影響;由于獲取的數(shù)據(jù)不多,可能導(dǎo)致模型質(zhì)量不好;做數(shù)據(jù)集之前改進(jìn)圖像增強(qiáng)的方法,提高圖像處理效果,使目標(biāo)特征更明顯,提高預(yù)測準(zhǔn)確率;增加硬件挑選自動化模塊。