李德平,朱偉興
(江蘇大學(xué)電氣信息工程學(xué)院,江蘇鎮(zhèn)江 212013)
我國是豬肉消費大國,也是養(yǎng)豬大國,在生豬養(yǎng)殖過程中對生豬行為進(jìn)行監(jiān)測是評價生豬健康的重要環(huán)節(jié)[1]。商業(yè)化養(yǎng)殖場人工監(jiān)測存在勞動力成本高和主觀誤差等缺點,現(xiàn)代化生豬養(yǎng)殖及其重要。計算機(jī)視覺技術(shù)的發(fā)展降低了生豬養(yǎng)殖場勞動力投入和生產(chǎn)成本,已成為監(jiān)測生豬養(yǎng)殖的重要手段,對生豬養(yǎng)殖規(guī)模化和集中化起著重要作用。計算機(jī)視覺技術(shù)主要用于生豬行為分析[3-4]和身份識別[5-6]等方面。
俯視群養(yǎng)豬行為和身份分析日益受到關(guān)注,而個體層次上的數(shù)據(jù)分析擁有更多優(yōu)勢,因此監(jiān)測生豬養(yǎng)殖一個關(guān)鍵步驟和經(jīng)典難題是將生豬從背景中分離出來,準(zhǔn)確提取個體豬信息。對于背景復(fù)雜的俯視群養(yǎng)豬視頻序列(如光變化背景、尿漬、水漬、糞便及地上其他物體,不同顏色的前景對象,群居狀態(tài)下的擁擠粘連等),目標(biāo)的有效提取仍然具有挑戰(zhàn)性,需要進(jìn)一步研究。豬圈中生豬密度越高,分割困難就越大,尤其在采食區(qū)域,由于生豬采食時發(fā)生擁擠、碰撞和攻擊等劇烈運動,造成目標(biāo)難以獲取,粘連的情況使分割難度加大。
常用的生豬分割方法有閾值分割、邊緣檢測分割、分水嶺分割、基于圖論分割、幀差法和背景差分法等。Guo等[7-8]采用自適應(yīng)分區(qū)和多閾值分割對飲食區(qū)域生豬進(jìn)行分割。該方法對目標(biāo)進(jìn)行兩次分割,第二次分割是在第一次分割結(jié)果基礎(chǔ)上劃分有效區(qū)域從而進(jìn)行精確分割。該分割方法雖效果較好,但沒有考慮到粘連情況。孫龍清等[9]結(jié)合交互式分水嶺算法提出改進(jìn)的Graph Cut 算法,交互式分割生豬圖像,明顯提高了分割精度。但是這種方法在分割過程中需要人為標(biāo)記前景和背景像素,無法達(dá)到自動化分割目的。Wang 等[10]采用背景差分獲取生豬目標(biāo)區(qū)域。對于背景差分法首先需要一副背景圖片,而在群養(yǎng)豬條件下將豬移動到其他地方獲得一副背景圖片顯然是不可取的。楊阿慶等[11]利用全卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)母豬與仔豬的粘連分割。上述基于深度學(xué)習(xí)的圖像分割方法可以完整分割出生豬目標(biāo),但是分割后由于生豬粘連(尤其是在采食區(qū)域),無法實現(xiàn)個體豬提取。因此,需要研究更具普適性的生豬目標(biāo)分割算法。
本文提出一種多閾值的Otsu 分割方法,該方法結(jié)合基于深度學(xué)習(xí)的目標(biāo)檢測方法完成生豬個體分割。首先訓(xùn)練一個YOLO 目標(biāo)檢測模型[12],對生豬目標(biāo)進(jìn)行端到端檢測。該框架能檢測出圖像中所有訓(xùn)練對象的位置。在原始圖片中檢測到多個目標(biāo)框,每個目標(biāo)框內(nèi)最多只有一頭豬。然后采用多閾值的Otsu 分割方法對框內(nèi)目標(biāo)進(jìn)行分割[13],得到準(zhǔn)確的分割結(jié)果。所得到的豬個體可以用來分析豬的飲食行為以及估計豬的體重。
實驗的視頻數(shù)據(jù)來自江蘇大學(xué)國家重點學(xué)科農(nóng)業(yè)電氣化與自動化的實驗基地——鎮(zhèn)江?,斈翗I(yè)有限公司養(yǎng)殖場。通過改建試驗用豬舍,安裝拍攝俯視視頻的圖像采集系統(tǒng),對有7 只豬的豬圈進(jìn)行監(jiān)控。攝像機(jī)位于豬舍(長×寬×高為3.5m×3m×1m)正上方,相對于地面垂直高度約為4m,視頻采集平臺如圖1 所示。攝像機(jī)采用灰點公司FL3-U3-88S2C-C 型號攝像機(jī),相機(jī)成像芯片為Sony 的CMOS,輸出RGB 彩色視頻,圖像分辨率為1 760×1 840 像素。試驗在天氣晴好的情況下隨機(jī)采集5 天視頻,每天8:00-17:00 時間段,除去人工介入等干擾因素影響,共獲得有效視頻400 多輯,每輯時長2min 左右,所拍攝的視頻幀為25 幀/s,從每天的有效視頻中挑選出6 輯視頻,共采集90 000(120×25×6×5)幀圖像。
本文算法流程如圖2 所示。該流程主要分為3 個階段,具體方法如下:
(1)使用自適應(yīng)直方圖均衡化增強(qiáng)技術(shù)進(jìn)行圖片預(yù)處理,并劃分采食區(qū)域。
(2)在Tensorflow 深度學(xué)習(xí)平臺上對YOLO 網(wǎng)絡(luò)進(jìn)行微調(diào),然后針對采食區(qū)域的生豬進(jìn)行端到端檢測。
(3)將檢測到的目標(biāo)框中的個體豬利用多閾值Otsu 分割方法,將圖片像素分為2、3 或4 類,分別劃分1、2 或3 個閾值,然后將屬于前景的區(qū)域疊加起來并結(jié)合形態(tài)學(xué)處理,最終得到較為完整的目標(biāo)輪廓。
Fig.1 Video capture platform and video frame sample acquired圖1 視頻采集平臺及獲取的視頻幀
Fig.2 Individual segmentation flow圖2 個體分割流程
如圖3 所示(彩圖掃OSID 碼可見,下同),豬圈可分為不同的區(qū)域,這些區(qū)域都與豬的特定行為有關(guān),如豬喜歡擠在角落里,睡在休息區(qū),采食和飲水區(qū)的豬總是站在特定位置。圖3(a)為俯視群養(yǎng)豬單幀實驗圖像示例。通過仔細(xì)觀察發(fā)現(xiàn),所拍攝的視頻周圍存在大量不必要的區(qū)域占用了計算單元,為此手動設(shè)置有效區(qū)域,如圖3(b)所示,紅框內(nèi)像素為有效區(qū)域。由于大型養(yǎng)豬場采用集中喂養(yǎng)和封閉式管理,從養(yǎng)豬場收集到的圖像光線通常很弱。因此,圖像直方圖的灰度范圍較窄,位于較低層次。本文通過自適應(yīng)直方圖均衡化有效區(qū)域進(jìn)行增強(qiáng),增強(qiáng)的主要步驟是將采集到的彩色圖像從RGB 色彩空間轉(zhuǎn)換到HSV 色彩空間,保持色調(diào)(H)、飽和度(S)通道不變,對亮度(V)通道進(jìn)行自適應(yīng)直方圖均衡化增強(qiáng)。將增強(qiáng)后的圖像再轉(zhuǎn)換到RGB 顏色空間,如圖3(c)所示,得到動態(tài)范圍較大的增強(qiáng)圖像。
Fig.3 Experimental original picture and processed image圖3 實驗原圖及處理后圖像
從圖3 可以看出,經(jīng)過自適應(yīng)直方圖均衡化處理后的圖片亮度和對比度都有所提高,在視覺上前景目標(biāo)更加清晰。
從圖3(a)可以發(fā)現(xiàn)豬的活動范圍有限,每只豬只能在規(guī)定的范圍內(nèi)活動。在豬發(fā)生采食行為時,由于不同時間在采食區(qū)的豬數(shù)量不同,情況較為復(fù)雜,因此定義了采食區(qū)域。為適應(yīng)后期的目標(biāo)檢測任務(wù),將圖片尺寸統(tǒng)一調(diào)整為416×416 像素,以食槽中心點為圓心,圖片尺寸(416 像素)的2/3 為半徑劃分采食區(qū)域,如圖4 所示。
Fig.4 Division of feeding area(with the center of trough as the center and 416*2/3 as the radius)圖4 采食區(qū)域的劃分(以食槽中心點為圓心,416*2/3 為半徑)
本文檢測的目標(biāo)較大,YOLO 網(wǎng)絡(luò)在實時性和檢測精度上完全符合預(yù)期,因此對YOLO 生豬檢測進(jìn)行微調(diào)。由于深度學(xué)習(xí)對于訓(xùn)練樣本的數(shù)量要求較多,而拍攝的視頻數(shù)據(jù)相似度較高,為提高模型泛化能力,從上述9 000 幅圖片中選取差別較大的200 幅圖片,另外從網(wǎng)絡(luò)上下載不同背景的俯視群養(yǎng)豬圖片1 448 幅,共計1 648 幅圖片構(gòu)成訓(xùn)練集。YOLO 模型在MSCOCO 上進(jìn)行預(yù)訓(xùn)練[14],然后利用自身的數(shù)據(jù)集對預(yù)訓(xùn)練的權(quán)重進(jìn)行微調(diào)。該框架能夠檢測出圖像中所有訓(xùn)練對象位置。在原始圖片中檢測到多個目標(biāo)框,每個目標(biāo)框內(nèi)最多有一頭豬,將檢測到的目標(biāo)提取出來,如圖5 所示。
Fig.5 Positioning and extraction of pig targets圖5 生豬目標(biāo)定位與提取
2.2.1 經(jīng)典Otsu 分割算法
Otsu 自1979 年提出后一直被認(rèn)為是閾值分割的經(jīng)典算法,其通過最大類間方差準(zhǔn)則來選取閾值。該方法建立在一幅圖像的灰度直方圖基礎(chǔ)上,依據(jù)類間距離極大準(zhǔn)則確定區(qū)域分割門限。
設(shè)一幅大小為M×N像素的圖像有L個不同灰度級,ni表示灰度級為i的像素個數(shù),則圖像中像素總個數(shù)為MN=n0+n1+n2+...+nL-1,歸一化后的直方圖各灰度級出現(xiàn)的概率,顯然。設(shè)以灰度k為門限將圖像分割成兩個區(qū)域:①灰度級為1~k的像素區(qū)域A(背景類);②灰度級為k+1~L-1 的像素區(qū)域B(目標(biāo)類)。A、B 出現(xiàn)的概率分別計算如下:
A 和B 兩類的灰度均值以及圖像總的灰度均值計算如下:
由此得到A、B兩區(qū)域的類間方差σB=pA(mA-m0)2+pB(mB-m0)2。顯然,pA、pB、mA、mB、m0、都是關(guān)于灰度級k的函數(shù)。為得到最優(yōu)分割閾值,Otsu 把兩類的類間方差作為判別準(zhǔn)則最大化,從而最佳閾值k*如下:
2.2.2 多閾值Otsu 分割算法
由于多數(shù)圖像并不是簡單的雙峰,是可一分為二的圖像,因此對于那些灰度直方圖的灰度級分布谷底不明顯的復(fù)雜圖像,單一使用Otsu 準(zhǔn)則并不能從圖像中穩(wěn)定可靠地將目標(biāo)分割出來,很難達(dá)到滿意的分割效果。因此,將以上的閾值處理方法推廣到多閾值。將一幅圖像分為K個類C1,C2,...、Ck,類間方差如式(4)所示:
從圖1 拍攝的圖像可以看到,豬體顏色主要分為兩種:黑豬和白豬,且與背景存在較大差異,簡單利用傳統(tǒng)的Otsu 算法將圖中像素分為兩類會存在較大誤差,因此考慮采用多閾值的Otsu 分割方法細(xì)化像素分類以提取前景目標(biāo)。
采用64GB 內(nèi)存、NVIDIA GTX1080TI 型GPU、Intel?Xeon(R)CPU E5-2678 v3@ 2.50GHz 處理器作為硬件平臺,操作系統(tǒng)為Win10,并行計算框架版本為CUDA9.0,深度神經(jīng)網(wǎng)絡(luò)加速庫為CUDNN v7.0。采用Python 編程語言在Keras 深度學(xué)習(xí)框架上實現(xiàn)生豬目標(biāo)檢測,采用MAT?LAB 2015a 實現(xiàn)多閾值的Otsu 分割。
Otsu 方法以圖像的相對直方圖(歸一化直方圖)為基礎(chǔ)對一維陣列進(jìn)行計算,本文首先利用傳統(tǒng)的Otsu 分割方法計算最優(yōu)閾值。將圖片中的像素分為前景和背景兩類并繪制相對直方圖,如圖6 所示。
在分割之前,需要將彩色圖轉(zhuǎn)換為灰度圖,然后獲取最佳閾值使得類間達(dá)到方差最大。其中,T為該方法求得的最佳閾值,η(eta)表示可分性度量,它是閾值T所對應(yīng)的最大類間方差σB與全局方差σ0之比。從圖6 可以看出,圖中的可分性度量相對較高,但是分割結(jié)果較差,尤其對于第二張圖片來說其分割率尚不到50%。因此傳統(tǒng)的Otsu分割方法對處理前背景相差較大的圖片效果明顯,而對于類似于第二張圖片需要進(jìn)一步探索精確的分割方法。
Fig.6 Traditional Otsu segmentation results and histogram of relative values圖6 傳統(tǒng)的Otsu 分割結(jié)果與相對值直方圖
利用多閾值的Otsu 分割方法,將一幅圖像分為K個類,因此會產(chǎn)生K-1 個閾值(k1、k2、k3...kk-1),將大小低于k1的像素標(biāo)記為背景,其余為前景像素,將前景像素相加并通過腐蝕膨脹等形態(tài)學(xué)處理得到如圖7 所示的結(jié)果。
從圖7 可以看出,隨著分類的增加分割結(jié)果越來越精確。用η評價分割結(jié)果,η定義為最大類間方差與全局方差之比,η的值用來度量已存在的類之間的分離性,值越大說明分離性越強(qiáng),其取值范圍為[0,1]。本文圖片中分的類越多所對應(yīng)η值越大,分割越精確,同時效率也越低。
將本文算法得到的分割圖像與手動分割后的圖像交并比(IOU)用于評價分割效果,同時與其他分割方法,如迭代法、最大熵分割方法和文獻(xiàn)分割方法[12]進(jìn)行比較,如表1所示。
Fig.7 Multi-threshold Otsu segmentation results圖7 多閾值Otsu 分割結(jié)果
從表1 可以看出,當(dāng)將圖片中的像素分為兩類時,由于1 號豬和3 號豬與背景相差較大所以分割結(jié)果較好。然而對于2 號豬,豬體像素與背景像素較為相似導(dǎo)致分割結(jié)果較差,只有43.2%。而采用多閾值的分割方法分類越多分割結(jié)果越精確,但同時所消耗的時間也越多。將圖片中像素分為4 類時,相比于分為3 類時的精度提高很少,但所消耗的時間卻是原來的一倍。因此,綜上所述,當(dāng)將圖像分為3 類時對應(yīng)的分割結(jié)果較好,且算法處理時間適當(dāng)。
不同數(shù)量生豬分割結(jié)果如圖8 所示。
從圖8 可以看出,當(dāng)采食區(qū)域生豬數(shù)量較多且存在粘連情況時分割結(jié)果也相對較差,但是由于豬體存在顏色差異,所以本文方法可以將輕度粘連的生豬分割出來。對挑選出來的500 幀圖片平均分割率(所有在采食區(qū)域的生豬被完整分割)為88.5%,相比于文獻(xiàn)[12]的算法分割精度降低,原因是由于采食區(qū)域中存在大量的生豬粘連造成分割精度下降。但本文算法對粘連生豬的分割效果較好,且在算法執(zhí)行效率上也明顯提高。
本文結(jié)合深度學(xué)習(xí)和傳統(tǒng)的圖像處理方法提出一種基于目標(biāo)檢測的多閾值Otsu 分割方法,可以實現(xiàn)群養(yǎng)狀態(tài)下的生豬個體分割。該方法首先以采食槽為中心劃分采食區(qū)域,然后利用目標(biāo)檢測算法端到端提取出單只豬的目標(biāo)區(qū)域,在區(qū)域內(nèi)利用多閾值的Otsu 分割方法分割出生豬個體。該方法適用于俯視群養(yǎng)豬采食區(qū)域的復(fù)雜場景,解決了粘連狀態(tài)下的生豬分割難題并取得較好效果。實驗結(jié)果顯示,500 幀實驗數(shù)據(jù)平均分割率為88.65%,與其他分割方法相比,本文方法在精確度和處理時間上效果較好。后續(xù)工作一方面是優(yōu)化目標(biāo)檢測算法,提高檢測結(jié)果精確度,另一方面是改進(jìn)分割算法,進(jìn)一步提高圖片分割效率,并在生豬身份識別和重量估計等方面開展研究。