宋坤駿 張萼輝 中國(guó)鐵路上海局集團(tuán)有限公司科研所
為有效防止貨車篷布破損使貨物受潮或篷布繩網(wǎng)斷裂導(dǎo)致篷布脫落,目前上海局大型貨站每日需要人工檢查的高清篷布照片數(shù)在3萬(wàn)張左右,工人長(zhǎng)時(shí)間看圖容易導(dǎo)致視覺(jué)疲勞,不僅檢查效率低下還使得誤檢和漏檢層出不窮,存在安全事故隱患[1]。由此可見(jiàn),研發(fā)一套機(jī)器視覺(jué)車頂照片自動(dòng)判別系統(tǒng)可以有效降低人工支出,提升看圖效率和準(zhǔn)確度,為上海鐵路局貨運(yùn)建設(shè)提質(zhì)增效提供基礎(chǔ)技術(shù)支撐。工人需要查看的貨車車頂樣例圖片如圖1和圖2所示,圖1和圖2分別是沒(méi)有篷布的貨車車頂原始照片和有篷布的敞車車頂?shù)脑颊掌?/p>
圖1 一張沒(méi)有篷布的貨車車頂樣例圖片
圖2 一張有篷布的敞車車頂樣例圖片
由樣例圖片可見(jiàn),單憑人工過(guò)濾幾萬(wàn)張圖片不僅成本高企,效率低下,不利于工人身心健康和工作積極性,也無(wú)法保證準(zhǔn)確率。
完整的篷布故障識(shí)別問(wèn)題實(shí)際上是一個(gè)多分類問(wèn)題,包括無(wú)篷布,正常篷布,問(wèn)題篷布等類別,其中問(wèn)題篷布又可以細(xì)分為篷布破洞,繩網(wǎng)斷線,篷布積水等類別。為了提升準(zhǔn)確率起見(jiàn),將此多分類問(wèn)題轉(zhuǎn)化為多個(gè)二分類問(wèn)題,即首先分辨是否有篷布,然后判斷篷布是否有故障。針對(duì)判斷篷布有無(wú)的問(wèn)題,筆者曾嘗試過(guò)基于深度學(xué)習(xí)的圖像分類算法,然而深度學(xué)習(xí)準(zhǔn)確率并不能達(dá)到較高水平如95%以上,并且對(duì)于硬件要求較高,訓(xùn)練耗時(shí)長(zhǎng)于本文提出的算法。因而,筆者抓住篷布獨(dú)有的交叉斜向網(wǎng)格繩網(wǎng)特點(diǎn),建立了灰度圖的方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征[2]。該特征的建立步驟如下:將圖像灰度化并Gamma校正后劃分為多個(gè)cells(例如16*16像素/cell),統(tǒng)計(jì)每個(gè)cell中像素點(diǎn)的梯度方向的直方圖,形成各個(gè)cell的HOG特征描述子,然后將各個(gè)cell組織成block(例如2*2個(gè)cell/block),block中所有cell的特征描述子串聯(lián)起來(lái)得到該block的HOG特征描述子。再把圖中所有block的特征描述子串聯(lián)起來(lái)就可以得到該圖的HOG特征向量了。由于HOG是在圖像的局部方格單元上操作,所以它對(duì)圖像幾何的和光學(xué)的形變都能保持很好的不變性,這兩種形變只會(huì)出現(xiàn)在更大的空間鄰域上。
完整的檢測(cè)篷布有無(wú)的算法步驟如下:
(1)將圖像灰度化以后用雙三次插值法統(tǒng)一縮放到高128,寬320的尺寸。
(2)以16×16像素的cell大小,2×2cells的block大小提取block無(wú)交疊的HOG特征,梯度方向統(tǒng)計(jì)范圍為-180度到180度之間均勻分布的9個(gè)區(qū)間。
(3)將各幅圖像的HOG特征向量排列成特征矩陣作為加權(quán)極限學(xué)習(xí)機(jī)的輸入進(jìn)行訓(xùn)練,其中權(quán)重為訓(xùn)練集中每類樣本數(shù)的倒數(shù)。
(4)使用訓(xùn)練好的加權(quán)極限學(xué)習(xí)機(jī)模型對(duì)測(cè)試樣本進(jìn)行預(yù)測(cè)判斷篷布有無(wú)。
為了判斷篷布是否存在破洞,繩網(wǎng)斷線,積水等情況,HOG這種刻畫(huà)物體形狀的特征不適合描述。以樣本數(shù)最多的篷布積水情況為例,肉眼識(shí)別時(shí)主要依賴存在的反光現(xiàn)象,因此引入另一個(gè)描述灰度變化的紋理特征描述子LBP(Local Binary Pattern)來(lái)輔助篷布故障情況的判斷。某像素點(diǎn)LBP特征的計(jì)算原理是考慮一定采樣半徑的圓形鄰域內(nèi)的鄰近像素點(diǎn),假設(shè)采集P個(gè)采樣點(diǎn),將這P個(gè)采樣點(diǎn)的灰度值同該中心點(diǎn)灰度值比較,若采樣點(diǎn)灰度值大于中心點(diǎn)灰度值,則該采樣點(diǎn)位置標(biāo)記為1,否則為0,這樣P個(gè)采樣點(diǎn)可以形成P位二進(jìn)制數(shù),即為中心點(diǎn)的LBP值,可以反映該鄰域的紋理信息。該定義僅僅滿足灰度不變性,為了得到旋轉(zhuǎn)不變的特征,研究人員提出如下改進(jìn):不斷旋轉(zhuǎn)圓形鄰域得到一系列LBP值,取最小值作為鄰域的旋轉(zhuǎn)不變LBP特征。
除了HOG和LBP這些經(jīng)典的特征,作者還提出了一種手工構(gòu)造的特征,能夠較好的反映積水圖片的反光特點(diǎn)。該特征的構(gòu)造方法為:首先將圖像的四周各裁去50像素以去除不含篷布網(wǎng)繩的無(wú)關(guān)部分。裁剪后的圖像轉(zhuǎn)為灰度圖,并用雙三次插值法縮放到高514,寬2400的尺寸。隨后將該灰度圖等分為48小塊,高度方向4等分,寬度方向12等分。對(duì)每一小塊,找出該小塊中灰度值最高的一個(gè)像素點(diǎn),然后在該像素點(diǎn)的上下左右四個(gè)方向計(jì)算該像素點(diǎn)的灰度值同周圍像素點(diǎn)灰度值之差。其中每個(gè)方向都取同該像素點(diǎn)距離為10,15,20,25,30個(gè)像素的鄰近點(diǎn)計(jì)算灰度差值。若這些距離處的鄰近點(diǎn)越出邊界,則取為邊界點(diǎn)。
由此可以得到在蓋有篷布的貨車頂照片中識(shí)別故障篷布的完整算法如下:
(1)將圖像灰度化以后用雙三次插值法統(tǒng)一縮放到高614,寬1200的尺寸。
(2)在每一像素半徑為2像素的圓形鄰域內(nèi)采集8個(gè)采樣點(diǎn)計(jì)算旋轉(zhuǎn)不變的LBP特征,計(jì)算鄰近采樣點(diǎn)時(shí)采用線性插值。
(3)再將圖片裁剪灰度化后縮放到高514,寬2400的尺寸提取上述手工特征。
(4)將LBP特征和手工特征排列成特征矩陣,并用MINMAX方法歸一化特征矩陣的每一列。
(5)特征矩陣作為加權(quán)極限學(xué)習(xí)機(jī)的輸入進(jìn)行訓(xùn)練,其中權(quán)重為訓(xùn)練集中每類樣本數(shù)的倒數(shù)。
(6)使用訓(xùn)練好的加權(quán)極限學(xué)習(xí)機(jī)模型將有篷布圖片分為正常或故障兩類。
以上算法中涉及的極限學(xué)習(xí)機(jī)的理論在文獻(xiàn)[4]中有較為詳細(xì)的介紹??紤]到苫蓋有篷布的敞車數(shù)量遠(yuǎn)少于沒(méi)有篷布的其他貨車數(shù)量,訓(xùn)練集樣本是不均衡的,因此采用了樣本加權(quán)的方式考慮不均衡性。所述加權(quán)正則化極限學(xué)習(xí)機(jī)的理論概要如下,設(shè)單隱層前饋神經(jīng)網(wǎng)絡(luò)的輸出層和隱層神經(jīng)元數(shù)分別為m和l,則關(guān)于輸入特征向量的第j維輸出表達(dá)式為:
圖3 極限學(xué)習(xí)機(jī)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
加權(quán)正則化極限學(xué)習(xí)機(jī)采用的是逐樣本加權(quán)的方式,每個(gè)樣本的訓(xùn)練權(quán)重等于訓(xùn)練集中該類樣本的樣本數(shù)的倒數(shù),可以證明這是最優(yōu)的權(quán)重。所有樣本的權(quán)重排列成一個(gè)N×N對(duì)角矩陣W。其中N是訓(xùn)練集樣本數(shù)。加權(quán)正則化極限學(xué)習(xí)機(jī)輸出層權(quán)值β的學(xué)習(xí)結(jié)果由如下公式給出:
上式中C是正則化參數(shù),通過(guò)反復(fù)試驗(yàn),針對(duì)本問(wèn)題正則化參數(shù)C取為30。W是樣本權(quán)重矩陣,H是隱層輸出矩陣,由如下公式給出:
根據(jù)以上公式得出極限學(xué)習(xí)機(jī)的算法步驟如圖4所示:
圖4 極限學(xué)習(xí)算法應(yīng)用步驟
以上兩個(gè)算法在數(shù)據(jù)集上的運(yùn)行結(jié)果如下:
就區(qū)分有篷布的敞車和其他無(wú)篷布貨車的算法來(lái)說(shuō),訓(xùn)練集包含2872張有篷布苫蓋車頂照片以及3088張無(wú)篷布車頂照片。測(cè)試集包含7197張有篷布苫蓋車頂照片和102099張無(wú)篷布車頂照片。所有圖片均為三通道彩色圖片。除極少數(shù)圖片外,各圖片高度統(tǒng)一為614像素,寬度大致分布在2000-3100像素間。算法在如上數(shù)據(jù)集上取得了99.98%的訓(xùn)練集準(zhǔn)確率以及96.40%的測(cè)試集準(zhǔn)確率和99.61%的測(cè)試集召回率。
在另一套數(shù)據(jù)集中,訓(xùn)練集包含3548張圖,其中有篷布苫蓋的圖有1739張。無(wú)篷布的圖有1809張。測(cè)試集包含115004張圖,其中無(wú)篷布的圖有106674張,有篷布的圖有8330張。區(qū)分篷布有無(wú)的算法取得了99.71%的測(cè)試集準(zhǔn)確率,99.13%的測(cè)試集精確度和96.90%的測(cè)試集召回率。
就區(qū)分篷布是否有故障的算法而言,共有10069張有篷布車頂照片,正常苫蓋狀態(tài)篷布為一類,問(wèn)題篷布為另一類,訓(xùn)練集1739張圖片,測(cè)試集8330張圖片,訓(xùn)練集和測(cè)試集中正常圖片,積水圖片,斷線和破洞圖片張數(shù)比例大致和10069張圖的數(shù)據(jù)全集相同。在這樣的訓(xùn)練集和測(cè)試集條件下,該算法取得了99.88%的訓(xùn)練集準(zhǔn)確率以及95.94%的測(cè)試集召回率和69.94%的測(cè)試集準(zhǔn)確率。
區(qū)分篷布是否有故障的算法,如果去掉LBP特征,單用筆者構(gòu)造的手工特征可以起到提升準(zhǔn)確率的效果。單用手工特征的加權(quán)極限學(xué)習(xí)分類器在935個(gè)訓(xùn)練樣本上訓(xùn)練后能夠在9134個(gè)樣本的測(cè)試集上取得87.83%的準(zhǔn)確率。但是召回率僅有75.05%。原因在于,同上文以LBP和手工特征為特征的分類器相比,誤分類的負(fù)樣本數(shù)FN增加,而誤分類的正樣本數(shù)FP減少了。
本文介紹的算法訓(xùn)練時(shí)對(duì)于硬件要求低,不需要GPU,速度能夠滿足實(shí)際工程要求。其次由于本算法準(zhǔn)確率較高,因而其人工標(biāo)定成本也較低。標(biāo)定時(shí)可以先手工標(biāo)定小量幾百?gòu)堄?xùn)練圖片用算法預(yù)運(yùn)行一趟得到全部圖片粗估分類值,然后再予以人工修正即可,大大減輕了手工標(biāo)定數(shù)萬(wàn)張圖的工作量。