洪漢玉,孫建國(guó),欒 琳,王 碩,鄭新波
(1.武漢工程大學(xué) 湖北省視頻圖像與高清投影工程技術(shù)研究中心,湖北 武漢 4300732.深圳光啟高等理工研究院,廣東 深圳 518000)
光啟云端號(hào)是一個(gè)特種充滿氦氣的纖維囊體,主要工作范圍在4 000 m~5 000 m高的空域,通過飛艇下面的吊艙做監(jiān)控和航拍服務(wù),吊艙使用最新計(jì)算機(jī)技術(shù)實(shí)現(xiàn)多種功能模塊靈活搭載,通過“一根纜”(光電復(fù)合纜)系留于地面錨泊系統(tǒng),最后接入大數(shù)據(jù)中心。在實(shí)際航拍中,所獲得的圖像會(huì)包含繩帶信息,而這種非均勻結(jié)構(gòu)的繩帶不僅不利于場(chǎng)景分析,也不利于進(jìn)行有效目標(biāo)的檢測(cè),因此,必須使用圖像信息處理技術(shù)消除繩帶干擾,復(fù)原圖像中實(shí)際場(chǎng)景,為進(jìn)一步分析圖像提供數(shù)據(jù)支撐。光啟云端號(hào)如圖1所示。
圖1 光啟云端號(hào)Fig. 1 Kuang-chi Cloud
圖像中繩帶去除主要包含繩帶圖像的檢測(cè)和繩帶圖像的修復(fù)兩部分,其中最關(guān)鍵的是繩帶圖像的檢測(cè)。繩帶圖像的檢測(cè)可以抽象為線檢測(cè)或者條帶檢測(cè),目前對(duì)線檢測(cè)采用的方法大致有兩類:一類是基于Hough變換及其改進(jìn)算法[1-3]的線檢測(cè),該方法對(duì)噪聲不敏感,魯棒性好,對(duì)遮擋問題易處理,但是在實(shí)際情況中存在極大的局限性,如計(jì)算量大、準(zhǔn)確率低且不能檢測(cè)彎曲部分等;另一類是基于對(duì)比度特征的線檢測(cè)方法,其基本原理是利用繩帶像素與繩帶周圍像素區(qū)域存在的對(duì)比度關(guān)系來提取特征[4-5],該方法可以檢測(cè)條狀特征的物體,但是在實(shí)際中該方法的檢測(cè)結(jié)果容易出現(xiàn)斷裂、誤檢等問題。因此,前面的2個(gè)檢測(cè)方法在圖像中繩帶的檢測(cè)難以適用。圖像中繩帶的修復(fù)主要采用FMM算法[6],該算法速度較快且對(duì)噪聲不敏感,在實(shí)際測(cè)試中能得到了很好的效果。
隨著機(jī)器學(xué)習(xí)理論的發(fā)展,深度學(xué)習(xí)在人臉識(shí)別、無人駕駛[7]等領(lǐng)域發(fā)揮著越來越重要的作用?;谏疃葘W(xué)習(xí)的相關(guān)問題屬于圖像分割問題,其代表是FCN[8]及其改進(jìn)網(wǎng)絡(luò)SegNet[9]。但是針對(duì)圖像中具體的內(nèi)容檢測(cè)如條帶檢測(cè)的文獻(xiàn)較少,現(xiàn)有的網(wǎng)絡(luò)存在難以訓(xùn)練、數(shù)據(jù)需求大、訓(xùn)練時(shí)間長(zhǎng)等缺點(diǎn),已有方法難以解決實(shí)際航拍圖像中背景復(fù)雜、繩帶彎曲等問題。目前,Ronneberger等人提出的U-net[10]在少量樣本數(shù)據(jù)和醫(yī)學(xué)圖像中的目標(biāo)分割[11]上有著廣泛的應(yīng)用,該網(wǎng)絡(luò)是一個(gè)基于FCN思想設(shè)計(jì)的網(wǎng)絡(luò)模型,只有卷積層,沒有全連接層,可以有效地檢測(cè)圖像中的目標(biāo)。將其應(yīng)用于圖像中繩帶的檢測(cè)分割中,發(fā)現(xiàn)存在繩帶數(shù)據(jù)過少,像素比例分布嚴(yán)重不均勻,模型不能收斂等問題。
為此,本文提出一種基于U-net的繩帶檢測(cè)改進(jìn)模型,只需要較少的訓(xùn)練數(shù)據(jù)和較短的訓(xùn)練時(shí)間,模型就能夠收斂,得到的檢測(cè)結(jié)果通過改進(jìn)的OTSU[12]做一個(gè)精細(xì)分割后,采用FMM修復(fù)算法能夠有效地去除圖像中的繩帶。
在云端號(hào)拍攝的圖像中背景有很多條狀的物體,這些物體給繩帶檢測(cè)帶來很大的干擾,基于多層卷積網(wǎng)絡(luò)的算法能夠很好學(xué)習(xí)到繩帶和背景信息的特征,這些特征經(jīng)過卷積的層層計(jì)算會(huì)越來越復(fù)雜,通過這些提取到的特征能夠用來區(qū)分這些非目標(biāo)物體和目標(biāo)物體,從而檢測(cè)出圖像中的繩帶。本文方法的流程如圖2所示。
圖2 本文檢測(cè)方法流程圖Fig 2 Flow chart of detection method of this paper
1.1.1 網(wǎng)絡(luò)結(jié)構(gòu)
基于深度學(xué)習(xí)的算法往往需要大量的隱藏層來提取更加抽象的特征,可以用來檢測(cè)更多類別的物體,但是在實(shí)際情況中,我們只需要檢測(cè)一個(gè)類別,并且這個(gè)任務(wù)可以歸于實(shí)例分割,所以原始網(wǎng)絡(luò)模型的參數(shù)會(huì)有很大冗余,而參數(shù)過于復(fù)雜會(huì)給模型收斂帶來困難。理論上已經(jīng)證明,通過去掉那些不重要的參數(shù),可以使模型具有更好的泛化能力[13],并且只需要更少的訓(xùn)練數(shù)據(jù)就可以提高訓(xùn)練和檢測(cè)速度。如圖3所示,在U-net的基礎(chǔ)上每層卷積核的數(shù)量做了適當(dāng)調(diào)整(見圖3),輸入一個(gè)480×272×3 pixel的圖像,輸出一個(gè)單通道的繩帶檢測(cè)結(jié)果,模型結(jié)構(gòu)前半部分與VGG相似,所有的卷積都是3×3卷積+ReLU+批量歸一化的組合形式,解碼器部分均采用最大池化,編碼器部分均沒有池化層。由于數(shù)據(jù)的多樣性太少會(huì)增加過擬合風(fēng)險(xiǎn),為了抑制過擬合,同時(shí)加快收斂速度,所以模型在同層的卷積中都加入一個(gè)Batch Normalization層[14]。最終的模型結(jié)構(gòu)的網(wǎng)絡(luò)層次和深度都是通過多次實(shí)驗(yàn)后確定的,具體網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 U-net模型結(jié)構(gòu)圖Fig .3 U-net model structure
1.1.2 深度可分離卷積
實(shí)驗(yàn)中發(fā)現(xiàn)模型中的參數(shù)存在很大冗余,所以本文把大部分的傳統(tǒng)卷積全部換成深度可分離卷積[15],該卷積的計(jì)算過程為
(1)
式中:S為輸出特征圖;H為卷積核;I為輸入特征圖;i,j為特征圖像素位置;k,l為輸出特征圖分辨率;m為通道數(shù)。
深度可分離卷積包含depth-wise和point-wise,depth-wise中每個(gè)特征圖只用一個(gè)卷積核提取特征,point-wise則是傳統(tǒng)的1×1卷積,用來組合各個(gè)通道的特征圖。深度可分離卷積與傳統(tǒng)的卷積操作的參數(shù)量比例定義如下:
(2)
式中:K為depth-wise的卷積核的大??;N為point-wise的卷積核數(shù)量;M為輸入特征圖的數(shù)量;G為point-wise卷積的分組數(shù)。由(2)式可知,輸出特征圖數(shù)量越多,深度可分離卷積參數(shù)數(shù)量壓縮率越大,通過這種方式提高卷積參數(shù)的利用率,從而大幅減小工程的存儲(chǔ)開銷。
1.1.3 引入雙線性插值的反卷積
在恢復(fù)分辨率時(shí)一般采用上采樣運(yùn)算。上采樣是一般采樣的逆運(yùn)算,即像素根據(jù)步長(zhǎng)重復(fù),這個(gè)方法在實(shí)際中會(huì)使每層恢復(fù)分辨率后的特征圖會(huì)很粗糙,最后的繩帶位置可能會(huì)有略微的偏移。因此,本文采用雙線性插值的反卷積來恢復(fù)解碼部分的分辨率。雙線性插值的反卷積在像素之中增加了過渡值,預(yù)測(cè)的繩帶像素的概率值更加平滑和魯棒,使解碼器部分的特征圖更加合理,雙線性插值的反卷積的操作如圖4所示。
圖4 反卷積操作Fig. 4 Deconvolution operation
1.1.4 損失函數(shù)
本文模型最后一層使用Sigmoid計(jì)算每個(gè)像素點(diǎn)的值,Sigmoid公式為
(3)
式中:z表示輸入的像素值;sigmoid(z)為輸出的預(yù)測(cè)繩帶像素的概率值。
實(shí)驗(yàn)中發(fā)現(xiàn)圖像中繩帶的數(shù)量較少,且繩帶像素在整個(gè)圖像中的比例非常小,此類任務(wù)屬于小目標(biāo)的圖像分割,這種非均勻的樣本會(huì)給模型收斂帶來困難,當(dāng)圖像中所有的像素都被識(shí)別成背景,準(zhǔn)確率依然較高并且損失也較低。因此,繩帶像素的重要程度大于非繩帶像素,一種比較容易的解決方案是,處理這種類別不平衡的方式就是根據(jù)類別的重要程度加上不同的比例權(quán)重。基于經(jīng)驗(yàn)本文定義的損失函數(shù)為
(1-w(x))·(1-p(x))·logq(x))
(4)
式中:X表示整幅圖像的像素;x為X中一個(gè)像素值;w(x)為繩帶像素的權(quán)重;q(x)為sigmoid在x處預(yù)測(cè)的像素值;p(x)為標(biāo)記圖在x處的實(shí)際像素值; Loss表示預(yù)測(cè)結(jié)果與標(biāo)記圖之間的距離。w(x)表示為
(5)
式中:x為計(jì)算時(shí)的像素,當(dāng)x屬于繩帶位置時(shí)該點(diǎn)的損失的權(quán)值為w。(5)式表示繩帶像素與非繩帶像素的權(quán)重比例為w∶1,當(dāng)w為1時(shí),則退化成原始的交叉熵。
目前還沒有相關(guān)開源復(fù)雜背景的繩帶圖像數(shù)據(jù)可供下載,本文訓(xùn)練數(shù)據(jù)主要為兩部分:一部分來自于云端號(hào)上直接拍攝的圖像數(shù)據(jù),可以直接訓(xùn)練;另一部分是人工采集的其他相關(guān)數(shù)據(jù),采用拍攝的部分校園電線圖像數(shù)據(jù),通過Photoshop軟件標(biāo)記繩帶。每對(duì)訓(xùn)練的數(shù)據(jù)如圖5所示。
圖5 訓(xùn)練的繩帶數(shù)據(jù)Fig.5 Training rope dataset
本文的原始數(shù)據(jù)總共有375對(duì)圖像,每對(duì)圖像包含一張繩帶圖像和對(duì)應(yīng)的繩帶標(biāo)記圖,其中訓(xùn)練集300對(duì),測(cè)試集75對(duì)。使用TensorFlow的內(nèi)置數(shù)據(jù)增強(qiáng)工具,抖動(dòng)參數(shù)設(shè)置為0.05,隨機(jī)裁剪參數(shù)設(shè)置為0.2,增強(qiáng)的數(shù)據(jù)都是在訓(xùn)練時(shí)在線生成的,最終的訓(xùn)練繩帶數(shù)據(jù)總共有2 400對(duì)。
本文訓(xùn)練時(shí)采用Adam的優(yōu)化函數(shù),前10個(gè)epoch的學(xué)習(xí)率始終設(shè)置為0.001,后10個(gè)epoch的學(xué)習(xí)率為0.0003,所有的卷積核采用He[16]的均勻分布初始化,batch size設(shè)置為8,每個(gè)epoch迭代300次,由于硬件條件的限制,最終在訓(xùn)練的時(shí)候,輸入圖像的尺寸會(huì)縮放到480×272×3 pixel,最后輸出480×272×1 pixel檢測(cè)后的繩帶灰度圖。
原始的U-net網(wǎng)絡(luò)收斂不穩(wěn)定,模型存在一定概率不能收斂,測(cè)試10次中有5次不能收斂或者收斂效果不好,本文提出的模型在10個(gè)epoch后能達(dá)到很好的效果,后面的提升很小,在經(jīng)過20個(gè)epoch后模型基本已經(jīng)收斂、趨于穩(wěn)定。本文的模型在最終測(cè)試時(shí)用了10個(gè)epoch,mAP(MeanAveragePrecision)達(dá)到98.56%,mIoU(Mean Intersection over Union,均交并比)達(dá)到62.8%,實(shí)驗(yàn)中發(fā)現(xiàn)當(dāng) 取10時(shí)能達(dá)到最好的效果。
前面在訓(xùn)練的時(shí)候?yàn)榱颂岣哌\(yùn)行速度,對(duì)輸入的圖像進(jìn)行了縮小,所以檢測(cè)的時(shí)候也需要縮小,同理輸出后的圖像需要放大到原來大小。經(jīng)過前面卷積的層層計(jì)算,最后得到一個(gè)0~1的繩帶像素預(yù)測(cè)概率矩陣,通過乘以255可以得到一個(gè)0~255的灰度圖。此時(shí)的結(jié)果中會(huì)有很多灰度較小的像素形成水霧現(xiàn)象,為了轉(zhuǎn)化成二值掩碼圖,采用OTSU做一個(gè)精細(xì)分割來剔除灰度值較小的像素,以便后面的圖像修復(fù)過程更準(zhǔn)確。
圖像中繩帶的去除屬于圖像修復(fù),通過前面的算法可以檢測(cè)出繩帶的像素位置,此時(shí)需要根據(jù)檢測(cè)出來的結(jié)果去除圖像中繩帶。圖像修復(fù)算法目前主要分為基于樣本塊的算法和基于偏微分方程(PDE)的算法[17]兩大類,兩大類算法的前提都是要預(yù)先知道待修復(fù)區(qū)域的位置?;跇颖緣K的算法適用于修復(fù)較大的區(qū)域,但是存在速度慢、線性結(jié)構(gòu)易產(chǎn)生模糊等缺點(diǎn);基于PDE的算法可以克服速度慢、線性模糊等缺點(diǎn),但是只適用于較小的區(qū)域修復(fù)。因此本文采用的基于偏微分方程的FMM算法,如圖6(a)所示,先處理待修復(fù)區(qū)域邊緣上的像素點(diǎn),點(diǎn)q周圍的像素為I,修復(fù)區(qū)域?yàn)棣?,修?fù)邊界為?Ω,如圖6(b)所示,點(diǎn)p到點(diǎn)q的梯度為▽I,為點(diǎn)Iq(p)搭配點(diǎn)p的一階近似值。關(guān)系如下:
Iq(p)=Iq+▽Iq(p-q)
(3)
圖6 FMM方法的原理圖Fig. 6 Schematic diagram of FMM method
將q點(diǎn)周圍的值通過加權(quán)求和,最后歸一化值I(p)為
(4)
依次類推,層層向內(nèi)推進(jìn),直到修復(fù)完所有的像素點(diǎn)。
本文采用前面的圖像檢測(cè)和修復(fù)算法,對(duì)繩帶圖像進(jìn)行了大量實(shí)驗(yàn),驗(yàn)證算法的可靠性和正確性。在Ubuntu18.04 64位原生操作系統(tǒng)平臺(tái)上,用到的硬件環(huán)境為Intel I7-7700k、GTX1080、32G內(nèi)存,使用Tensorflow深度學(xué)習(xí)框架和OpenCV為主要工具。實(shí)驗(yàn)2和實(shí)驗(yàn)3均是在w取10時(shí)的結(jié)果。
實(shí)驗(yàn)1,改進(jìn)交叉熵實(shí)驗(yàn)對(duì)比。本次實(shí)驗(yàn)是權(quán)重對(duì)訓(xùn)練時(shí)的準(zhǔn)確率對(duì)比實(shí)驗(yàn)(其中都是選取收斂了的情況),當(dāng)w=1時(shí)損失函數(shù)為原始的交叉熵,此時(shí)能檢測(cè)一般直的繩帶,但是模型收斂不穩(wěn)定,存在一定幾率不能收斂,w=10時(shí)檢測(cè)的效果最好,同時(shí)模型也基本都能收斂,當(dāng)w大于10時(shí),收斂的效果開始變得較差,有較多的模型背景被識(shí)別為繩帶,這種情況給后續(xù)OTSU的精確分割帶來極大的困難。增加繩帶像素的損失函數(shù)權(quán)重,能更好地檢測(cè)出繩帶像素,但是當(dāng)手動(dòng)設(shè)置的權(quán)重太大時(shí)會(huì)導(dǎo)致模型收斂的效果變差,實(shí)驗(yàn)中發(fā)現(xiàn)當(dāng)w=10時(shí)能達(dá)到最好的效果。
圖7 損失函數(shù)取不同權(quán)重時(shí)的結(jié)果Fig .7 Partial results of loss function when taking different weights
實(shí)驗(yàn)2,圖像繩帶檢測(cè)的實(shí)驗(yàn)對(duì)比。基于隨機(jī)Hough變換、對(duì)比度特征的線檢測(cè)模型和U-net以及本文算法的實(shí)驗(yàn)結(jié)果對(duì)比如圖8、圖9和圖10所示,圖片下面小圖均為部分細(xì)節(jié)放大9倍結(jié)果。對(duì)于圖8(b)、圖9(b)和圖10(b),Hough變換很難檢測(cè)出有用的信息,有大量背景信息被誤檢,同時(shí)彎曲打結(jié)等繩帶幾乎檢測(cè)不到;對(duì)于圖8(c)、圖9(c)和圖10(c),基于對(duì)比度特征的線檢測(cè)算法很難克服復(fù)雜背景、繩帶彎曲的困難,漏檢問題很嚴(yán)重;對(duì)于圖8(d)、圖9(d)和圖10(d),SegNet能很好地檢測(cè)到繩帶,但是在分割的邊緣部分存在很大的誤差;對(duì)于圖8(e)、圖9(f)、圖10(e)和圖10(f),U-net網(wǎng)絡(luò)和本文的方法能達(dá)到很好的效果,一般的彎曲繩帶信息都能被檢測(cè)出來;如圖8(e)和圖8(f),本文提出的模型在部分細(xì)節(jié)上比U-net表現(xiàn)出更出色的結(jié)果;而圖9(e)、圖9(f)、圖10(e)和圖10(f),由于繩帶被背景覆蓋,所以繩帶會(huì)出現(xiàn)少量漏檢,大部分情況下在繩帶寬度不確定時(shí)本文的模型表現(xiàn)出更高的準(zhǔn)確率,在打結(jié)部分和細(xì)繩帶部分檢測(cè)的準(zhǔn)確率更高。
圖8 多根繩帶時(shí)檢測(cè)結(jié)果對(duì)比Fig. 8 Comparison of test results when multiple ropes
圖9 繩帶打結(jié)時(shí)檢測(cè)結(jié)果對(duì)比Fig. 9 Comparison of test results when rope is knotted
圖10 復(fù)雜背景時(shí)檢測(cè)結(jié)果對(duì)比Fig. 10 Comparison of test results in complex background
原始U-net存在不能收斂的情況或者收斂的速度很慢,本文的模型收斂的更快,同時(shí)解決了模型收斂不穩(wěn)定的問題。最終模型的性能對(duì)比如表1所示。
表1 算法性能對(duì)比
實(shí)驗(yàn)3,圖像去繩帶的修復(fù)算法。如圖11(a)和圖11(b)所示,在多根繩帶場(chǎng)景的實(shí)驗(yàn)中,4根被檢測(cè)到的繩帶都被很好地去除了;如圖11(c)和圖11(d),在彎曲打結(jié)繩帶場(chǎng)景的實(shí)驗(yàn)中,寬度不一的繩帶以及彎曲打結(jié)細(xì)節(jié)部分也被去除了;如圖11(e)和圖11(f),在復(fù)雜背景場(chǎng)景的實(shí)驗(yàn)中,同樣出色地去除了圖像中繩帶,所有圖片下面小圖為部分細(xì)節(jié)放大9倍的結(jié)果。
本文提出一種基于改進(jìn)U-net的圖像繩帶檢測(cè)模型。通過加入深度可分離卷積來壓縮模型參數(shù),同時(shí)優(yōu)化了網(wǎng)絡(luò)的結(jié)構(gòu),引入BN層減少過擬合,引入雙線性插值的反卷積提高分割精度,提出帶權(quán)重的交叉熵函數(shù)和采用的He初始化提高了收斂的穩(wěn)定性。從最終的實(shí)驗(yàn)結(jié)果可以看出,U-net和本文的方法優(yōu)于傳統(tǒng)方法,但是本文模型的訓(xùn)練和測(cè)試結(jié)果比U-net算法速度更快,同時(shí)解決了U-net收斂不穩(wěn)定的問題,在部分場(chǎng)景優(yōu)于原始的U-net,特別是在部分打結(jié)和彎曲的繩帶上,最終取得了很好的結(jié)果,mIOU達(dá)到62.8%,進(jìn)一步證明本文算法的正確性。采用基于FMM的圖像修復(fù)算法,利用檢測(cè)到的繩帶位置,得到了非常好的圖像去繩帶效果,這一結(jié)果為在云端號(hào)上拍攝高質(zhì)量圖像提供了技術(shù)支持。
圖11 去繩帶實(shí)驗(yàn)結(jié)果圖Fig. 11 Experimental results of rope removal test
致謝:本文的實(shí)驗(yàn)數(shù)據(jù)由深圳光啟科技有限公司提供,寫作過程中黃正華老師對(duì)論文的研究方向做出了指導(dǎo)性的意見和推薦,提出了許多有益的改善性意見,在此致謝。