段恩澤 王糧局 雷逸群 郝宏運 王紅英
(中國農(nóng)業(yè)大學(xué)工學(xué)院, 北京 100083)
隨著我國肉兔養(yǎng)殖業(yè)向機械化和智能化發(fā)展,智能管理裝備取代人力勞動進行兔舍的標(biāo)準化飼養(yǎng)管理是行業(yè)的發(fā)展趨勢。死兔的篩選是兔舍管理的重要工作之一,及時篩選和隔離死兔能夠降低疫病風(fēng)險。
國內(nèi)規(guī)模化肉兔養(yǎng)殖主要依靠飼養(yǎng)員巡檢兔舍完成死兔的識別工作,不僅增加了人力和經(jīng)濟成本,且容易造成漏檢或檢測不及時。在養(yǎng)殖智能化和精準化的趨勢下,死兔的自動化識別亟待解決。
目前國內(nèi)外有關(guān)肉兔健康檢測的研究大多集中于兔群體跟蹤和病理學(xué)分析,而對兔養(yǎng)殖過程中的疾病管理、死兔檢測鮮有報道[1-3]。在養(yǎng)殖動物健康檢測領(lǐng)域,現(xiàn)有研究方向集中于通過傳感器采集動物圖像、聲音、溫度和光譜等特征,再進行數(shù)據(jù)分析[4-6]。相比于上述方法,將機器視覺運用到養(yǎng)殖環(huán)節(jié)中能降低對動物的干擾,更適合規(guī)模化養(yǎng)殖。通過對目標(biāo)語義分割、實例分割以及熱成像等方式,判斷動物健康狀況、生理活動和福利水平是智能化養(yǎng)殖的熱門方向[7-9]。
目前有關(guān)死兔的圖像識別和圖像信息處理的研究少見報道。文獻[10]表明,肉兔死亡后身體迅速僵硬,保持死亡前姿態(tài),因此從靜態(tài)圖像看,死兔與活兔的圖像特征差異很小,采用語義分割算法根據(jù)圖像直接判斷死兔準確率和可行性很低。另一方面,由于兔毛隔熱性能良好,利用紅外相機采集肉兔圖像,發(fā)現(xiàn)除耳朵、眼球和皮膚裸露部分以外,肉兔紅外圖像與環(huán)境差異很小,采用紅外成像技術(shù)判斷死兔難度較高。
基于上述研究現(xiàn)狀,本文采用視頻識別方法,將長期保持靜止作為死兔判定依據(jù),以肉兔繁育舍中籠養(yǎng)生長兔為研究對象,提出一種基于深度學(xué)習(xí)的死兔識別方法。該方法結(jié)合圖像分割網(wǎng)絡(luò)和光流計算網(wǎng)絡(luò),通過處理肉兔視頻關(guān)鍵幀,實現(xiàn)準確快速地從多目標(biāo)環(huán)境中判斷籠內(nèi)死兔,從而提高養(yǎng)殖管理效率。構(gòu)建基于Mask RCNN+PointRend網(wǎng)絡(luò)的肉兔圖像分割網(wǎng)絡(luò),獲取肉兔掩膜圖像及邊界框中心點,構(gòu)建基于LiteFlowNet的關(guān)鍵幀光流計算網(wǎng)絡(luò),獲取肉兔掩膜的光流值。利用光流閾值去除肉兔掩膜圖中的活躍肉兔。利用核密度估計法,確定邊界框中心點的密度分布,進一步確定區(qū)分死兔和活兔掩膜的密度分布閾值,實現(xiàn)對死兔的識別。
于2021年2月21—28日在河南省濟源市陽光兔業(yè)科技有限公司肉兔繁育舍采集了66日齡的伊普呂肉兔視頻。實驗兔舍為全封閉的階梯式籠養(yǎng)兔舍,每個兔籠中包含5只肉兔。
采集視頻所用工業(yè)相機型號為??低昅V-CA020-10GC型,分辨率為1 624像素×1 240像素。由于兔籠體積為40 cm×90 cm×35 cm,為使圖像包含單籠信息,去除相鄰?fù)没\干擾,視頻尺寸設(shè)置為1 280像素×720像素,幀率30 f/s。相機安裝于立式三腳架上,距離地面1 m,傾斜45°俯拍,如圖1所示。
圖1 視頻采集方法Fig.1 Method of video acquisition
采集時選取29個存在死亡肉兔的籠位和31個肉兔全部存活的籠位,每個籠位各采集1 min視頻,格式為mp4。隨機選取20個活兔視頻和20個死兔視頻作為模型的訓(xùn)練集,剩余20個視頻作為模型的驗證集。
模型通過獲取到的籠內(nèi)肉兔的視頻,判別目標(biāo)是否為死兔,具體流程如圖2所示。
圖2 死兔識別模型流程圖Fig.2 Flow chart of dead rabbit identification model
本文提出的死兔識別模型首先提取肉兔視頻的關(guān)鍵幀,經(jīng)圖像預(yù)處理后,將圖像數(shù)據(jù)集送入Mask RCNN+PointRend架構(gòu)的肉兔圖像分割網(wǎng)絡(luò)進行分割,提取肉兔的掩膜和對應(yīng)邊界框中心點坐標(biāo)。數(shù)據(jù)集同時送入LiteFlowNet光流計算網(wǎng)絡(luò),計算連續(xù)的關(guān)鍵幀的光流信息。通過處理所得掩膜圖和光流圖,獲取每個掩膜的光流,光流高于閾值的掩膜判斷為活躍肉兔,去除對應(yīng)掩膜。得到的剩余掩膜中心點坐標(biāo)分布進行核密度估計,如高于閾值,該掩膜判定為死兔。
圖3 關(guān)鍵幀選取示例(僅展示部分關(guān)鍵幀)Fig.3 Examples of selected key frames
受活動空間的限制,籠養(yǎng)兔在沒有外界干擾的情況下活躍性較低,導(dǎo)致采集到的視頻文件中包含大量重復(fù)或差別不大的幀,另一方面,本模型更關(guān)注短時間內(nèi)肉兔的姿態(tài)變化情況,預(yù)測視頻中的所有幀會降低模型的識別效率。因此為了提高模型效率,首先將視頻中的全部幀分為關(guān)鍵幀和普通幀。關(guān)鍵幀包含了更多活兔的姿勢或行為產(chǎn)生變化的信息,利用視頻關(guān)鍵幀代替視頻進行死兔和活兔的識別分類,可以大大減少運算時間。
視頻采集過程中,攝像頭靜止,環(huán)境光穩(wěn)定,死兔和背景不發(fā)生位移,因此視頻中的活動目標(biāo)均為活兔。本模型判別關(guān)鍵幀的依據(jù)是連續(xù)幀中肉兔的位移程度,采用幀間差分法[11]得到圖像平均像素強度,衡量肉兔產(chǎn)生的位移,計算公式為
(1)
式中D——平均像素強度
N——圖像列號k——幀序號
f(x,y)——點(x,y)處的像素值
若肉兔在部分時段具有較高活躍度,按平均像素強度選取關(guān)鍵幀會使結(jié)果集中在該時段,導(dǎo)致關(guān)鍵幀對視頻整體的代表性不足。因此,本模型將視頻平均像素強度按時間排序后,選取具有局部最大值的幀作為視頻的關(guān)鍵幀,使關(guān)鍵幀均勻分散在視頻中,平滑肉兔在圖像中的移動。圖3展示了依據(jù)平均像素強度的局部最大值選取部分關(guān)鍵幀的過程。在視頻不同時段,具有局部像素強度峰值的幀被選為關(guān)鍵幀。
肉兔實例分割網(wǎng)絡(luò)主要分為兩部分,采用Mask RCNN的基本架構(gòu)用于識別圖像中的肉兔實例,并引入PointRend算法取代Mask RCNN中原有的網(wǎng)絡(luò)頭以提升網(wǎng)絡(luò)的分割準確性,尤其是對掩膜邊界的分割準確性。
1.4.1Mask RCNN的網(wǎng)絡(luò)結(jié)構(gòu)
Mask RCNN[12]是在Faster RCNN[13]基礎(chǔ)上提出的用于圖像實例分割的深層卷積神經(jīng)網(wǎng)絡(luò)。Mask RCNN通過額外增加掩膜生成分支,并使用RoIAlign算法替換RoIpooling算法,保證了目標(biāo)分割的準確性?;贛ask RCNN的肉兔圖像分割網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
本文的研究對象為肉兔,圖像特征較為單一,因此采用基于ResNet 50的特征金字塔網(wǎng)絡(luò)(Feature pyramid network, FPN)作為主干網(wǎng)絡(luò)[14],通過降低殘差網(wǎng)絡(luò)的層數(shù)以緩解梯度消失和訓(xùn)練退化的問題。ResNet 50通過卷積將原圖處理成不同深度的特征圖,F(xiàn)PN將不同深度的特征圖融合。特征圖輸入?yún)^(qū)域生成網(wǎng)絡(luò)(Region proposal networks,RPN)中生成大量表達分割物體位置的候選框并進行回歸計算,修正候選框,得到感興趣區(qū)域(RoI)。最后特征圖被送入頭部網(wǎng)絡(luò),實現(xiàn)目標(biāo)分類、邊框回歸和掩膜生成,得到最終的分割圖像。
1.4.2PointRend算法結(jié)構(gòu)
圖4 基于Mask RCNN的肉兔圖像分割網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Structure of rabbit segmentation network based on Mask RCNN
Mask RCNN進行掩膜生成任務(wù)時,預(yù)測對象為肉兔圖像上的規(guī)則網(wǎng)格,預(yù)測的重點目標(biāo)是網(wǎng)格上的所有點,降低了對目標(biāo)邊界處分割平滑度的關(guān)注,增加了邊界預(yù)測的損失,使掩膜邊界的分割結(jié)果不清晰。為了解決這一問題,本文引入PointRend算法[15],通過自適應(yīng)的點細分策略,針對掩膜邊緣的一組非均勻點來計算目標(biāo)標(biāo)簽。
PointRend的本質(zhì)是通過迭代的上采樣,判斷目標(biāo)邊緣位置,將計算力集中在目標(biāo)邊緣實現(xiàn)邊緣細分。共包含3個模塊:點選取模塊、點特征提取模塊和Point Head模塊。
點選擇模塊的任務(wù)是自適應(yīng)地篩選預(yù)測目標(biāo)的點,并重點關(guān)注處于高頻端口附近的點,例如預(yù)測對象的邊界。在推斷過程中,點選擇模塊的策略是以由粗至細的方式迭代地渲染輸出圖像。在每次迭代過程中,首先預(yù)測低空間分辨率的特征圖。空間分辨率的網(wǎng)格尺寸最大,預(yù)測最粗糙,通過雙線性插值法,將特征圖上采樣擴大2倍,從而獲得較為精細的高空間分辨率的特征圖,使規(guī)則網(wǎng)格更密集。在所得的高分辨率的特征圖中篩選分割置信度(置信度區(qū)間為[0,1])低于0.5的最不確定的點,這些點的選擇策略為
(2)
p(ni)——點ni屬于掩膜邊緣的概率
通過逐步上采樣,對點邊緣的預(yù)測不斷細化,直至特征圖被上采樣至期望的空間分辨率,點細分預(yù)測過程如圖5所示。
圖5 肉兔圖像邊緣的點細分預(yù)測過程Fig.5 Process of one adaptive subdivision step in rabbit image edge points
對于訓(xùn)練過程,點選取模塊通過基于隨機抽樣的非迭代策略找到預(yù)測目標(biāo)的邊界。首先從特征圖中隨機抽取kN(k>1)個點,再根據(jù)這些點的不確定性估計值對點進行排序,不確定性估計值指所選的點落在前景和背景的概率。從中選擇最不確定的βN(β∈[0,1])個點,則這些點集中在邊界處,分布相對均勻。
點特征提取模塊負責(zé)提取βN個點的特征,作為下一階段的輸入。每個點特征由低層特征和高層特征構(gòu)成,低層特征通過對特征圖進行雙線性插值方法計算,包含了細節(jié)分割結(jié)果。高層特征是包含了語義信息的2維向量,通過對每層特征圖進行2倍雙線性插值上采樣計算。每個點的低層特征和高層特征被送入Point Head模塊。
Point Head模塊是一個具有3個隱含層和256個通道的多層感知器(Multi-layer perceptron, MLP)[16]。通過迭代對每個點在不同尺寸特征圖的特征進行卷積,逐層連接低層特征和高層特征,將目標(biāo)分辨率最終上采樣至期望分辨率,實現(xiàn)對肉兔掩膜邊緣部分的精細提取。MLP的隱含層激活函數(shù)為ReLU[17],輸出層的激活函數(shù)為Sigmoid函數(shù)。
光流是圖像中目標(biāo)像素點運動的亮度變化,光流計算是從視頻圖像數(shù)據(jù)中估計物體的運動。傳統(tǒng)的LK光流法[18]和HS光流法[19]利用光流約束方程計算光流場,但存在噪聲敏感、運行速度慢等缺點。采用深度神經(jīng)網(wǎng)絡(luò)估算圖像光流具有更好的魯棒性和運算速度。
LiteFlowNet[20]是基于FlowNet[21]的用于光流計算的輕量級卷積神經(jīng)網(wǎng)絡(luò),在降低了參數(shù)量的同時提高了對速度場的估算精度。LiteFlowNet的網(wǎng)絡(luò)結(jié)構(gòu)分為用于特征提取的編碼器NetC和實現(xiàn)由粗到精的光流估計的解碼器NetE。LiteFlowNet的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。其中,M:S模塊表示亞像素細化,R模塊表示速度場正則化。
圖6 基于LiteFlowNet的肉兔圖像光流計算網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Key frame optical flow estimation network of meat rabbit based on LiteFlowNet
NetC將2幅輸入的關(guān)鍵幀壓縮,形成多尺度的高維特征金字塔Fk。輸入圖像f1、f2被相同網(wǎng)絡(luò)結(jié)構(gòu)的卷積層逐層壓縮,獲得不同空間分辨率的圖像特征Fk(fi),i為圖像編號,k為金字塔層級,每層金字塔將圖像的分辨率壓縮為上層的一半。本文將特征金字塔層數(shù)設(shè)為6層,為便于描述,圖6只展示了3層網(wǎng)絡(luò)。
通過特征圖在NetE中迭代反卷積,最終獲取原圖尺寸的像素點速度場估計。
目標(biāo)檢測網(wǎng)絡(luò)和光流計算網(wǎng)絡(luò)的搭建、訓(xùn)練及調(diào)試均基于Pytorch深度學(xué)習(xí)框架,采用Python編程語言編寫,使用GPU加速計算。實驗在Ubuntu 20.04系統(tǒng)下運行,計算機配置:處理器為Intel(R) Core(TM) i7-9700K,主頻3.6 GHz,內(nèi)存16 GB,顯卡為 NVIDIA GeForce RTX 2080(16 GB)。
通過基于幀間差分的肉兔視頻關(guān)鍵幀提取方法處理40個訓(xùn)練集視頻,每段視頻提取50幅關(guān)鍵幀,共計2 000幅。由于光流法對圖像亮度敏感,因此40組關(guān)鍵幀圖像不作預(yù)處理,直接作為肉兔圖像光流計算網(wǎng)絡(luò)的數(shù)據(jù)集。
從2 000幅關(guān)鍵幀中隨機選取1 000幅圖像進行預(yù)處理。為使數(shù)據(jù)集符合肉兔實例分割網(wǎng)絡(luò)的訓(xùn)練要求,并最大程度保留圖像信息,利用OpenCV擴充圖像邊界并將圖像分辨率降低至1 024像素×1 024像素。使用Labelme圖像標(biāo)注工具標(biāo)注肉兔輪廓,死兔和活兔均定義為“rabbit”類,共標(biāo)注目標(biāo)4 873個,制作為COCO(Common objects in context)格式的數(shù)據(jù)集。隨機選用圖像70%(700幅)作為肉兔圖像分割網(wǎng)絡(luò)的訓(xùn)練集,30%(300幅圖像)作為肉兔圖像分割網(wǎng)絡(luò)的驗證集,用于驗證和優(yōu)化網(wǎng)絡(luò)。
使用COCO數(shù)據(jù)集上的ResNet預(yù)訓(xùn)練權(quán)重作為初始輸入權(quán)重對肉兔實例分割網(wǎng)絡(luò)進行遷移訓(xùn)練。引入ResNet 50和PointRend分別取代原有的殘差網(wǎng)絡(luò)和網(wǎng)絡(luò)頭,實現(xiàn)每幅圖像的前景精細分割。采用隨機梯度下降法進行訓(xùn)練,初始學(xué)習(xí)率為0.001,采用線性增加策略,權(quán)重衰減系數(shù)為0.000 1,優(yōu)化器動能0.9,共訓(xùn)練800個epoch。選取精度最高的權(quán)重作為預(yù)測權(quán)重。
使用訓(xùn)練好的權(quán)重推斷目標(biāo)時,輸出每幅圖像的推斷圖像和圖像中每個掩膜的邊界框角點坐標(biāo),為后續(xù)死兔識別提供基礎(chǔ)。
肉兔圖像光流計算網(wǎng)絡(luò)的訓(xùn)練集中包含2 000幅圖像,可以按視頻分為40組。使用肉兔實例分割網(wǎng)絡(luò)和肉兔圖像光流計算網(wǎng)絡(luò)推斷各組圖像,最終輸出每個肉兔掩膜的光流。圖7展示了光流提取的過程。
圖7 掩膜光流提取Fig.7 Extraction of mask optical flow
在肉兔實例分割網(wǎng)絡(luò)的推斷中,使用相同顏色填充掩膜,即每幅圖像推斷出的第1個掩膜均為紅色,第2個掩膜均為藍色,以此類推。輸出每幅圖像的檢測結(jié)果,輸出過程如圖7a~7c所示。每個視頻輸出50幅掩膜提取圖。
在肉兔圖像光流計算網(wǎng)絡(luò)的計算過程中,對于每個視頻,以每幅關(guān)鍵幀與后一幅關(guān)鍵幀作為輸入,可以得到兩幀之間的光流輸出,如圖7d所示。由于最后一幀沒有下一幅圖像與之對應(yīng),因此每組圖像輸出49幅光流估計圖。
圖8 關(guān)鍵幀中掩膜的光流結(jié)果Fig.8 Mask optical flow result in key frames
去除每組圖像的最后一幅掩膜提取圖,使掩膜提取圖均和光流估計圖一一對應(yīng)。按掩膜的顏色分割光流估計圖,可以輸出圖像中每個實例的光流,如圖7e所示。
光流圖中,RGB顏色空間下,每個像素點的RGB通道值代表其運動方向和運動速度,則每個像素點的灰度可以表示像素點的運動,以此作為判斷死兔的依據(jù)。
本文提出的Mask RCNN+PointRend只針對圖像進行實例分割,無法對肉兔進行多目標(biāo)跟蹤(MOT),導(dǎo)致前后幀中所識別的肉兔掩膜不能代表同一只肉兔,單純采用光流不能判斷肉兔死活。目前在MOT領(lǐng)域中,SOTA模型的目標(biāo)跟蹤精度大多低于70%[22-24],且對目標(biāo)類別和視頻幀率均有要求,實用性差。因此本文提出了一種以掩膜中心點坐標(biāo)為判斷依據(jù)的死兔識別方法,并利用光流去除活兔干擾,原理為在49幅關(guān)鍵幀中,由于死兔一直保持靜止,因此其每個掩膜的邊界框中心點會集中在一處,而活兔在部分時間段保持靜止,在部分時間段活躍,將活躍時刻的掩膜去除后,剩余時刻的掩膜邊界框中心點會分布松散,點的數(shù)量少于死兔。
肉兔實例分割模型輸出如圖7c所示的掩膜提取圖、每個掩膜邊界框的角點坐標(biāo)和對應(yīng)的掩膜序號。根據(jù)角點坐標(biāo)計算邊界框的中心點坐標(biāo),與掩膜序號相對應(yīng)。計算圖7e中每個掩膜處的光流和掩膜序號,若掩膜的光流高于閾值,將對應(yīng)的掩膜判斷為活兔,去除對應(yīng)序號的掩膜邊界框中心點;若低于閾值,表明對應(yīng)掩膜為非活躍的活兔或死兔。圖8截取了某段視頻中20幅關(guān)鍵幀中掩膜的光流結(jié)果,為便于展示,圖像有剪裁。
圖8中每幅圖像底部的掩膜為死兔,其余均為活兔。第1幅圖像和最后1幅圖像分別為關(guān)鍵幀的首尾圖像,其余圖像從47幅關(guān)鍵幀中隨機抽取。由圖8可知,代表死兔的掩膜幾乎全為白色,表明死兔掩膜的光流很小。而對于活兔,大部分掩膜具有鮮明的色彩,僅有少數(shù)幀中的少數(shù)掩膜為白色,這表明活兔掩膜的光流較大,而不活躍的肉兔在一段視頻中僅占少數(shù)時間段。采用光流法去除活兔的干擾有可行性。
對每段視頻統(tǒng)計49幅關(guān)鍵幀中,光流低于閾值的掩膜所對應(yīng)的邊界框中心點坐標(biāo),隨后采用無參核密度估計[25](Kernel density estimation, KDE)的方法分析中心點坐標(biāo)密度。
KDE是一種從數(shù)據(jù)樣本出發(fā)研究數(shù)據(jù)分布特征、估計密度函數(shù)的方法,利用平滑峰值函數(shù)(核)擬合數(shù)據(jù)點模擬真實的概率分布曲線,核密度函數(shù)為
(3)
式中n——樣本數(shù)量
h——平滑參數(shù),帶寬
K——核函數(shù)
p——所求點的坐標(biāo)
pi——第i個點的坐標(biāo)
本文選用高斯函數(shù)作為核函數(shù),反映隨機變量的概率分布。核函數(shù)能夠反映每個樣本對采樣點概率密度分布的貢獻度,在本文中,死兔掩膜的邊界框中心點密集,每個中心點對采樣點的概率密度分布貢獻度會顯著高于活兔掩膜。通過統(tǒng)計點的概率密度,可以判斷視頻中是否存在死兔。
采用準確率(Accuracy, A)、平均精確率(Average precision, AP)和平均像素精度(Mean pixel accuracy, MPA)評價肉兔實例分割網(wǎng)絡(luò)性能。
為表明PointRend網(wǎng)絡(luò)結(jié)構(gòu)對分割性能的影響,以相同數(shù)據(jù)集和超參數(shù)訓(xùn)練了Mask RCNN,圖9為在訓(xùn)練過程網(wǎng)絡(luò)損失值和驗證集準確率與迭代次數(shù)之間的關(guān)系曲線。
圖9 網(wǎng)絡(luò)損失值與準確率對比Fig.9 Total loss and accuracy comparison of two networks
由圖9可知,兩種網(wǎng)絡(luò)的損失值隨著訓(xùn)練迭代次數(shù)增加而降低,PointRend +Mask RCNN的損失值收斂于0.077,Mask RCNN的損失值收斂于0.090;兩種模型的準確率隨著訓(xùn)練迭代次數(shù)增加而增加,Mask RCNN+PointRend的準確率收斂于98.5%,Mask RCNN的準確率收斂于97.3%,這表明采用PointRend取代原網(wǎng)絡(luò)頭后,肉兔圖像分割網(wǎng)絡(luò)的準確率更高,降低了Mask部分的損失。
圖10展示了2個網(wǎng)絡(luò)對同一幅圖像的部分掩膜邊緣分割結(jié)果。PointRend +Mask RCNN網(wǎng)絡(luò)對掩膜邊緣的分割更為平滑,相比于Mask RCNN,分割出的掩膜更能代表目標(biāo)。
圖10 兩種網(wǎng)絡(luò)對掩膜邊緣的分割結(jié)果Fig.10 Mask boundary segmentation results of two networks
利用COCOAPI對驗證集的推斷結(jié)果進行性能評估,結(jié)果如表1所示。
表1 兩種網(wǎng)絡(luò)對肉兔的分割性能對比Tab.1 Comparison of rabbit segmentation performance between two networks
平均精確率反映網(wǎng)絡(luò)在目標(biāo)識別中的分類準確度,表示分類為正樣本中分類正確的數(shù)量占比。平均像素精度反映網(wǎng)絡(luò)在實例分割中像素分類的準確度,表示正確分割的像素數(shù)量在圖像像素數(shù)量中的占比。根據(jù)表1可知,PointRend+Mask RCNN對驗證集的分類性能比Mask RCNN提高了3.0個百分點,實例分割性能提高了4.1個百分點,算法推斷1幅圖像的速度提高了16.0%。
基于肉兔圖像分割網(wǎng)絡(luò)和光流計算網(wǎng)絡(luò),識別并去除大部分活兔的干擾。首先提取每組關(guān)鍵幀中肉兔掩膜的光流,輸出每個掩膜的總灰度。由于灰度越高,亮度越接近白色,對應(yīng)像素點的運動速度越低,因此對灰度進行反運算,以反運算灰度均值表示光流值。掩膜的反運算灰度均值計算公式為
(4)
式中Gm——掩膜的平均灰度
Gp——掩膜的總灰度
Np——掩膜的像素點數(shù)量
圖11 掩膜反運算灰度均值分布Fig.11 Distribution diagrams of mean inverse operation gray value
掩膜的反運算灰度均值表示掩膜像素點的運動程度,均值越高,對應(yīng)的掩膜越可能是活兔。利用閾值篩除活兔,以包含1只死兔、3只活兔的某段視頻為例,圖11展示了該段視頻中50幅關(guān)鍵幀所提取的掩膜反運算灰度均值。
如圖11所示,黃色三角點表示死兔掩膜的反運算灰度均值。在48個黃色三角點中,僅有3個點的反運算灰度均值高于10。而活兔掩膜的反運算灰度均值在0~55之間均有分布。若將閾值選為15,會多出大量活兔掩膜形成干擾。對訓(xùn)練集中40個視頻進行處理和統(tǒng)計,最終將閾值確定為10。
統(tǒng)計全部的掩膜邊界框中心點坐標(biāo),將掩膜的反運算灰度均值高于10所對應(yīng)的中心點坐標(biāo)去除,圖12以兩段視頻為例,描述掩膜邊界框中心點的分布規(guī)律,圖中橫縱坐標(biāo)表示像素點的列序號、行序號。其中,video_01為包含1只死兔、3只活兔的視頻,video_03為包含0只死兔、4只活兔的視頻。
圖12 掩膜邊界框中心點分布圖Fig.12 Center point distributions of mask bounding box
如圖12a、12b所示,閾值將原本202個坐標(biāo)點減少至113個,死兔的坐標(biāo)點基本重疊在同一位置,剩余的活兔坐標(biāo)點較為松散。如圖12c、12d所示,光流信息將原本287個坐標(biāo)點減少至130個,效果較為顯著。
通過KDE對去除干擾后的中心點做密度分析,其可視化結(jié)果如圖13所示,圖中橫、縱坐標(biāo)表示像素點的列序號、行序號。
圖13 中心點核密度估計可視化結(jié)果Fig.13 Visualization results of center point kernel density estimation
圖13a中,代表死兔掩膜的中心點概率密度高于1.4×10-5,代表活兔掩膜的中心點概率密度低于1.1×10-5。圖13b中,所有活兔的中心點概率密度低于8×10-6。
通過對訓(xùn)練集的40個視頻進行中心點核密度估計,最終確定了死兔的概率密度閾值為1.25×10-5,當(dāng)存在中心點概率密度高于1.25×10-5時,視頻中包含死兔。
使用死兔識別模型對驗證集的20個視頻進行死兔識別,其中有9個視頻存在死兔,11個視頻全為活兔。結(jié)果表明,存在死兔且模型檢測到死兔的視頻數(shù)為9個,全為活兔且模型未檢測到死兔的視頻數(shù)為9個,存在死兔但模型未檢測到死兔的視頻數(shù)為0個,全為活兔但模型誤檢測到死兔的視頻數(shù)為2個,因此模型判斷死兔的準確率為90%。
檢測結(jié)果表明,對于存在死兔的視頻,死兔識別模型能夠全部檢出。對于全為活兔的視頻,死兔識別模型檢測存在錯誤。人工檢驗后發(fā)現(xiàn),這是由于視頻中的肉兔活躍性較低,在1 min內(nèi)的移動過少。在實際養(yǎng)殖過程中,可以適當(dāng)延長采集視頻的時長,或選擇肉兔采食期間采集視頻,以提高模型的識別準確度。
(1)以籠養(yǎng)肉兔為研究對象,通過幀間差分方法提取肉兔視頻的關(guān)鍵幀,并建立了一種基于圖像分割和光流計算的死兔識別模型,實現(xiàn)多目標(biāo)背景下的肉兔圖像分割和死兔檢測。
(2)構(gòu)建了基于PointRend+Mask RCNN的肉兔圖像分割網(wǎng)絡(luò),以ResNet50和特征金字塔作為特征提取網(wǎng)絡(luò),采用PointRend算法替換原有全卷積網(wǎng)絡(luò)頭,通過自適應(yīng)的點細分策略實現(xiàn)對肉兔掩膜邊緣的精細提取。構(gòu)建的肉兔圖像分割網(wǎng)絡(luò)在驗證集上的平均精確率和平均像素精度分別為96.1%和95.7%,相比于Mask RCNN網(wǎng)絡(luò)分別提升了3.0個百分點和4.1個百分點,單幅圖像檢測速度提升了16.0%。
(3)構(gòu)建了基于LiteFlowNet的肉兔光流計算網(wǎng)絡(luò),以連續(xù)關(guān)鍵幀為輸入,通過特征金字塔網(wǎng)絡(luò)和多級反卷積網(wǎng)絡(luò)獲取基于關(guān)鍵幀的肉兔掩膜光流信息。
(4)以圖像分割結(jié)果和光流計算結(jié)果為基礎(chǔ),提出了一種基于掩膜中心點核密度估計的死兔識別方法,確定了活躍肉兔的掩膜反運算灰度均值的閾值為10,確定了死兔的掩膜邊界框中心點的概率密度閾值為1.25×10-5。
(5)死兔識別模型對驗證集視頻的準確率為90%,誤差原因是肉兔活躍度過低,通過延長視頻時長和選擇肉兔活躍時刻拍攝視頻能提高模型準確性。