呂 悅,張永忠
(北京城市學(xué)院,北京 順義區(qū) 101399)
如今,語(yǔ)義分割是數(shù)字圖像識(shí)別的關(guān)鍵技術(shù)之一。作為數(shù)字圖像識(shí)別的中心問(wèn)題,對(duì)于在不同場(chǎng)景中識(shí)別不同的事物更加重要,因?yàn)樵诂F(xiàn)實(shí)生活中,越來(lái)越多人們無(wú)法探索到的地方需要用到電子設(shè)備,在應(yīng)用場(chǎng)景圖像中識(shí)別或推理出相關(guān)的語(yǔ)義。例如VR視覺(jué),汽車(chē)的自動(dòng)駕駛功能,人與機(jī)器的交互等。
船舶水尺已經(jīng)在各種大型輪船上存在,并且也是重要的安全指標(biāo),如果能夠精確地獲取吃水?dāng)?shù)據(jù)、能夠及時(shí)的檢測(cè)船舶的安全狀態(tài)以及調(diào)整船舶,就可以有效的提高安全性,并且減少人力資源的消耗,同時(shí),在各種散裝貨物的重量測(cè)量中,通過(guò)船舶水尺進(jìn)行測(cè)量的數(shù)不勝數(shù)。因?yàn)橥ㄟ^(guò)船舶水尺計(jì)重的方法擁有著便捷與效率高的的特點(diǎn),使用此方法可以簡(jiǎn)單并快速的知道船舶裝載貨物的噸數(shù)??梢?jiàn)船舶水尺測(cè)量貨物重量的方法已經(jīng)是散裝貨物計(jì)重的常用方法,并且通過(guò)計(jì)算結(jié)果可以衍生出對(duì)商品進(jìn)行售賣(mài)的結(jié)算、船只的載重、貨物運(yùn)費(fèi)計(jì)算的依據(jù).
目前如果要檢測(cè)船舶吃水線(xiàn),主要依靠的是有經(jīng)驗(yàn)的船員、商檢人員等擁有相關(guān)專(zhuān)業(yè)經(jīng)驗(yàn)的人員通過(guò)目測(cè)進(jìn)行獲取數(shù)值。并且為了獲得較為準(zhǔn)確的數(shù)值,觀察人員需要通過(guò)多次的查看通過(guò)取平均值才能獲得較為準(zhǔn)確的數(shù)值。這種通過(guò)人的雙目測(cè)量獲得船舶吃水線(xiàn)數(shù)值的方式常常帶有較大的主觀性與局限性。其次由于現(xiàn)實(shí)狀況的限制,例如由于觀測(cè)角度或者惡劣天氣的問(wèn)題,導(dǎo)致水尺讀數(shù)讀取較為困難,往往會(huì)存在較大誤差,導(dǎo)致觀測(cè)精度往往沒(méi)有那么精確,如果利用機(jī)器去檢測(cè)可以節(jié)省大量的人力資源并增加一定安全性。
為替代人工,實(shí)現(xiàn)自動(dòng)檢測(cè),本文研究了基于圖像語(yǔ)義分割的船舶水線(xiàn)檢測(cè)方法,采用python作為仿真環(huán)境,利用圖像處理技術(shù)對(duì)船舶水尺處水位線(xiàn)的識(shí)別工作,能夠克服由于人工目測(cè)出現(xiàn)的問(wèn)題,能夠有效地檢測(cè)出水尺處水線(xiàn)的位置,并對(duì)之后的數(shù)據(jù)處理提供了可能,降低了系統(tǒng)的復(fù)雜性,并提高了水尺檢測(cè)的安全性和準(zhǔn)確率。
為了提高檢測(cè)的準(zhǔn)確率,本文提出了在原有的方法上進(jìn)行改進(jìn),相對(duì)于對(duì)于傳統(tǒng)方法減小了對(duì)船體縫合線(xiàn)的錯(cuò)誤識(shí)別,將部分劃痕識(shí)別為水線(xiàn)的錯(cuò)誤率減小,或者是將部分船體錯(cuò)誤識(shí)別為水面的情況進(jìn)行解決。實(shí)驗(yàn)結(jié)果證明,該方法在不耗費(fèi)大量的前提數(shù)據(jù)上進(jìn)行有效的識(shí)別,并保持一定的正確率。
系統(tǒng)軟件運(yùn)行在Windows平臺(tái)上,Windows操作系統(tǒng)能夠使系統(tǒng)的運(yùn)轉(zhuǎn)更明了,同時(shí)能夠使操作簡(jiǎn)單。系統(tǒng)程序使用編程語(yǔ)言python來(lái)進(jìn)行能夠更加清楚地觀察水線(xiàn)檢測(cè)的過(guò)程與結(jié)果。
船舶水線(xiàn)檢測(cè)系統(tǒng)組成如圖1所示。包含圖像預(yù)處理,水線(xiàn)檢測(cè),為了方便水尺計(jì)算建立水線(xiàn)軸三部分。水線(xiàn)檢測(cè)包括對(duì)水體和船體提的分割以及優(yōu)化。水線(xiàn)建軸包括對(duì)水線(xiàn)的提取以及建立坐標(biāo)軸。
圖1 總體結(jié)構(gòu)設(shè)計(jì)圖
為了更簡(jiǎn)便的識(shí)別,將水尺圖像由三通道彩色圖像通過(guò)python腳本轉(zhuǎn)換為灰度圖像,灰度圖像相較于彩色圖像,在進(jìn)行邊緣檢測(cè)時(shí)較為方便,速度會(huì)更快,計(jì)算量會(huì)更少,然后對(duì)圖像進(jìn)行二值化處理,因?yàn)橹恍枰R(shí)別水體與船體,所以圖像上像素點(diǎn)的灰度值范圍變?yōu)?與255之間,將分割后的圖片轉(zhuǎn)換成用灰度值組成的矩陣。所識(shí)別的灰度值等于或者大于自行指定數(shù)值的像素識(shí)別為水體,識(shí)別灰度值小于自行指定數(shù)值則識(shí)別為背景[7],如圖2。
圖2 圖像灰度化
本文采用Deeplab模型架構(gòu),Deeplab是一種卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)。deeplab相對(duì)于FCN來(lái)說(shuō),雖然依舊采用了FCN網(wǎng)絡(luò)獲取分?jǐn)?shù)圖,但是對(duì)VGG網(wǎng)絡(luò)進(jìn)行了一些修改。在得到分?jǐn)?shù)圖的方法上,deeplab要比FCN方法的效果好了一些。Deeplab網(wǎng)絡(luò)將VGG網(wǎng)絡(luò)中池化層中第四層與第五層的步長(zhǎng)由2改為了1,并且增加了一個(gè)填充的步驟。這樣的改動(dòng),使得VGG網(wǎng)絡(luò)總步長(zhǎng)由原來(lái)的32變成8,所以在輸入圖像后得到的分?jǐn)?shù)圖的效果要比FCN網(wǎng)絡(luò)的效果好了很多[2]。
通過(guò)實(shí)驗(yàn)后發(fā)現(xiàn),Deeplab模型實(shí)驗(yàn)效果優(yōu)于U-net模型的實(shí)驗(yàn)效果,Deeplab能夠?qū)⑺媾c船體清楚地識(shí)別并分割出來(lái),而U-net只能夠?qū)D像大概的分割出來(lái),Deeplab分割效果更好能夠清楚的識(shí)別出水體,提取的邊緣更加連續(xù)與平滑,如圖3所示,但是在訓(xùn)練過(guò)程中所需要的時(shí)間更長(zhǎng); U-net訓(xùn)練速度很快,但是識(shí)別效果并不好,如圖4所示。
圖3 Deeplab分割效果
圖4 U-net分割效果
在進(jìn)行水體分割后,會(huì)有一些錯(cuò)誤分割對(duì)之后的識(shí)別有一定的影響,添加識(shí)別約束來(lái)進(jìn)行水線(xiàn)提取的準(zhǔn)確率。
圖像中出了水體和船體,在識(shí)別中可能會(huì)將部分船體或者是部分背景識(shí)別為水體,為了消除這些減小這些錯(cuò)誤是被識(shí)別,在檢測(cè)中加入圖像識(shí)別約束,因?yàn)樗w應(yīng)為圖像中除背景外最大的一塊面積,將分割后所有識(shí)別為水體的區(qū)域進(jìn)行面積計(jì)算,并將其進(jìn)行比較,保留面積最大的區(qū)域作為水體區(qū)域,并將其輸出。
圖5 單連通域約束
由于船舶水線(xiàn)經(jīng)常是曲折線(xiàn)條偶爾會(huì)有直線(xiàn)線(xiàn)條,本文通過(guò)邊緣檢測(cè)進(jìn)行水線(xiàn)的提取,利用像素灰度的突然變化來(lái)尋找圖像的邊緣,當(dāng)獲取分割出的水面區(qū)域后,對(duì)水面區(qū)域進(jìn)行邊緣檢測(cè) 保留水面區(qū)域的邊緣,上邊緣即為水線(xiàn)。本文采用Canny算子進(jìn)行水線(xiàn)提取
1)圖像灰度處理
對(duì)分割后的圖像進(jìn)行灰度處理,將RGB格式的彩圖的3個(gè)通道進(jìn)行加權(quán)平均,方法為
Gray=(R+G+B)/3
(1)
在進(jìn)行識(shí)別時(shí)能夠有效的減少識(shí)別時(shí)間,并便于后續(xù)優(yōu)化的添加。
2)噪聲影響處理
處理時(shí)噪聲會(huì)對(duì)邊緣檢測(cè)效果產(chǎn)生誤差,所以為了減少誤差,減少噪聲數(shù)量,實(shí)現(xiàn)較為光滑的圖像,使用高斯濾波器與圖像進(jìn)行卷積。
離散的高斯卷積核H: (2k+1)×(2k+1)維,元素計(jì)算方法
(2)
高斯卷積核大小對(duì)最終的識(shí)別結(jié)果會(huì)產(chǎn)生不同程度的影響。如果卷積核尺寸選擇的略大,檢測(cè)時(shí)對(duì)噪聲的敏感度也會(huì)比較小,但是對(duì)于邊緣檢測(cè)出現(xiàn)的誤差率也會(huì)略微增大。所以要尋找一個(gè)較為適合的大小。
3)像素點(diǎn)的梯度強(qiáng)度與方向計(jì)算
圖像的邊緣有指向各個(gè)方向的的,所以Canny算子沿X軸和Y軸以及對(duì)角線(xiàn)四個(gè)方向進(jìn)行梯度的計(jì)算,本文使用Sobel算子進(jìn)行梯度的計(jì)算,因?yàn)橄鄬?duì)于Prewitt算子等其它幾種邊緣檢測(cè)算子,Sobel算子檢測(cè)出來(lái)的邊緣亮度較為鮮艷,線(xiàn)條更加清楚,更加易于觀看。
4)非極大值抑制
水線(xiàn)檢測(cè)只能存在一個(gè)精確的顯示,所以要進(jìn)行非極大值抑制,將除局部區(qū)域最大值外的梯度值抑制,將水線(xiàn)圖像中的每一個(gè)像素梯度值與正負(fù)梯度方向上的像素進(jìn)行比較,如果所選取的像素梯度值比其兩個(gè)方向上的像素大,則保留此像素:反之則將像素值抑制[6]。
5)雙閾值檢測(cè)
在對(duì)圖像進(jìn)行抑制之后,識(shí)別出的邊緣能夠更加接近真實(shí)的水線(xiàn)。然而,水線(xiàn)周邊還存在著部分由于噪聲引起的錯(cuò)誤邊緣,雙閾值檢測(cè)就是為了消除這些錯(cuò)誤識(shí)別,若是水線(xiàn)周邊存在低于低閾值的像素就進(jìn)行舍棄或刪除,保留高于高閾值的像素。是水線(xiàn)更加的精確。
Canny算子檢測(cè)結(jié)果如圖6。
圖6 Canny算子檢測(cè)結(jié)果
由檢測(cè)結(jié)果可知,Canny算子檢測(cè)性較高,相對(duì)于傳統(tǒng)的Sobel檢測(cè)算子,更不容易受到噪聲的影響,能夠識(shí)別到較為不明顯的邊緣,在進(jìn)行檢測(cè)時(shí)若是強(qiáng)弱邊緣相連接時(shí),能夠?qū)⑷踹吘夛@示出來(lái)。并且對(duì)圖像的細(xì)節(jié)也能很好的檢測(cè),對(duì)于水面沒(méi)有波浪,并且水線(xiàn)呈現(xiàn)一條線(xiàn)時(shí),位于X軸方向識(shí)別的水線(xiàn)效果更加準(zhǔn)確。在需要高精度的識(shí)別時(shí)使用會(huì)有較好的效果。
由于圖像中除水線(xiàn)外還會(huì)有類(lèi)似船體分割線(xiàn)或劃痕之類(lèi)并不需要的線(xiàn),這些干擾線(xiàn)都會(huì)使檢測(cè)出現(xiàn)偽邊緣,并為了對(duì)后續(xù)的吃水值的計(jì)算的準(zhǔn)確性,所以需要對(duì)圖像進(jìn)行添加約束的直線(xiàn)檢測(cè)。當(dāng)水線(xiàn)檢測(cè)之后,按照實(shí)際情況進(jìn)行約束的添加:
1)一般靠岸船舶水線(xiàn)起伏不會(huì)非常大,通常在正負(fù)20°,若邊緣檢測(cè)出超過(guò)設(shè)定數(shù)值,會(huì)刪除此次霍夫直線(xiàn)檢測(cè)結(jié)果。
2)水線(xiàn)通常為圖像中延水平方向上最長(zhǎng)的,將檢測(cè)出的水線(xiàn)進(jìn)行比較進(jìn)行只保留最長(zhǎng)的一根線(xiàn)。
3)有的水線(xiàn)在中間部分起伏比較大時(shí),可能會(huì)檢測(cè)出中斷斷續(xù)續(xù)的水線(xiàn),這時(shí)將這些片段的的水線(xiàn)進(jìn)行連接,作出一條擬水線(xiàn)。
通過(guò)霍夫直線(xiàn)檢測(cè)后,保留直線(xiàn)作為坐標(biāo)系的X軸,如圖7所示。
圖7 水線(xiàn)建軸
為了驗(yàn)證本文的有效性,進(jìn)行相應(yīng)的實(shí)驗(yàn)。隨機(jī)選擇船體水尺處的圖像輸入到訓(xùn)練后的模型中進(jìn)行檢測(cè),識(shí)別后輸出圖像如圖8所示。
圖8 實(shí)驗(yàn)結(jié)果
從實(shí)驗(yàn)結(jié)果來(lái)看,訓(xùn)練后的模型能夠有效的識(shí)別出水線(xiàn)的位置并將其進(jìn)行單獨(dú)的顯示,并且能夠排除在13M字符處出現(xiàn)的船體縫合線(xiàn)的干擾,擁有一定的準(zhǔn)確率。
分別采用傳統(tǒng)檢測(cè)方法與本文方法進(jìn)行船舶的水線(xiàn)檢測(cè)。
表1 不同方法的檢測(cè)結(jié)果
隨機(jī)選擇船體水尺處的圖像輸入到訓(xùn)練好的模型中進(jìn)行檢測(cè),從實(shí)驗(yàn)結(jié)果來(lái)看,訓(xùn)練后的模型能夠有效的識(shí)別出水線(xiàn)的位置并將其進(jìn)行單獨(dú)的顯示,并且能夠排出一定的干擾項(xiàng),從而較少識(shí)別錯(cuò)誤的發(fā)生。相較于傳統(tǒng)的水線(xiàn)檢測(cè),本文水線(xiàn)檢測(cè)準(zhǔn)確率要優(yōu)于傳統(tǒng)的檢測(cè)。說(shuō)明本文系統(tǒng)可以更加準(zhǔn)確地檢測(cè)出水線(xiàn)。
本文實(shí)現(xiàn)了一種通過(guò)圖像視覺(jué)獲取船舶水線(xiàn)的方法,應(yīng)用計(jì)算機(jī)代替人工對(duì)水線(xiàn)的識(shí)別,為后續(xù)的吃水值計(jì)算提供了可能性,并且相較于人工水線(xiàn)識(shí)別,計(jì)算機(jī)是被降低了人工檢測(cè)時(shí)的誤差,增加了安全性與準(zhǔn)確性,實(shí)驗(yàn)結(jié)果表明,使用圖像識(shí)別技術(shù)能夠識(shí)別出水線(xiàn)位置,并有一定的準(zhǔn)確率,能夠滿(mǎn)足實(shí)際應(yīng)用需求。實(shí)驗(yàn)的不足之處在于:雖然在小規(guī)模的測(cè)試集上驗(yàn)證了該方法的有效性,但缺乏大規(guī)模的實(shí)驗(yàn)驗(yàn)證,水線(xiàn)提取的精度有待進(jìn)一步提高。