張勇停 李 鋒
(江蘇科技大學(xué) 鎮(zhèn)江 212003)
線結(jié)構(gòu)光掃描技術(shù)是一種基于光學(xué)三角法的非接觸式測(cè)量技術(shù),主要由相機(jī)和投射線光條的激光器組成,被廣泛應(yīng)用于三維測(cè)量、三維圖像重建、焊縫檢測(cè)與跟蹤、質(zhì)量檢測(cè)等領(lǐng)域[1~2]。測(cè)量時(shí),先將線激光器發(fā)射的激光束投射到被測(cè)物體,激光平面勻速掃描物體表面的同時(shí)使用相機(jī)連續(xù)拍照,根據(jù)相機(jī)拍攝的光條圖像計(jì)算二維圖像的中心坐標(biāo),再根據(jù)標(biāo)定得到的系統(tǒng)參數(shù)就可以計(jì)算二維坐標(biāo)對(duì)應(yīng)在世界坐標(biāo)系中的三維坐標(biāo)。線光條圖像具有一定的像素寬度,通常為幾到幾十個(gè)像素,能否精確地提取光條中心是線結(jié)構(gòu)光視覺(jué)系統(tǒng)的關(guān)鍵,其提取精度直接影響到整個(gè)線結(jié)構(gòu)光視覺(jué)系統(tǒng)的精度[3]。
傳統(tǒng)的光條中心提取算法主要有極值法[4]、灰度重心法[5]、方向模板法[6]、曲線擬合法[7]、基于Hessian 的Steger 算法[8]。極值法是從光條局部截面上尋找灰度分布的極大值點(diǎn)作為中心,對(duì)于灰度分布滿足符合理想高斯分布的光條具有非常好的提取效果,計(jì)算速度快,但易受噪聲影響,精度較低,適用性低。灰度重心法的算法簡(jiǎn)單,計(jì)算效率高,但精度低,對(duì)噪聲敏感。方向模板法雖然降低了噪聲對(duì)中心提取結(jié)果影響,但是計(jì)算效率大大下降。曲線擬合法的核心在于采用多項(xiàng)式曲線來(lái)擬合已有光條,從而用擬合的多項(xiàng)式代替原光條?;贖essian 的Steger 算法計(jì)算精度高,但需要進(jìn)行大量的高斯卷積運(yùn)算,運(yùn)行速度較慢。Wu[9]等提出了一種均方灰度梯度法和灰度重心法結(jié)合的算法,速度快且精度高。蔡懷宇[10]等提出了一種基于PCA 的中心線提取方法,用PCA 法代替Hessian 矩陣獲取光條的法線方向,明顯提高了計(jì)算速度。
近年來(lái),深度學(xué)習(xí)在圖像分類(lèi)、目標(biāo)檢測(cè)、圖像語(yǔ)義分割等[11~13]領(lǐng)域取得了一系列突破性的研究成果,但是深度學(xué)習(xí)在光條中心提取方面還沒(méi)有太多的研究。王勝春[14]等提出基于ENet 網(wǎng)絡(luò)對(duì)光條進(jìn)行分割,再利用模板法計(jì)算光條中心,增加了算法復(fù)雜度。郭雁蓉[15]等提出一種兩段式的卷積神經(jīng)網(wǎng)絡(luò),第一個(gè)網(wǎng)絡(luò)用于目標(biāo)檢測(cè),第二個(gè)網(wǎng)絡(luò)進(jìn)行中心提取,在復(fù)雜環(huán)境中的提取結(jié)果比Hessian 矩陣法、灰度重心法表現(xiàn)好,但是增加了傳播錯(cuò)誤。
UNet 網(wǎng)絡(luò)是Ronnerberger 等[16]在FCN[17]網(wǎng)絡(luò)的基礎(chǔ)上開(kāi)發(fā)的。如圖1所示,UNet網(wǎng)絡(luò)具有對(duì)稱(chēng)的U型編解碼結(jié)構(gòu),編碼器對(duì)應(yīng)的是圖像下采樣過(guò)程,解碼器對(duì)應(yīng)的是特征圖上采樣過(guò)程。在編碼器部分中采用最大池化操作來(lái)縮小特征圖,提取更高層次的特征,用來(lái)獲取場(chǎng)景信息;在解碼器部分使用上采樣操作來(lái)恢復(fù)到原始圖像大小,上采樣的過(guò)程是結(jié)合了下采樣各層信息和上采樣的輸入信息來(lái)還原細(xì)節(jié)信息。相應(yīng)的編碼器和解碼器之間通過(guò)跳躍連接恢復(fù)上采樣圖像的細(xì)節(jié)信息。編碼器通過(guò)CNN 單元來(lái)獲取圖像的特征信息,包括卷積層,BN層和ReLU層,如圖1所示。
圖1 UNet特征提取模塊
RCNN[18]是基于CNN的模型優(yōu)化,在CNN單元上加兩個(gè)求和運(yùn)算就得到了RCNN,如圖2所示。
圖2 改進(jìn)的特征提取模塊
輸入圖像后,RCNN 首先通過(guò)第一個(gè)3×3 的卷積層生成初步特征圖,經(jīng)過(guò)BN 層ReLU 層之后,再用第二個(gè)3×3 的卷積層生成新的特征圖,將兩次的特征圖相加生成輸出特征X(t-1)。再通過(guò)同樣的操作,并與初步特征圖相加就得到了RCNN 單元的輸出特征圖X(t)。
每個(gè)RCNN 單元中都有5 個(gè)卷積,并在每個(gè)卷積后還有一次加法運(yùn)算,因此RCNN 單元的圖像有效感受場(chǎng)將逐漸擴(kuò)大。通過(guò)這些成功的卷積操作和加法運(yùn)算后,RCNN 單元可以提取比只有固定有效感受場(chǎng)的普通CNN 單元更深和更復(fù)雜的特征數(shù)據(jù)。同時(shí)這5 個(gè)卷積層共享權(quán)重參數(shù),需要學(xué)習(xí)的參數(shù)數(shù)量不變,減少了網(wǎng)絡(luò)模型的復(fù)雜度。
本文提出的基于RCNN 的UNet 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,將UNet 網(wǎng)絡(luò)中的CNN 單元替換為改進(jìn)后的RCNN 單元。該網(wǎng)絡(luò)共7層架構(gòu),即3層編碼器、橋接器和3 層解碼器,共36 層網(wǎng)絡(luò),最后一層是每個(gè)像素的sigmoid激活函數(shù)。sigmoid激活函數(shù)將對(duì)應(yīng)的特征映射轉(zhuǎn)換為概率值pi,表示該像素是光條中心的概率。假設(shè)yi表示像素點(diǎn)(i)的標(biāo)簽,則yi=1,否則,為yi=0。該算法采用二元交叉熵函數(shù)作為損失函數(shù),其計(jì)算公式如下:
圖3 改進(jìn)的UNet網(wǎng)絡(luò)結(jié)構(gòu)
其中N是輸入圖像的像素?cái)?shù)量。
實(shí)驗(yàn)采用FU650L200-BD22 一字線激光器和Manta G-125B 工業(yè)相機(jī)采集圖像,數(shù)據(jù)集的圖片大小均為512pixel×512pixel,數(shù)據(jù)集共1500 張圖片,訓(xùn)練集和測(cè)試集分別為1150和350張圖片。
本文的實(shí)驗(yàn)使用的深度學(xué)習(xí)框架是Pytorch,顯卡是GeForce GTX 1080GPU(顯存大小為8GB),操作環(huán)境是基于i7-7820 的64 位Windows 10,編程語(yǔ)言是Python3.7。
在數(shù)據(jù)預(yù)處理階段,將數(shù)據(jù)集圖片進(jìn)行數(shù)據(jù)增強(qiáng)處理,包括翻轉(zhuǎn)、旋轉(zhuǎn)、裁剪、縮放等操作。在參數(shù)優(yōu)化階段使用Adam優(yōu)化器,Adam算法的作用是可以在訓(xùn)練時(shí)自適應(yīng)地調(diào)整學(xué)習(xí)率,初始學(xué)習(xí)率為0.0001,batch size為6,epoch為200次。
通過(guò)對(duì)比如圖4 所示的loss 曲線,可以看出迭代次數(shù)在達(dá)到25左右時(shí)loss曲線趨于平緩,隨著迭代次數(shù)的增加,模型逐漸收斂。
圖4 訓(xùn)練loss曲線
為了驗(yàn)證本文所提算法的性能,分別采用傳統(tǒng)的灰度重心法,Steger 算法和本文算法對(duì)線結(jié)構(gòu)光的光條進(jìn)行中心提取,分別對(duì)比三種算法的精度和計(jì)算效率。圖5(a)~圖5(c)分別為連續(xù)型光條、間斷型光條和曲線型光條三種不同形狀的光條。
圖5 三種不同形狀的光條
不同方法提取不同形狀光條中心的實(shí)驗(yàn)結(jié)果如圖6 所示。圖6(a)~圖6(c)分別為灰度重心法、Steger算法和本文改進(jìn)方法的提取結(jié)果。
圖6 不同算法的提取結(jié)果
由上述實(shí)驗(yàn)結(jié)果可知,灰度重心法在光條灰度不均勻時(shí)的提取效果較差,Steger 算法和本文算法受光條灰度分布影響較小,性能更穩(wěn)定。
對(duì)上述實(shí)驗(yàn)的實(shí)驗(yàn)結(jié)果做精度分析,可以通過(guò)改進(jìn)算法提取到的光條中心點(diǎn)到光條中心真值距離的標(biāo)準(zhǔn)差來(lái)表示該提取算法的精度。標(biāo)準(zhǔn)差可表示為
式中,n為中心點(diǎn)個(gè)數(shù),xi為第i個(gè)中心點(diǎn)到真值的距離,為中心點(diǎn)到真值的平均值。表1 為通過(guò)三種算法計(jì)算后得到光條中心坐標(biāo)的標(biāo)準(zhǔn)差。
表1 各算法的標(biāo)準(zhǔn)差
表2 為上述三組不同形狀的圖片分別在三種算法下的程序運(yùn)行時(shí)間。
表2 各算法的運(yùn)行時(shí)間
為了進(jìn)一步體現(xiàn)本文算法的優(yōu)勢(shì),對(duì)比灰度重心法、Steger算法和本文算法的綜合性能,分別取三種算法的程序運(yùn)行時(shí)間和標(biāo)準(zhǔn)差的乘積作為衡量算法綜合性能的評(píng)判標(biāo)準(zhǔn),如表3 所示,可以看出,本文所提算法的綜合性能與灰度重心法和Steger法相比較具有一定的優(yōu)勢(shì)。
表3 各算法的綜合性能
為了驗(yàn)證本文算法的在噪聲下的提取效果,在光條圖像中添加由高斯噪聲和椒鹽噪聲組成的單像素噪聲點(diǎn)。圖7 為原圖提取的光條中心,圖8 為噪聲處理后提取的光條中心。
圖7 原圖的提取結(jié)果
圖8 噪聲處理后的提取結(jié)果
通過(guò)對(duì)比圖可以看出,噪聲處理前后光條的提取結(jié)果相差很小,幾乎不受噪聲影響。
綜上所述,本文提出的基于改進(jìn)UNet 網(wǎng)絡(luò)的線結(jié)構(gòu)光光條中心提取算法相比Steger 算法和灰度重心法對(duì)光條中心的提取效果更好、性能更穩(wěn)定、計(jì)算效率更高。
通過(guò)對(duì)傳統(tǒng)的UNet 網(wǎng)絡(luò)進(jìn)行改進(jìn),將普通的CNN單元替換為改進(jìn)的RCNN單元,在特征變換過(guò)程中保留了更多的細(xì)節(jié)信息,利用端到端的深度學(xué)習(xí)方式,減少了先分割光條后提取中心的傳播錯(cuò)誤。通過(guò)對(duì)不同形狀的光條,采用傳統(tǒng)的灰度重心法和Steger 算法進(jìn)行對(duì)比實(shí)驗(yàn),本文算法的精度要比傳統(tǒng)灰度重心法要高,運(yùn)行時(shí)間要比Steger 算法更少,滿足實(shí)時(shí)性的要求,且有一定的抗噪性,綜合性能較好。