朱應(yīng)莉
(西安交通工程學(xué)院 交通運(yùn)輸學(xué)院,西安710000)
圖像目標(biāo)識(shí)別屬于一種圖像處理技術(shù),通過實(shí)現(xiàn)對(duì)圖像中目標(biāo)的分類和辨識(shí),從而可進(jìn)行對(duì)目標(biāo)的選定和定位。隨著深度學(xué)習(xí)算法在目標(biāo)檢測(cè)識(shí)別中的應(yīng)用,人臉面部識(shí)別、自動(dòng)駕駛、工業(yè)機(jī)器人等領(lǐng)域得到快速發(fā)展。傳統(tǒng)目標(biāo)圖像識(shí)別技術(shù)多采用“人工設(shè)計(jì)特征+分類器”的運(yùn)行模式,通過對(duì)目標(biāo)局部特征的提取,同時(shí)利用向量機(jī)分類實(shí)現(xiàn)對(duì)目標(biāo)的分類識(shí)別[1-2]。人為設(shè)計(jì)的目標(biāo)特征易受到外界光照、角度等因素的影響,從而降低了識(shí)別的準(zhǔn)確性和魯棒性。而深度學(xué)習(xí)技術(shù)可對(duì)目標(biāo)特征進(jìn)行訓(xùn)練和自動(dòng)提取,從而有利于提高檢測(cè)識(shí)別模型的魯棒性和自適應(yīng)性。深度卷積神經(jīng)網(wǎng)絡(luò)(deep convolutional neural network,DCNN)主要是利用有監(jiān)督的大規(guī)模數(shù)據(jù)訓(xùn)練對(duì)檢測(cè)識(shí)別性能進(jìn)行提升,通過對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行大批量的數(shù)據(jù)標(biāo)注,通過大量的訓(xùn)練使得神經(jīng)網(wǎng)絡(luò)參數(shù)收斂至最優(yōu)值。物流倉庫中的貨柜識(shí)別是實(shí)現(xiàn)物流貨物無人自動(dòng)分流和裝配需要解決的關(guān)鍵性技術(shù)之一[3-6]。本文針對(duì)貨柜識(shí)別問題,將DenseNet 卷積神經(jīng)網(wǎng)絡(luò)與單次多箱檢測(cè)(single shot multiBox detector,SSD)網(wǎng)絡(luò)相結(jié)合,將SSD 網(wǎng)絡(luò)中的基礎(chǔ)網(wǎng)絡(luò)替換為DenseNet 中的Block 模塊,從而利用深度卷積神經(jīng)網(wǎng)絡(luò)的自學(xué)習(xí)特性,提升貨柜識(shí)別的準(zhǔn)確率和識(shí)別速率。
卷積神經(jīng)網(wǎng)絡(luò)屬于一種人工神經(jīng)網(wǎng)絡(luò),其將卷積運(yùn)算應(yīng)用于網(wǎng)絡(luò)架構(gòu)中能夠很好地適應(yīng)圖像視覺運(yùn)算。卷積神經(jīng)網(wǎng)絡(luò)的基本框架主要包括4 個(gè)部分:卷積運(yùn)算、激活函數(shù)、池化和退化操作[7]。
本文中的卷積運(yùn)算針對(duì)的對(duì)象主要是二維圖像,將圖像的數(shù)據(jù)矩陣作為輸入矩陣,將其與二維卷積核進(jìn)行卷積運(yùn)算,卷積運(yùn)算矩陣可表示為
式中:S(i,j)表示卷積運(yùn)算結(jié)果;I表示圖像矩陣;K表示卷積核矩陣;i和j分別表示圖像數(shù)據(jù)的橫縱坐標(biāo);m和n分別表示卷積核的橫縱坐標(biāo)。
圖像進(jìn)行卷積運(yùn)算后輸出的卷積結(jié)果,其特征圖尺寸運(yùn)算公式為
式中:W表示特征圖像的寬度和高度尺寸值;F表示卷積核的維度值;P表示原始圖像的四周需要補(bǔ)零的行數(shù)目;S表示卷積核進(jìn)行卷積運(yùn)算時(shí)移動(dòng)的單次步幅。
二維卷積運(yùn)算的流程示意圖如圖1所示,首先在圖像的左上角取與卷積核相同大小的子域,然后將子域逐步滑動(dòng)至圖像右下角,在滑動(dòng)過程中將子域中的數(shù)值與卷積核相對(duì)應(yīng)的元素進(jìn)行乘積運(yùn)算,并將運(yùn)算結(jié)果疊加至輸出結(jié)果相對(duì)應(yīng)的元素[8]。
圖1 二維卷積運(yùn)算流程示意圖Fig.1 Schematic diagram of two-dimensional convolution operation flow
激活函數(shù)以卷積結(jié)果s作為輸入量,主要是利用其非線性特性,提高卷積網(wǎng)絡(luò)的非線性表征特性,常用的激活函數(shù)包括Sigmoid 函數(shù)、Tanh 函數(shù)、Relu函數(shù)等。其中,Sigmoid 函數(shù)將輸入映射到[0,1]之間,并保持輸出結(jié)果的導(dǎo)數(shù)不大于0.25,但對(duì)于多層神經(jīng)網(wǎng)絡(luò),隨著網(wǎng)絡(luò)層的增加其梯度值會(huì)變小,甚至接近零,使得神經(jīng)網(wǎng)絡(luò)無法進(jìn)行反向傳播,抑制網(wǎng)絡(luò)無法收斂至最優(yōu)參數(shù)。Tanh 函數(shù)為雙曲正切函數(shù),其輸出的平均值為零,與Sigmoid 函數(shù)相比具有一定的優(yōu)勢(shì),但當(dāng)輸入函數(shù)的絕對(duì)值偏大時(shí),其同樣會(huì)出現(xiàn)梯度值偏小的問題,不利于網(wǎng)絡(luò)的反向傳播。Relu 函數(shù)具有結(jié)構(gòu)簡單、收斂速度快的特點(diǎn),近年得到廣泛關(guān)注和應(yīng)用,本文選用Relu 函數(shù)作為激活函數(shù)。
池化操作的主要目的是減小下一層網(wǎng)絡(luò)的輸入量尺寸,從而降低運(yùn)算量和參數(shù)數(shù)目,從而提升網(wǎng)絡(luò)的適應(yīng)性和魯棒性。常用的池化操作包括平均值池化和最大值池化,近年研究表明,相比于平均值池化操作,最大值池化操作可有利于提升網(wǎng)絡(luò)魯棒性。本文選用最大值池化操作,最大值池化操作示意圖如圖2所示。
圖2 最大值池化操作示意圖Fig.2 Schematic diagram of maximum pooling operation
退化操作主要是指在進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,按照一定的概率對(duì)隱含層中的部分節(jié)點(diǎn)進(jìn)行隨機(jī)剔除,退化操作過程如圖3所示。由于在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中部分神經(jīng)元不參與計(jì)算,按照一定的概率將其淘汰,本文中的隱含層節(jié)點(diǎn)被淘汰的概率設(shè)定為0.2,退化操作的隨機(jī)淘汰可以使得每次進(jìn)行訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型互不相同,經(jīng)過大批量的樣本訓(xùn)練,可將最終訓(xùn)練出的模型看作是卷積神經(jīng)網(wǎng)絡(luò)的平均模型。通過退化操作,可以防止卷積神經(jīng)網(wǎng)絡(luò)發(fā)生過擬合,使得神經(jīng)網(wǎng)絡(luò)具備更高的泛化能力,尤其適應(yīng)于深層卷積神經(jīng)網(wǎng)絡(luò)。
圖3 退化操作過程Fig.3 Degraded operation process
DenseNet 網(wǎng)絡(luò)屬于常用卷積神經(jīng)網(wǎng)絡(luò)之一[9],其以Block 模塊為核心,相比于其它卷積神經(jīng)網(wǎng)絡(luò),具有更強(qiáng)的梯度信息傳播能力。Block 模塊的特點(diǎn)是網(wǎng)絡(luò)層之間采用跳躍式的關(guān)聯(lián)方式,每層網(wǎng)絡(luò)的卷積結(jié)果不僅僅輸入值下一層,同時(shí)會(huì)與下面的每層均建立輸入關(guān)系。利用這種信息傳播結(jié)構(gòu)可很好地提高網(wǎng)絡(luò)的梯度信息傳播強(qiáng)度,可使得神經(jīng)網(wǎng)絡(luò)具有更快的收斂速度和更多的網(wǎng)絡(luò)層數(shù),同時(shí)有利于信息的傳遞,降低信息的丟失率,Block 模塊信息傳播連接圖如圖4所示。圖中實(shí)線方塊代表Block模塊的輸入,虛線方塊表示上一層卷積運(yùn)算獲得的特征圖。由此可知,第l層獲得的特征圖為前面所有特征圖關(guān)聯(lián)之后的卷積結(jié)果,第l層特征圖表達(dá)式為
圖4 Block 模塊信息傳播連接圖Fig.4 Block module information dissemination connection diagram
式中:⊕代表特征圖之間的關(guān)聯(lián)運(yùn)算符號(hào)。
目標(biāo)檢測(cè)方法可主要分為兩大類,一類為基于分類框架的目標(biāo)檢測(cè)方法,另一種為基于回歸框架的目標(biāo)檢測(cè)方法。其中,SSD 屬于一種回歸框架的目標(biāo)檢測(cè)方法,其將VGG16 卷積神經(jīng)網(wǎng)絡(luò)作為主體結(jié)構(gòu),并將其中的兩個(gè)全連接層改為了卷積層,同時(shí)增加了8 個(gè)卷積層。本文將原SSD 網(wǎng)絡(luò)中的Conv10_2層及其池化層的特征圖去除,并將DenseNet 網(wǎng)絡(luò)融入SSD 網(wǎng)絡(luò)中,將VGG16 之后的全連接層去除,改為DenseNet 網(wǎng)絡(luò)中的Block1、Block2、Block3 和Block4模塊,基于DenseNet 與SSD 網(wǎng)絡(luò)的改進(jìn)目標(biāo)檢測(cè)算法如圖5所示[10-11]。
圖5 基于DenseNet 與SSD 網(wǎng)絡(luò)的改進(jìn)目標(biāo)檢測(cè)算法Fig.5 Improved target detection algorithm based on densenet and SSD network
添加的4 個(gè)Block 模塊參數(shù)如表1所示。相比于Overfeat、YOLO 等算法采用單一尺度的特征圖,4個(gè)Block 模塊可以獲得4 種不同尺度的特征圖,從而對(duì)目標(biāo)物體的邊界位置和置信度進(jìn)行評(píng)價(jià)。利用多種尺度的特征圖進(jìn)行目標(biāo)檢測(cè)可提升檢測(cè)過程中的尺度不變性,從而不再需要要求輸入圖片具備不同的尺度大小。
表1 4 個(gè)Block 模塊參數(shù)Tab.1 Parameters of four block modules
在進(jìn)行目標(biāo)函數(shù)訓(xùn)練時(shí),選用的訓(xùn)練目標(biāo)損失函數(shù)為
式中:N表示邊界框的數(shù)目;Lconf表示Smooth 位置損失函數(shù);Lloc表示Softmax 置信度損失函數(shù);α 表示加權(quán)系數(shù);x表示前向特征圖;c表示輸入的通道數(shù)目;l表示卷積的層數(shù)。
為驗(yàn)證本文改進(jìn)目標(biāo)識(shí)別算法的有效性,選取5000 張物流倉庫的貨柜圖片作為測(cè)試對(duì)象。利用labelImg 標(biāo)注軟件對(duì)圖片中的檢測(cè)目標(biāo)進(jìn)行標(biāo)記,并將標(biāo)注的目標(biāo)貨柜轉(zhuǎn)換為可擴(kuò)展標(biāo)記語言XML文件。完成所有圖片標(biāo)注后,將圖片集隨機(jī)平均分為2 組,一組為訓(xùn)練集合,另一組為測(cè)試集合。
在進(jìn)行網(wǎng)絡(luò)模型訓(xùn)練和測(cè)試前,對(duì)圖像進(jìn)行數(shù)據(jù)預(yù)處理操作,主要包括數(shù)據(jù)集合的隨機(jī)化和均值化處理。由于神經(jīng)網(wǎng)絡(luò)采用隨機(jī)梯度下降法對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行更新,對(duì)圖像進(jìn)行隨機(jī)化處理有利于梯度進(jìn)行隨機(jī)性下降,以加快網(wǎng)絡(luò)收斂速度,降低訓(xùn)練消耗的時(shí)間。均值化處理主要是指統(tǒng)計(jì)訓(xùn)練集圖像數(shù)據(jù)的平均值,然后將訓(xùn)練集的圖像減去均值后再輸入至神經(jīng)網(wǎng)絡(luò),同樣有利于提升訓(xùn)練速度。
在進(jìn)行神經(jīng)網(wǎng)絡(luò)參數(shù)訓(xùn)練的過程中,學(xué)習(xí)率對(duì)模型訓(xùn)練影響非常關(guān)鍵。若學(xué)習(xí)率設(shè)定過大,訓(xùn)練的速度會(huì)加快,但容易發(fā)生超調(diào)振蕩,不利于訓(xùn)練結(jié)果收斂至最優(yōu)值。若學(xué)習(xí)率設(shè)定過小,導(dǎo)致訓(xùn)練時(shí)間過長,同樣不利于訓(xùn)練結(jié)果收斂至最優(yōu)值。本文對(duì)學(xué)習(xí)率采用動(dòng)態(tài)調(diào)整的控制策略,在訓(xùn)練初期采用較大的學(xué)習(xí)率,從而加快網(wǎng)絡(luò)的初始訓(xùn)練速度,在訓(xùn)練中期逐步降低學(xué)習(xí)率,直至網(wǎng)絡(luò)參數(shù)接近最優(yōu)值,同時(shí)也將學(xué)習(xí)率降至最小值。具體可將學(xué)習(xí)率設(shè)置為3 個(gè)階段:①初始段(即迭代次數(shù)在1萬次內(nèi)),取學(xué)習(xí)率值為0.01;②中間段(即迭代次數(shù)在1 萬~3 萬次之間),取學(xué)習(xí)率值為0.001;③結(jié)束段(即迭代次數(shù)在3 萬~5 萬次之間),取學(xué)習(xí)率值為0.0001。
本文提出的改進(jìn)型深度卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程如圖6所示,橫坐標(biāo)表示迭代次數(shù),左側(cè)的縱坐標(biāo)表示訓(xùn)練過程中發(fā)生的對(duì)數(shù)損失值,右側(cè)縱坐標(biāo)表示訓(xùn)練過程中檢測(cè)的平均準(zhǔn)確率(mean average precision,MAP)。由訓(xùn)練過程圖可以看出,本文訓(xùn)練模型的平均準(zhǔn)確率最終收斂至71.5%左右。為了對(duì)比不同算法的目標(biāo)識(shí)別準(zhǔn)確率,以相同條件測(cè)試YOLO 和SSD 算法,平均識(shí)別率統(tǒng)計(jì)結(jié)果如表2所示。
圖6 改進(jìn)型深度卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程Fig.6 Training process of improved deep convolution neural network
表2 三種算法平均識(shí)別率統(tǒng)計(jì)結(jié)果Tab.2 Statistical results of average recognition rate ofthree algorithms
由三種算法的對(duì)比數(shù)據(jù)可知,通過DenseNet 網(wǎng)絡(luò)與SSD 網(wǎng)絡(luò)的結(jié)合,相比于其它兩種算法,本文改進(jìn)型算法的目標(biāo)識(shí)別準(zhǔn)確率具有明顯的提升,且能夠具備更快的測(cè)試幀頻,驗(yàn)證了該改進(jìn)算法具有更快的運(yùn)算效率和準(zhǔn)確性。
本文將深度卷積神經(jīng)網(wǎng)絡(luò)與目標(biāo)檢測(cè)算法相結(jié)合,提出了一種基于深度學(xué)習(xí)的改進(jìn)型目標(biāo)檢測(cè)方法,將其應(yīng)用于物流貨柜的自動(dòng)檢測(cè)識(shí)別。利用采集的貨柜圖像對(duì)模型進(jìn)行訓(xùn)練,與YOLO 和SSD算法進(jìn)行檢測(cè)準(zhǔn)確率和速率對(duì)比,實(shí)驗(yàn)結(jié)果表明,相比起另外兩種算法,本文改進(jìn)算法的平均檢測(cè)準(zhǔn)確率和檢測(cè)速率均得到明顯提升,驗(yàn)證了該改進(jìn)算法的有效性。