衛(wèi)鑫,王立國(guó),陳春雨
哈爾濱工程大學(xué) 信息與通信工程學(xué)院, 黑龍江 哈爾濱 150001
畜牧業(yè)作為中國(guó)的傳統(tǒng)行業(yè),近年來(lái)在互聯(lián)網(wǎng)的推動(dòng)下,借助大數(shù)據(jù)的潮流實(shí)現(xiàn)了較大的發(fā)展[1]。尤其是在非洲豬瘟的影響下,伴隨著人工智能的發(fā)展,我國(guó)的養(yǎng)豬業(yè)正處在由勞動(dòng)密集的傳統(tǒng)養(yǎng)殖方式向現(xiàn)代化轉(zhuǎn)型的路上,成為了人工智能應(yīng)用的新興領(lǐng)域,因此養(yǎng)殖無(wú)人化是大勢(shì)所趨[2]。目前人工智能在養(yǎng)豬領(lǐng)域的研究主要集中在視覺(jué)識(shí)別和聲音識(shí)別領(lǐng)域,其中視覺(jué)識(shí)別表現(xiàn)在對(duì)豬只身份的識(shí)別,豬只數(shù)量的統(tǒng)計(jì)以及豬只行為的檢測(cè)等任務(wù);聲音識(shí)別領(lǐng)域則包括對(duì)豬只聲音的檢測(cè)來(lái)判斷豬只的情緒、饑餓、發(fā)情等狀態(tài)。無(wú)論是視覺(jué)識(shí)別還是聲音識(shí)別,都離不開傳感器的使用。在對(duì)豬只測(cè)重和活體測(cè)膘中,豬只在活動(dòng)的過(guò)程中體重秤的測(cè)量數(shù)值會(huì)上下波動(dòng)導(dǎo)致測(cè)量偏差以及飼養(yǎng)員攜帶豬瘟等其他病毒,需要通過(guò)結(jié)合深度攝像頭,非接觸式、非應(yīng)激式地間接測(cè)量。然而在實(shí)際應(yīng)用過(guò)程中,常常由于場(chǎng)地環(huán)境、設(shè)備問(wèn)題以及技術(shù)成本等其他原因,用來(lái)采集信息的設(shè)備會(huì)受到影響,深度攝像頭采集到的深度圖會(huì)出現(xiàn)大小不一的空洞,以及豬只在活動(dòng)過(guò)程中被欄桿遮擋的情況。殘缺的深度圖會(huì)導(dǎo)致后續(xù)的視覺(jué)任務(wù)精度下降甚至失敗。
關(guān)于深度圖修復(fù)的算法研究發(fā)展大致分為2個(gè)階段,一是基于濾波的傳統(tǒng)算法,二是基于數(shù)據(jù)驅(qū)動(dòng)的深度學(xué)習(xí)算法。傳統(tǒng)濾波算法主要有均值濾波、中值濾波、雙邊濾波和聯(lián)合雙邊濾波,之后的算法大部分是基于此進(jìn)行改進(jìn)。雙邊濾波在高斯濾波的基礎(chǔ)上同時(shí)考慮了空間上的距離以及像素值之間的距離,使修復(fù)后的圖像保留了結(jié)構(gòu)和紋理信息。聯(lián)合雙邊濾波在雙邊濾波的基礎(chǔ)上引入了與深度圖對(duì)應(yīng)的彩色圖像,將彩色圖像的像素值轉(zhuǎn)換到灰度圖進(jìn)行計(jì)算,在空洞處的結(jié)構(gòu)恢復(fù)效果上優(yōu)于雙邊濾波,然而當(dāng)彩色圖像高頻信息較多時(shí)修復(fù)會(huì)產(chǎn)生較為嚴(yán)重的偽影。將深度圖與RGB圖像結(jié)合的修復(fù)方式除了聯(lián)合雙邊濾波,還有使用平滑度優(yōu)先[3]、快速行進(jìn)方法[4]、基于納維葉?斯托克斯方程[5]、各向異性擴(kuò)散[6]、背景表面外插法[7]、低秩矩陣補(bǔ)全[8]以及基于圖像塊合成[9]等方法。隨著計(jì)算機(jī)算力的提升,基于數(shù)據(jù)驅(qū)動(dòng)的深度學(xué)習(xí)算法被越來(lái)越多的人提出。Zhang等[10]預(yù)先訓(xùn)練了一個(gè)能通過(guò)RGB圖像預(yù)測(cè)出表面法線和遮擋邊界的網(wǎng)絡(luò),然后將該網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果與原始深度圖結(jié)合,經(jīng)過(guò)全局優(yōu)化后得到完整的深度圖。Huang等[11]同樣借助由RGB圖像預(yù)測(cè)出表面法向量,并引入門限卷積克服了網(wǎng)絡(luò)簡(jiǎn)單學(xué)習(xí)深度插值的困難,使修復(fù)后的深度圖結(jié)構(gòu)更加清晰。Senushkin等[12]將圖像分為有效測(cè)量區(qū)域和無(wú)效測(cè)量區(qū)域,提出了一種改進(jìn)的編解碼器結(jié)構(gòu),使網(wǎng)絡(luò)能夠?qū)W習(xí)仿射變換的能力,并引入了新的損失函數(shù)。
以上提及的方法在完成深度圖修復(fù)任務(wù)時(shí),大都會(huì)額外借助深度圖對(duì)應(yīng)的RGB彩色圖像來(lái)獲得額外的信息輔助修復(fù)任務(wù),而基于濾波的傳統(tǒng)算法在當(dāng)深度圖缺失面積較大的時(shí)候難以獲得較好的效果,會(huì)出現(xiàn)邊緣模糊等問(wèn)題。在實(shí)際任務(wù)中,由于設(shè)備存儲(chǔ)空間以及工程成本等原因,通過(guò)豬舍實(shí)時(shí)采集到的數(shù)據(jù)只有深度圖,加上由限位欄導(dǎo)致的深度圖缺失及深度信息異常的面積相對(duì)較大,傳統(tǒng)濾波方法已不能適用,故本文將彩色圖像的修復(fù)方法引入到深度圖修復(fù)的任務(wù)中,提出改進(jìn)后的循環(huán)特征推理網(wǎng)絡(luò)(recurrent feature reasoning network, RFR-Net)。
本算法主要是針對(duì)圈養(yǎng)豬只被欄桿遮擋導(dǎo)致深度攝像頭不能完整獲得深度信息的情況。本文將預(yù)處理后的深度圖作為神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集,由豬場(chǎng)采集到的原始數(shù)據(jù)經(jīng)過(guò)欄桿分割、圖像去噪等預(yù)處理后得到。受Edge Connet方法[13]的啟發(fā),整個(gè)算法由分為2個(gè)步驟:第1步是利用U-Net網(wǎng)絡(luò)得到深度信息缺失或者不正常位置;第2步是將識(shí)別出的缺損位置和缺損深度圖一起送到RFR-G網(wǎng)絡(luò)進(jìn)行深度信息預(yù)測(cè)或者校正,最后得到完整的深度圖。本文采取的算法框圖如圖1所示。
圖1 本文的算法框圖
找到缺損處和深度信息不正常的位置實(shí)質(zhì)上等價(jià)于圖像分割任務(wù),考慮到待修復(fù)的深度圖相較于其他深度圖結(jié)構(gòu)形狀單一,語(yǔ)義信息較少,故引入U(xiǎn)-Net[14]網(wǎng)絡(luò)來(lái)完成識(shí)別修復(fù)位置的任務(wù)。U-Net網(wǎng)絡(luò)最早應(yīng)用于醫(yī)療圖像分割,它簡(jiǎn)單高效,整體是一個(gè)編碼器—解碼器結(jié)構(gòu)。圖像經(jīng)過(guò)編碼器的4次下采樣,得到4個(gè)不同尺寸的特征,然后與解碼器卷積上采樣得到的4個(gè)不同尺寸特征進(jìn)行拼接,最后得到與輸入圖像大小相同的預(yù)測(cè)結(jié)果。
深度補(bǔ)全網(wǎng)絡(luò)采用了改進(jìn)后的RFR-Net網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進(jìn)后的 RFR?Net網(wǎng)絡(luò)
模型采用了編碼器?解碼器的結(jié)構(gòu)。在編碼器部分,為了改進(jìn)網(wǎng)絡(luò)識(shí)別缺損區(qū)域的能力,本文將原模型中的部分卷積替換為了門限卷積,見(jiàn)圖2中藍(lán)色模塊。網(wǎng)絡(luò)識(shí)別缺損區(qū)域后通過(guò)普通卷積提取特征得到特征圖,然后根據(jù)隨網(wǎng)絡(luò)更新的二進(jìn)制掩膜來(lái)計(jì)算無(wú)效特征像素點(diǎn) (x,y)和有效特征像素點(diǎn)的特征相似度,計(jì)算公式見(jiàn)式(1):
式中 〈, 〉表示余弦相似度。我們記c和f分別為特征相 似 度 和 特 征 圖 ,fx,y,fx′,y′分 別 表 示 特 征 圖 上(x,y)和處的特征向量。
接著計(jì)算 (x,y)周圍與的特征相似度,并與該點(diǎn)處平均后經(jīng)過(guò)softmax函數(shù)得到最后的注意力分?jǐn)?shù)。最后,網(wǎng)絡(luò)根據(jù)注意力分?jǐn)?shù)重建特征圖,見(jiàn)式(2):
式中W、H為特征圖的寬和高。
在解碼器部分,每層輸入都由上一層的輸出和重建的特征圖在通道上疊加組成。通過(guò)多層卷積,最后恢復(fù)出完整的深度圖。
在圖像特征提取的過(guò)程中,普通卷積通過(guò)滑動(dòng)卷積核給圖像每個(gè)像素施加不同的權(quán)重,即表明圖像的每個(gè)像素都是有效的。然而對(duì)于修復(fù)任務(wù)來(lái)說(shuō),圖像中被遮擋區(qū)域的像素在卷積核提取特征的過(guò)程中應(yīng)該被視為無(wú)效像素,未遮擋區(qū)域的像素應(yīng)該被視為有效像素。PConv[15]表明,對(duì)缺損圖像直接采用普通卷積的方式,隨著網(wǎng)絡(luò)層加深,這些無(wú)效像素會(huì)變成有效像素,進(jìn)而導(dǎo)致測(cè)試結(jié)果產(chǎn)生顏色缺損和邊緣模糊等現(xiàn)象。針對(duì)此類情況,RFR-Net[16]引用了部分卷積,掩膜更新規(guī)則見(jiàn)圖3(a)。部分卷積利用二進(jìn)制掩膜將輸入的像素劃分為有效像素和無(wú)效像素,當(dāng)輸入?yún)^(qū)域至少包含1個(gè)有效值時(shí),該區(qū)域的掩膜更新為1,否則更新為0,更新規(guī)則由式(3)表示。
圖3 部分卷積和門限卷積掩膜更新策略
式中:M為二進(jìn)制掩膜,m′為下一層掩膜在該區(qū)域的值。掩膜隨著卷積層數(shù)的增加不斷更新,最后到達(dá)一定層數(shù)后M就會(huì)變成全1矩陣。
然而部分卷積也存在缺陷,不管上一層二進(jìn)制掩膜有多少個(gè)有效像素,下一層都將置1。同時(shí),網(wǎng)絡(luò)的每層特征圖都使用了一樣的掩膜,抑制了網(wǎng)絡(luò)學(xué)習(xí)的能力。因此,本文引入了門限卷積。門限卷積相比部分卷積,它拋棄了部分卷積更新掩膜的固定規(guī)則,對(duì)掩膜同樣使用了卷積操作。它將上一層的特征圖和二進(jìn)制掩膜分別與2個(gè)不同的卷積核Wf和Wg進(jìn) 行卷積操作,得到在(y,x)處的值F和G,見(jiàn)式(4)和式(5):
接著分別經(jīng)過(guò)激活函數(shù) ?以及Sigmoid函數(shù),最后通過(guò)點(diǎn)乘得到下一層的輸入,見(jiàn)式(6):
整個(gè)更新過(guò)程如圖3(b)所示。卷積操作能讓掩膜更新從數(shù)據(jù)中學(xué)習(xí),使得網(wǎng)絡(luò)可以對(duì)每個(gè)通道每個(gè)空間位置學(xué)習(xí)動(dòng)態(tài)特征選擇機(jī)制。
2.1.1 實(shí)驗(yàn)數(shù)據(jù)
原始數(shù)據(jù)通過(guò)深度攝像頭 Intel RealSense D435在2個(gè)豬場(chǎng)采集得到。待修復(fù)的深度圖來(lái)自其中1個(gè)有限位欄的豬場(chǎng),限位欄的作用是防止豬翻過(guò)欄桿。而另外1個(gè)豬場(chǎng)沒(méi)有限位欄,能采集到無(wú)遮擋的深度圖,本文將無(wú)遮擋的深度圖作為訓(xùn)練集和測(cè)試集。采集到的深度圖圖片數(shù)量一共有上百萬(wàn)張,本文從2個(gè)豬場(chǎng)采集到的圖片隨機(jī)抽取了50 000張無(wú)遮擋圖片作為訓(xùn)練集,10 000張圖片作為測(cè)試集,訓(xùn)練集與測(cè)試集比例為5:1。
2.1.2 數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理分為2個(gè)部分。
第1部分是對(duì)原始深度圖處理。原始數(shù)據(jù)包含了欄桿、地面和豬這3類語(yǔ)義信息,渲染后的深度圖如圖4所示。為了排除地面和欄桿對(duì)訓(xùn)練的影響以及方便后續(xù)測(cè)重測(cè)膘等任務(wù),我們通過(guò)深度圖分割出豬只的掩膜,見(jiàn)圖5,進(jìn)而得到只包含豬只信息的深度圖。然后經(jīng)過(guò)平移旋轉(zhuǎn)等變換,讓豬只處于圖片中心位置,非豬只部分的深度信息全部置0。由于兩豬場(chǎng)深度攝像頭離豬只距離的尺度范圍不一樣,為了防止網(wǎng)絡(luò)在訓(xùn)練過(guò)程中過(guò)擬合,本文將變換后的深度圖在5 000像素范圍內(nèi)整體上下隨機(jī)偏移,偏移前后地面非豬只部分的信息始終置0。原始數(shù)據(jù)經(jīng)過(guò)分割、變換,像素偏移最后得到500 像素×500 像素大小的16位深度圖,如圖6(a)中所示。
圖4 渲染后的原始深度圖
圖5 分割出的豬只掩膜
圖6 預(yù)處理效果圖
第2個(gè)部分是缺損部分的掩膜生成。本文使用Opencv隨機(jī)生成面積、位置不同的掩膜來(lái)模擬被遮擋的位置形狀,如圖6(b)所示。圖中遮擋位置像素為255,否則為0。生成掩膜后,將其與完整深度圖疊加,得到模擬的缺損深度圖,如圖6(c)所示。
2.1.3 標(biāo)簽制作
用于訓(xùn)練U-Net網(wǎng)絡(luò)的數(shù)據(jù)集由經(jīng)預(yù)處理后帶欄桿的深度圖制作。在Labelme上標(biāo)注出缺損的位置以及深度信息不正常的位置。標(biāo)注完成后利用生成的Json文件生成對(duì)應(yīng)的掩膜。本文共標(biāo)注了400張,其中320張為訓(xùn)練集, 80張作為測(cè)試集。
進(jìn)行實(shí)驗(yàn)的電腦參數(shù)如下:系統(tǒng)為Ubuntu 18.04,顯卡為 GTX2060super,顯存 6 GB,CPU為i7-8700K, 內(nèi) 存 16 GB。 模 型 的 實(shí) 現(xiàn) 基 于Pytorch框架。修復(fù)模型輸入的圖片分辨率大小為 500 像素×500 像素的單通道 16 bit深度圖,在模型前處理階段,對(duì)輸入圖片進(jìn)行歸一化操作,使向量在0~1。訓(xùn)練階段,在梯度優(yōu)化器采用Adam,學(xué)習(xí)率設(shè)置為0.000 4,當(dāng)損失函數(shù)趨于收斂時(shí),對(duì)模型進(jìn)行細(xì)調(diào),凍結(jié)所有BatchNorm層,學(xué) 習(xí) 率 變 為 0.000 05。 損 失 函 數(shù) 由Lvalid、Lhole、Lperceptual3部分組成,對(duì)應(yīng)系數(shù)分別為 1、6、0.05,損失函數(shù)具體公式分別為式(7)~(9):
式中:ypred、ygt分別為網(wǎng)絡(luò)修復(fù)后的深度圖和真實(shí)的深度圖;M為U-Net預(yù)測(cè)出的掩膜,用來(lái)表示的矩陣在需要修復(fù)的位置上值為1,否則為0。式(7)中的I表示值全部為1且和M矩陣同大小的矩陣。在訓(xùn)練時(shí),使用了VGG16網(wǎng)絡(luò)分別對(duì)真實(shí)的深度圖和修復(fù)后的深度圖提取特征圖,得到和,Hi、Wi和Ci分別為N個(gè)特征圖中第i個(gè)的高、寬和通道數(shù)。
2.3.1 消融實(shí)驗(yàn)
為證明改進(jìn)后的RFR-Net[16]在修復(fù)深度圖的任務(wù)上相比改進(jìn)前修復(fù)效果有所提升,本文進(jìn)行了消融實(shí)驗(yàn)。將原模型記做RFR-P,改進(jìn)后的模型記做RFR-G。兩模型分別在同一訓(xùn)練集上迭代 300×103步,其平均絕對(duì)誤差(mean absolute error,MAE)曲線如圖7所示。
圖7 兩模型 MAE 損失曲線對(duì)比
訓(xùn)練過(guò)程中,黑色曲線表示的RFR-G在迭代相同步數(shù)時(shí)其MAE值低于RFR-P。訓(xùn)練完成后,兩模型分別在包含10 000張深度圖的測(cè)試集上進(jìn)測(cè)試。本文對(duì)每張修復(fù)后的圖像進(jìn)行質(zhì)量評(píng)估,然后對(duì)所有圖像的評(píng)價(jià)指標(biāo)取均值,對(duì)比結(jié)果見(jiàn)表1。結(jié)果的量化指標(biāo)選擇了衡量圖片質(zhì)量常用的峰值信噪比(peak signal to noise ratio,PSNR),結(jié)構(gòu)相似性(structural similarity,SSIM),另外本文還選擇了MAE來(lái)衡量在缺損位置處網(wǎng)絡(luò)預(yù)測(cè)的深度值與真實(shí)深度值誤差的百分比。從表中可以看出,在引入門限卷積后,模型保持結(jié)構(gòu)特點(diǎn)的同時(shí),在峰值信噪比和平均深度誤差上都有了一定的提升,效果優(yōu)于改進(jìn)前的模型。
表1 改進(jìn)前后量化對(duì)比
圖8給出了模型改進(jìn)前后在一部分測(cè)試集上的修復(fù)效果。為使視覺(jué)效果明顯,圖中的深度圖都經(jīng)過(guò)渲染,顏色越深的地方表示離攝像頭的距離越近,其中藍(lán)色表示地面。由于深度攝像頭測(cè)量對(duì)象是攝像頭到豬的背部距離,深度圖在修復(fù)后理想情況下相鄰深度值應(yīng)該是連續(xù)的,渲染后顏色為漸變。
圖8 消融實(shí)驗(yàn)結(jié)果對(duì)比
2.3.2 不同方法對(duì)比
另外,本文還將該算法與基于塊的PatchMatch[9]和PConv[15]進(jìn)行了比較。圖9給出了3種方法的對(duì)比效果。從圖9(b)中可以看出,PatchMatch在修復(fù)時(shí)改變了原深度圖中豬只的形狀。表2給出了量化結(jié)果分析,可以明顯看出本文使用的方法相較于其他2種方法,在3項(xiàng)指標(biāo)上都有了很大的提升。
圖9 不同方法對(duì)比
表2 不同方法的量化對(duì)比
2.3.3 實(shí)際效果圖
圖10給出了3種不同方法在真實(shí)缺損的深度圖上的修復(fù)效果。因?yàn)槿睋p部分的真實(shí)值未知,因此只能從主觀上來(lái)評(píng)價(jià)。圖10(b)、圖10(c)2種方法與本文提出的方法相比,用圖10(b)方法修復(fù)后形狀發(fā)生了變化,而用圖10(c)方法保持了形狀但在原缺損處有明顯像素不連續(xù)的現(xiàn)象。只有用圖10(d)方式同時(shí)保持了形狀和像素連續(xù)的特點(diǎn)。
圖10 不同方法真實(shí)場(chǎng)景下修復(fù)效果
本文通過(guò)與其他方法的對(duì)比實(shí)驗(yàn),證明了在不加入額外輔助信息的條件下,改進(jìn)后的RFRNet在修復(fù)大面積缺損的深度圖時(shí)能表現(xiàn)出較好的效果。由于模型自身的注意力機(jī)制,理論上該算法也有能力去修復(fù)結(jié)構(gòu)復(fù)雜、語(yǔ)義信息豐富的深度圖。后續(xù)的研究可以引入生成對(duì)抗網(wǎng)絡(luò)或者使用其他更合適的注意力機(jī)制,使網(wǎng)絡(luò)在語(yǔ)義理解能力和修復(fù)精度上有近一步提升。