楊杰敏, 郭保琪, 羅漢江, 林建成
(1.中國海洋大學(xué),山東 青島 266100; 2. 青島新前灣集裝箱碼頭有限責(zé)任公司,山東 青島 266500; 3. 青島海大新星軟件咨詢有限公司,山東 青島 266500;4. 山東科技大學(xué)計算機科學(xué)與工程學(xué)院,山東 青島 266590)
全自動化集裝箱碼頭是對傳統(tǒng)集裝箱碼頭作業(yè)模式的顛覆, 但實現(xiàn)集裝箱碼頭裝卸全過程無人化作業(yè),首先需要實現(xiàn)對碼頭作業(yè)場景及對象全方位的感知。當(dāng)前人工智能、物聯(lián)網(wǎng)、云計算等相關(guān)技術(shù)快速發(fā)展, 為自動化集裝箱碼頭應(yīng)用技術(shù)的發(fā)展帶來新的機遇[1]。作為自動化碼頭系統(tǒng)應(yīng)用的關(guān)鍵技術(shù)之一的圖像識別技術(shù),不僅需要對集裝箱的箱號進(jìn)行識別,而且需要對集裝箱的箱門方向、鉛封、殘損等信息進(jìn)行識別和檢測[2]。最近發(fā)展迅速的基于深度卷積網(wǎng)絡(luò)的圖像智能識別技術(shù),可以用來快速、有效地解決全自動化集裝箱碼頭集裝箱的識別問題。
目前,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在圖像識別方面取得了優(yōu)異的表現(xiàn)[3-5]。近期的研究文獻(xiàn)表明,雖然CNN在分類問題上進(jìn)行訓(xùn)練,但同時具備了較強的定位檢測能力[6-10]。流行的基于CNN 的目標(biāo)檢測方法主要有R-CNN,F(xiàn)aster R-CNN,R-FCN,SSD和YOLO等,目標(biāo)識別性能已經(jīng)取得長足的進(jìn)步。
R-CNN[11]首次提出在CNN中進(jìn)行目標(biāo)檢測,它首先計算有可能包含物體的剪裁方框(box),然后針對這些box運行CNN網(wǎng)絡(luò)進(jìn)行分類識別。由于推薦的box有很多重疊發(fā)生,導(dǎo)致該方法存在重復(fù)計算,代價較大。Fast R-CNN[12]將圖片輸入到神經(jīng)網(wǎng)絡(luò),然后在網(wǎng)絡(luò)中間層利用卷積特征進(jìn)行剪裁和box推薦,這樣只要運行一次CNN就可以得到所需要的box。R-CNN 和Fast R-CNN均依賴于外加的box生成器,而最近的研究表明這些box可以由神經(jīng)網(wǎng)絡(luò)本身生成[16-19],它需要一個覆蓋在不同空間位置、縮放比例、寬高比的box集合,被稱之為錨點。這些錨點用來預(yù)測兩個目標(biāo):一是離散的類標(biāo)號,另一個是連續(xù)的偏移坐標(biāo)。然后把這兩個目標(biāo)綁定到一個代價函數(shù)上,同時進(jìn)行訓(xùn)練。而另外一種基于區(qū)域的全卷積網(wǎng)絡(luò)R-FCN[13](Region-Based Fully Convolutional)在特征提取結(jié)束之后添加全卷積層,也就是說,它不是在網(wǎng)絡(luò)中間層建議的box上選取特征,而是在這個全卷積層上產(chǎn)生box,并預(yù)測目標(biāo)和位置。該方法將特征推送到最后一層不僅大大減少了每個區(qū)域的計算量,同時使用全卷積層使深度網(wǎng)絡(luò)保留了其平移不變性。
上述基于R-xxx的檢測方法均屬于兩階段算法,先進(jìn)行區(qū)域box推薦,然后進(jìn)行分類檢測。而SSD(Single Shot Multibox Detector )[14]和YOLO (You Only Look Once )[15]是一階段方法,使用一次網(wǎng)絡(luò)正向傳播就可以預(yù)測目標(biāo)和位置,而不需要進(jìn)行區(qū)域推薦,這無疑會極大提高預(yù)測速度,不過其預(yù)測準(zhǔn)確度不如區(qū)域推薦方法,因此在許多情況下需要在預(yù)測速度和準(zhǔn)確度之間做出合理的均衡。
前述流行的深度目標(biāo)檢測方法至少包含特征提取網(wǎng)絡(luò)和位置回歸網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)比較復(fù)雜,需要訓(xùn)練的參數(shù)量較大,所需的標(biāo)記樣本數(shù)量較大,而且必須使用同時帶有類別及位置標(biāo)記的樣本,樣本的制作成本高。但實際應(yīng)用中很難提供足夠的標(biāo)記樣本,導(dǎo)致訓(xùn)練出的模型準(zhǔn)確率不夠理想。針對此問題,本文提出一種輕量級的基于相關(guān)性特征圖的目標(biāo)檢測方法,該方法只需要部分特征提取網(wǎng)絡(luò),不需要進(jìn)行box推薦和坐標(biāo)位置回歸,而是充分利用卷積神經(jīng)網(wǎng)絡(luò)自身的頻率選擇特性,以及產(chǎn)生平移、旋轉(zhuǎn)、縮放不變性特征的能力,生成一個與目標(biāo)相關(guān)的顯著性分布特征圖,對該特征圖之前的所有濾波器組進(jìn)行訓(xùn)練,使該特征圖同時具備了分類和位置預(yù)測功能。該方法只需要較少的類別標(biāo)記樣本,不需要做位置標(biāo)記,就可以訓(xùn)練出兼顧準(zhǔn)確性和識別速度的深度模型。
論文首先從信號時頻變換的角度研究單個卷積濾波器的工作原理,然后對卷積網(wǎng)絡(luò)中間層產(chǎn)生的深度表征進(jìn)行分析,提取與檢測目標(biāo)相關(guān)的特征圖子集。通過對特征子集進(jìn)行組合,得到能夠檢測目標(biāo)的相關(guān)性特征圖,并設(shè)計相應(yīng)的目標(biāo)函數(shù)。最后通過實驗,驗證了該方法的有效性。
Inception卷積深度神經(jīng)網(wǎng)絡(luò)模型由最優(yōu)的稀疏子結(jié)構(gòu)層疊構(gòu)建而成,其理論依據(jù)在于:如果數(shù)據(jù)集的概率分布能夠被一個巨大的稀疏神經(jīng)網(wǎng)絡(luò)表征,那么通過分析上一層神經(jīng)元激活值的統(tǒng)計相關(guān)性,并將具有較高相關(guān)性的神經(jīng)元分組并逐層構(gòu)建,就可以得到一個最優(yōu)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。如圖 1所示,最優(yōu)稀疏子結(jié)構(gòu)以上一層(Last layer)的卷積特征圖為輸入,具有4個并行分支,由1×1,3×3,5×5的卷積濾波器(Conv)、池化器(Pool)組成。在分支上前置1×1的卷積器,用于降低輸入3×3,5×5卷積器的通道個數(shù),減少權(quán)值參數(shù);與之類似,在3×3最大池化器(MaxPool)后面放置1×1卷積器,最后通過輸出特征圖的合并操作(Filter Concat)傳遞到下一層,這樣構(gòu)成了一個inception模塊。
圖1 Inception模塊結(jié)構(gòu)
Inception深度神經(jīng)網(wǎng)絡(luò)以多個卷積層(Conv0 Conv1)、池化層(pool2)的線性排列開始,用于提取線、邊緣等低層的視覺特征。之后堆疊多個Inception模塊(A,B…G…),其分支結(jié)構(gòu)允許不同尺度不同層級特征的融合,并逐漸提取到抽象的中間層及高級別語義特征。同時,特征提取層均采用BatchNormal正則化及Relu激活函數(shù)。對最后一個特征提取層做全局平均池化(AvgPool)后,得到特征向量,通過全連接層(FC)輸出類別預(yù)測向量(logits)。該網(wǎng)絡(luò)獲得了ILSVRC 2014挑戰(zhàn)賽冠軍,是目前較為流行的深度網(wǎng)絡(luò)結(jié)構(gòu)。本文采用經(jīng)過128萬張ImageNet數(shù)據(jù)集預(yù)訓(xùn)練過的Inception V3網(wǎng)絡(luò)作為目標(biāo)檢測的特征提取器(見圖2)。
圖2 Inception V3卷積神經(jīng)網(wǎng)絡(luò)
深度卷積網(wǎng)絡(luò)(CNN)以卷積濾波器為核心部件,本節(jié)從信號時頻變換的角度研究單個卷積濾波器的工作原理,對探究深度神經(jīng)網(wǎng)絡(luò)平移、旋轉(zhuǎn)、縮放等不變量的生成具有重要意義。
圖3 卷積濾波器及其響應(yīng)圖解
圖4 高斯函數(shù)
圖3中fi,gi分別是指訓(xùn)練圖像和所期望得到的響應(yīng)輸出圖像,hi是卷積濾波器。gi由位于檢測目標(biāo)中心的峰值亮點構(gòu)成,而其它的地方均是較小的值。具體來說,可以定義gi是一個在目標(biāo)中心(xi,yi),半徑為σ如圖4所示的2維高斯函數(shù):
g(x,y)=(f?h)(x,y)=Γ-1(F(w,v)H(w,v))。
(1)
根據(jù)卷積定理(1),在空域做卷積等價于在傅里葉頻域做乘積,這是精確計算過濾器的基礎(chǔ)。其中:f是原圖像;h是濾波器;g是空域的響應(yīng)輸出圖像;Γ是傅里葉變換;首字母(F,H)代表各自的2維傅里葉變換。
要精確求解濾波器,首先要將公式(1)的H替換為其復(fù)共軛,
G(w,v)=F(w,v)H*(w,v)。
(2)
然后,根據(jù)公式(3)求解過濾器:
(3)
公式(3)是關(guān)于輸出響應(yīng)圖的傅氏變換和原圖的傅氏變換間的除法。從圖3過濾器h1,h2,h3的圖像中可以看出,它們并不是對眼睛進(jìn)行響應(yīng),而是對每張具體的訓(xùn)練圖片進(jìn)行響應(yīng)。要產(chǎn)生一個擬合全部訓(xùn)練圖片的并具有泛化能力的過濾器,需要根據(jù)公式(4)計算多個精確過濾器的平均。
(4)
(5)
從圖3的最后一行看出,均值化操作增強了這些訓(xùn)練圖片的共同特征,抑制了樣本的個體特征。每個精確的過濾器可以視做一個弱分類器,它在單個訓(xùn)練圖片上表現(xiàn)良好。如果這些弱分類器是無偏的,將它們相加,會得到一個方差為0的強分類器,其表現(xiàn)超過其它普通分類器。
由于傅里葉變換是線性操作,均值計算在時域和空域均能進(jìn)行。如果在空域內(nèi)進(jìn)行,濾波器可以在求平均前被剪裁,這樣濾波器可以針對訓(xùn)練圖片的不同大小進(jìn)行構(gòu)建。一般來講,對訓(xùn)練圖片進(jìn)行平移、縮放、旋轉(zhuǎn)等變換可以使過濾器適應(yīng)性及魯棒性更強。而選擇合適的濾波器,可以衰減圖像中的無用信號頻率,保留目標(biāo)對象的頻率。
本節(jié)所使用的卷積濾波器比深度神經(jīng)網(wǎng)絡(luò)中的卷積濾波器核要大,但是原理與深度網(wǎng)絡(luò)進(jìn)行多層的卷積濾波器類似。深度網(wǎng)絡(luò)通過在空域進(jìn)行連續(xù)多層的卷積,本質(zhì)上是對圖像信號在頻域進(jìn)行多步篩選和過濾,最終留下的就是目標(biāo)體的頻率,對應(yīng)在空域(見特征圖)上的亮點。因此,深度網(wǎng)絡(luò)本身已經(jīng)具備目標(biāo)檢測的能力,不需要額外附加一些結(jié)構(gòu)(如位置回歸子網(wǎng))來實現(xiàn)。
深度卷積網(wǎng)絡(luò)由眾多卷積濾波器組合而成,根據(jù)上節(jié)的闡述,中間層會產(chǎn)生許多深度表征g(x,y),分析深度表征對理解深度學(xué)習(xí)的機制很重要。在經(jīng)過ImageNet數(shù)據(jù)集預(yù)訓(xùn)練過后,卷積特征能夠描述很多物體,可以認(rèn)為是用大量的神經(jīng)元檢測到豐富的可視化模式。神經(jīng)網(wǎng)絡(luò)層對不同類型的特征進(jìn)行編碼,高層捕捉物體類別的語義概念,而低層對物體局部的各種區(qū)分性特征進(jìn)行編碼。但對于一個特定的目標(biāo)檢測任務(wù)來說,要得到那些能夠把目標(biāo)體從背景中區(qū)分出來的特征圖子集,需要丟掉那些同時對目標(biāo)區(qū)域和背景區(qū)域有較高響應(yīng)的特征圖,防止檢測器被背景區(qū)域干擾。CNN可以從圖像分類任務(wù)中學(xué)到這些特征,利用這些特征可以進(jìn)行目標(biāo)的檢測和定位。
圖5 相關(guān)特征圖
CNN所激活的特征圖是稀疏和局部化的,激活的區(qū)域和語義對象的區(qū)域高度相關(guān)。圖5顯示了一些對目標(biāo)區(qū)域使用最大值激活的特征圖。圖5(a)是輸入深度神經(jīng)網(wǎng)絡(luò)的集裝箱圖片,其中黃色框內(nèi)的鉛封是檢測目標(biāo)。圖5(b)深度神經(jīng)網(wǎng)絡(luò)中間某層的特征圖可視化,共有768個通道(特征圖),每個特征圖在藍(lán)色方框內(nèi)顯示,其中,編號為520(黃色框內(nèi))的特征圖檢測到目標(biāo)表征。圖5(c)是該特征圖的放大顯示,從中可以清楚地看到以紅色亮點表示的特征圖的最大值恰好對應(yīng)鉛封。另外,特征圖只有較少的區(qū)域具有非0值。這些非0值是局部化的,主要與圖像前景的目標(biāo)物體相關(guān)。如果對目標(biāo)物體進(jìn)行平移、轉(zhuǎn)動等變換,會引起特征圖發(fā)生變化,但是變化僅限于目標(biāo)體的范圍。由此可以說明特征圖捕獲了與該目標(biāo)體相關(guān)的可視化特征。
需要說明的是,滿足這種表征的相關(guān)性特征圖可能不止一個,而且只是以一定的概率出現(xiàn)。因此,需要組合這些特征,并做增強性訓(xùn)練,以提高檢測的準(zhǔn)確性。
對于一張給定的圖片,令gi代表所選擇的相關(guān)性特征圖,對每個特征圖,進(jìn)行全局平均池化操作,得
(6)
對于它們所檢測的目標(biāo)類c,輸入到分類層的值
(7)
得到
(8)
令
Pc(x,y)直接顯示了特征圖在(x,y)位置檢測為類c的顯著性值,這樣Pc就成為檢測類c的顯著性分布特征圖。
Inception網(wǎng)絡(luò)通常在經(jīng)過多個Inception模塊后,由全局池化(AvgPool)得到特征向量,并經(jīng)過全連接層(FC)輸出神經(jīng)激活值logits, 通過SoftMax函數(shù)預(yù)測不同類別的概率(見圖6),這種網(wǎng)絡(luò)結(jié)構(gòu)只能實現(xiàn)圖像分類。本文從中間的Inception模塊G選取合適的特征圖,經(jīng)過全局平均池化層(AvgPool)生成logits, 然后通過Sigmoid函數(shù)預(yù)測類別概率,如圖6右半部分。該方法能在所選特征圖上同時預(yù)測目標(biāo)類別和位置,實現(xiàn)目標(biāo)檢測。同時由于不使用全連接層FC,降低了過擬合的風(fēng)險。
激活值logits轉(zhuǎn)化為概率分布后通過最小化損失函數(shù)逼近類別標(biāo)簽labels,如果一個圖像樣本被預(yù)測為一個類,通常使用softmax交叉熵(Cross Entropy)函數(shù);但對于目標(biāo)檢測任務(wù),往往需要在一個圖像樣本中檢測出多個類別的物體,因此需要使用sigmoid交叉熵(Cross Entropy)函數(shù),計算與類標(biāo)簽labels的概率分布差異。
令x=logits為分類輸出的激活值向量,z為標(biāo)簽labels向量,則sigmoid交叉熵函數(shù)為:
(1-zi)(-log(1-sigmoid(xi)))=
(9)
從推導(dǎo)可見,sigmoid函數(shù)直接用于深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)容易造成梯度彌散問題,但是與交叉熵函數(shù)結(jié)合后,形式不僅會簡化,同時還抑制了梯度的消失。
圖6 目標(biāo)函數(shù)及網(wǎng)絡(luò)連接
對集裝箱的箱門和鉛封檢測任務(wù),提供包含箱門和鉛封的正樣本各50例,負(fù)樣本50例。訓(xùn)練時在保留檢測目標(biāo)的基礎(chǔ)上,對樣本進(jìn)行增廣處理。包括剪裁、平移、縮放、旋轉(zhuǎn)等變換,促使神經(jīng)網(wǎng)絡(luò)產(chǎn)生平移、旋轉(zhuǎn)、縮放不變性特征。訓(xùn)練過程中的目標(biāo)函數(shù)曲線見圖7,sigmoid交叉熵值平穩(wěn)下降至0.3,表明預(yù)測的概率分布同標(biāo)簽的分布逐步接近。
圖8中左圖是攝像頭拍攝的集裝箱圖片,右側(cè)是檢測箱門的顯著性分布特征圖。從分布圖來看,箱門的4根柱子均以最大值(紅點)呈現(xiàn),同時該類別的概率分值接近1,表明檢測到箱門。
圖9中左圖是攝像頭拍攝的集裝箱圖片,右側(cè)是檢測鉛封的顯著性分布特征圖。從分布圖來看,最大值(紅點)處恰好對應(yīng)鉛封的位置,同時該類別的概率分值接近1,表明檢測到鉛封。
圖7 sigmoid交叉熵的訓(xùn)練曲線
圖8 箱門檢測
在每個類別的顯著性分布特征圖上,使用Opencv的連通區(qū)域算法得到大于某個閾值的目標(biāo)區(qū)域,并計算包圍矩形及角點坐標(biāo),從而計算出目標(biāo)體的精確位置。
本文使用tensorflow的Object Detect API ,基于Inception網(wǎng)絡(luò)架構(gòu),與流行的深度神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法(R-FCN, Faster R-CNN, SSD )進(jìn)行比較。在Intel COREi7,8核心,32 G內(nèi)存的DELL工作站上運行,結(jié)果如表1所示。與上述三種方法相比,本文提出的使用顯著性分布特征圖進(jìn)行目標(biāo)檢測的方法,由于不使用box邊界框,不采用附加的網(wǎng)絡(luò)結(jié)構(gòu)及定位回歸訓(xùn)練,大幅減少了需要學(xué)習(xí)的變量參數(shù)。在訓(xùn)練樣本數(shù)較少的情況下,取得了較高的識別準(zhǔn)確率和速度。由于受到光照、拍攝角度等因素影響,仍然存在一定的錯誤率。隨著樣本數(shù)量不斷增加,可以增加對該問題的魯棒性,提高識別率。
圖9 鉛封檢測
從顯著性特征圖來看,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到了對目標(biāo)的檢測表征能力,這是基于深度神經(jīng)網(wǎng)絡(luò)固有的頻率選擇特性,并通過合理的結(jié)構(gòu)設(shè)置及訓(xùn)練方法進(jìn)行了激發(fā)和增強,因此本方法對其它場景及更多類別的檢測也適用。
本文提出一種基于深度卷積網(wǎng)絡(luò)的識別方法,能夠在少量樣本圖像的條件下,快速地檢測識別目標(biāo)對象。并通過實驗,對集裝箱箱門、鉛封等相關(guān)目標(biāo)進(jìn)行檢測,取得良好效果。實際工程應(yīng)用中,在該算法的基礎(chǔ)上,結(jié)合實際業(yè)務(wù)狀況等其他集裝箱信息進(jìn)行復(fù)合校驗,會大幅提高識別率。目前,實際應(yīng)用最終的識別率在97%左右。未來計劃在集裝箱自動化碼頭系統(tǒng)及智慧港口的應(yīng)用開發(fā)中,不斷完善和優(yōu)化其工程應(yīng)用,提高開發(fā)效率和部署靈活性。
表1 Inception網(wǎng)絡(luò)架構(gòu)與深度神經(jīng)網(wǎng)絡(luò)的
Note:①Methods;②Accuracy;③Average detection time;④Test of correlation featuremap