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