物體檢測是計算機(jī)視覺領(lǐng)域的熱門研究課題之一,其在智能交通、視頻監(jiān)控、醫(yī)療診斷、工業(yè)檢測和智能機(jī)器人等領(lǐng)域具有非常廣泛的應(yīng)用. 物體檢測的主要任務(wù)就是定位出感興趣物體在圖像中的位置,并指出其所屬類別名稱.
物體檢測算法主要包括傳統(tǒng)物體檢測算法和深度學(xué)習(xí)物體檢測算法兩大類. 傳統(tǒng)物體檢測算法采用“人工設(shè)計特征+分類器”的設(shè)計思路:首先提取物體的特征,然后將提取到的物體特征送入訓(xùn)練好的分類器進(jìn)行分類. 例如,Haar-like特征[1,2]+Adaboost分類器[3]、方向梯度直方圖(histogram of oriented gradient,HOG)[4]+支持向量機(jī)(support vector machine,SVM)分類器[5]、尺度不變特征變換(scale-invariant feature transform,SIFT)[6]+SVM分類器以及可變形的組件模型(deformable part model,DPM)[7]等. 卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)通過學(xué)習(xí)就能獲得顏色、輪廓等底層的特征和更高級、抽象的特征. 與傳統(tǒng)人工設(shè)計特征相比,基于CNN的物體檢測算法對局部遮擋、光照條件和尺度變化等影響因素具有更好的魯棒性和泛化能力,同時還能對多類物體進(jìn)行檢測.
近年來,基于CNN的倉儲物體檢測逐漸成為一個新興的研究方向,其屬于通用物體檢測的范疇,而基于CNN的通用物體檢測算法大體可以分為兩大類:基于區(qū)域提議的算法和基于無提議的算法.
基于區(qū)域提議的物體檢測算法采用兩個階段來解決物體檢測問題. 該類算法中最具有代表性的是 R-CNN[8]、Fast R-CNN[9]以及Faster R-CNN[10]等. R-CNN首先采用選擇性搜索(selective search,SS)[11]從圖像中提取出物體區(qū)域,然后對提取出的物體區(qū)域進(jìn)行分類. Fast R-CNN和Faster R-CNN主要通過共享計算和采用神經(jīng)網(wǎng)絡(luò)生成區(qū)域提議來提高物體檢測效率.
基于無提議的物體檢測算法僅采用單個階段來處理物體檢測任務(wù). 該類算法中最具有代表性的是YOLO(you only look once)[12]和SSD(single shot multibox detector)[13]. 此類算法去除區(qū)域提議階段,采用單個前饋卷積神經(jīng)網(wǎng)絡(luò)來直接預(yù)測物體類別和具體位置.
當(dāng)前,公開的物體檢測數(shù)據(jù)集大多都是基于自然場景. 例如,常用的物體檢測數(shù)據(jù)集ImageNet、Pascal VOC(pascal visual object classes)均是在自然場景中采集的圖像. 基于工業(yè)檢測應(yīng)用場景的公開數(shù)據(jù)集很少[14],而基于倉儲環(huán)境中的物體檢測公開數(shù)據(jù)集幾乎沒有. 因此,通過CNN來實(shí)現(xiàn)倉儲環(huán)境中的物體檢測,創(chuàng)建一個質(zhì)量高且規(guī)模大的倉儲物體數(shù)據(jù)集尤為重要.
本文通過攝像機(jī)采集真實(shí)倉儲環(huán)境中包含貨物、托盤和叉車的大量圖像進(jìn)行標(biāo)注,創(chuàng)建了一個倉儲物體數(shù)據(jù)集. 同時將基于CNN的DSOD(deeply supervised object detectors)[15]應(yīng)用于倉儲環(huán)境中,通過在自己創(chuàng)建的倉儲物體數(shù)據(jù)集上從零開始訓(xùn)練DSOD模型,實(shí)現(xiàn)了倉儲環(huán)境中的貨物、托盤、叉車檢測.
CNN是當(dāng)前深度學(xué)習(xí)算法實(shí)現(xiàn)的主要途徑和研究計算機(jī)視覺、圖像處理以及人工智能等方向的重要工具之一,其主要由輸入層、卷積層、池化層、全連接層和輸出層構(gòu)成,基本結(jié)構(gòu)如圖1所示.
卷積層是對輸入層輸出的特征做卷積運(yùn)算,再經(jīng)過激活函數(shù)得到特征圖,其作用是提取一個局部區(qū)域特征,每一個卷積核相當(dāng)于一個特征提取器,第l層卷積層中第j個特征圖的計算公式如下:
式中,klijijl是卷積核矩陣,bljjl是卷積層的偏置,Mj表示前一層輸出的特征圖集合,uljjl表示卷積層l層的第j個神經(jīng)元,xljjl是l層卷積層的第j個通道的輸出結(jié)果,*表示卷積運(yùn)算,對于l層某一特征圖uljjl,其對應(yīng)的每個輸入圖的卷積核大小可以是不同的,卷積核的大小一般為3×3或5×5. f(·)代表非線性激活函數(shù),常用的激活函數(shù)有:
Sigmoid(x)=11+e?x(x)=11+e-x. (2)
Tanh(x)=ex?e?xex+e?xΤanh(x)=ex-e-xex+e-x. (3)
池化層是通過對不同位置的局部特征區(qū)域進(jìn)行特征統(tǒng)計,實(shí)現(xiàn)特征合并和特征降維操作,以有效地縮小矩陣尺寸,從而減少參數(shù)數(shù)量,并且經(jīng)過池化后的特征具有平移不變性,這對圖像分類至關(guān)重要. 常用的池化操作有:最大池化、平均池化和隨機(jī)池化,其原理如圖2所示. 最大池化是選取圖像區(qū)域的最大值作為該區(qū)域池化后的值;平均池化是計算圖像區(qū)域的平均值作為該區(qū)域池化后的值;隨機(jī)池化是對特征圖中的元素按照其概率值大小隨機(jī)選擇,即元素值大的被選中的概率也大.
在整個CNN中,全連接層類似于分類器. 卷積層和池化層的作用是將原始數(shù)據(jù)映射到隱含層特征空間中,而全連接層的作用是將CNN學(xué)習(xí)到的特征映射到樣本的標(biāo)記空間中,同時將卷積輸出的2維特征圖轉(zhuǎn)化為一個1維向量. 最終,網(wǎng)絡(luò)將這些特征輸入到Softmax分類器中,并通過最小化損失函數(shù)來進(jìn)行全局訓(xùn)練.
分類是機(jī)器學(xué)習(xí)和人工智能領(lǐng)域的基本問題之一,例如,字符識別、圖像識別、語音識別等都可以轉(zhuǎn)化為分類問題. 邏輯回歸(logistic regression,LR)是機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典的二分類器,而Softmax回歸是LR在多分類上的推廣,其將分類問題轉(zhuǎn)化成概率問題,即首先求解統(tǒng)計所有可能的概率,然后概率最大的就被認(rèn)為是該類別.
假設(shè)有m個訓(xùn)練樣本{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},對于Softmax回歸,它的輸入特征為:x(i)∈Rn+1,類標(biāo)記為:y(i)∈{0,1,...,k}. 假設(shè)函數(shù)是對于每一個樣本估計其所屬的類別的概率p(y=j|x),其具體表達(dá)式如下:
式中,θi(i=1,2,...,k)∈Rn+1表示Softmax分類器的參數(shù),1∑j=1keθTjx(i)1∑j=1keθjΤx(i)表示歸一化因子,其使所有類別概率和為1. 對于每一個樣本估計其所屬類別的概率為:
p(y(i)=j|x(i);θ)=eθTjx(i)∑l=1keθTlx(i)θ)=eθjΤx(i)∑l=1keθlΤx(i). (6)
Softmax分類器的訓(xùn)練過程就是不斷地調(diào)整參數(shù),優(yōu)化損失函數(shù),使損失函數(shù)達(dá)到最小值的過程.
基于CNN的DSOD框架類似于SSD多尺度無提議框架. 它的網(wǎng)絡(luò)結(jié)構(gòu)主要由用于特征提取的主干子網(wǎng)(backbone sub-network)和用于在多尺度響應(yīng)圖上進(jìn)行預(yù)測的前端子網(wǎng)(front-end sub-network)兩個部分構(gòu)成. 主干子網(wǎng)是密集連接卷積網(wǎng)絡(luò)(densely connected convolutional networks,DenseNet)[16]16]結(jié)構(gòu)的變體,它由主干塊(stem block),四個密集塊(dense blocks),兩個過渡層(transition layers)和兩個無池化層的過渡層(transition w/o pooling layers)組成. 前端子網(wǎng)(即DSOD預(yù)測層)融合了多尺度預(yù)測密集連接結(jié)構(gòu).
DSOD最大的亮點(diǎn)在于其可以在相應(yīng)的數(shù)據(jù)集上從零開始訓(xùn)練網(wǎng)絡(luò),而不需要ImageNet預(yù)訓(xùn)練模型. 這有效地避免了從預(yù)訓(xùn)練模型領(lǐng)域到物體檢測領(lǐng)域可能存在巨大差異的困難,同時DSOD訓(xùn)練的模型比較小,在內(nèi)存開銷上也占有相對優(yōu)勢. DSOD的設(shè)計原則如下:
(1)免提議. R-CNN和Fast R-CNN需要額外的區(qū)域提議提取算法,如:選擇性搜索(SS);Faster R-CNN 需要區(qū)域提議網(wǎng)絡(luò)(region propose network,RPN)來生成相對較少的區(qū)域提議;YOLO和SSD是不需要提議的算法,由于DSOD框架與SSD框架類似,故DSOD不需要區(qū)域提議.
(2)深度監(jiān)督. 深度監(jiān)督的核心思想是通過綜合的目標(biāo)函數(shù)來對淺層的隱含層進(jìn)行直接監(jiān)督,而不僅僅是輸出層,附加在隱含層中的目標(biāo)函數(shù)能有效緩解梯度消失問題. 免提議檢測框架包含分類損失和位置損失,增加復(fù)雜的側(cè)輸出層是一個比較好的解決方案,以在每個隱藏層為檢測任務(wù)引入附加目標(biāo)函數(shù). 根據(jù)文獻(xiàn)[16]所述,使用DenseNet的密集層級連接,其中密集塊是塊中所有先前的層都連接到當(dāng)前層. 這樣,目標(biāo)函數(shù)可以通過跳躍連接直接監(jiān)督DenseNet中的淺層. 無池化層的過渡層,使得在增加密集塊的數(shù)量時不會降低最終的特征圖分辨率.
(3)主干塊. 主干塊由3個3×3的卷積層連接1個2×2的最大池化層組成,其目的是減少信息損失.
(4)密集預(yù)測結(jié)構(gòu). DSOD與SSD的預(yù)測結(jié)構(gòu)略有不同,在SSD的簡單預(yù)測結(jié)構(gòu)中,每個后續(xù)的尺度直接由相鄰的前一尺度轉(zhuǎn)換得到,而DSOD一方面會綜合每個尺度獲取的多尺度信息. 另一方面DSOD中的每個尺度,一半的特征圖是通過之前尺度連接卷積層學(xué)習(xí)得到,剩余的一半由相鄰的高分辨率的特征圖直接下采樣得到. 每個尺度只學(xué)習(xí)一半新的特征圖,并復(fù)用前一個特征圖剩余的一半. 因此,DSOD的密集預(yù)測結(jié)構(gòu)比SSD的簡單預(yù)測結(jié)構(gòu)產(chǎn)生的參數(shù)少.
DSOD的損失函數(shù)是位置損失(localization loss)和置信度損失(confidence loss)的加權(quán)和,其表達(dá)式為
L(x,c,l,g)=1N(Lconf(x,c)+αLloc(x,l,g))L(x,c,l,g)=1Ν(Lconf(x,c)+αLloc(x,l,g)). (7)
式中,N是匹配的默認(rèn)框數(shù)目,l和g分別是預(yù)測框和真值框,c為多類置信度,α為權(quán)重項(xiàng). 位置損失如文獻(xiàn)[9]所述,是l和g之間的smoothL1損失,其表達(dá)式如式(8)所示. 類似于Faster R-CNN,DSOD回歸得到邊界框的中心及其寬度和高度的偏移.
位置損失:
Lloc(x,l,g)=∑i∈PosN ∑m∈{cx,cy,w,h}∑i∈ΡosΝ∑m∈{cx,cy,w,h}xkijsmoothL1(lmi?g?mj)xijksmoothL1(lim-g^jm). (8)
式中,smoothL1(x)可以表示為:
置信度損失是多類置信度c下的Softmax損失,并且通過交叉驗(yàn)證將權(quán)重項(xiàng)α設(shè)置為1,其表達(dá)式如式(10)所示.
置信度損失:
Lconf(x,c)=-∑i∈PosN∑i∈ΡosΝxpijlg(c?pi)?xijplg(c^ip)-∑i∈Neg∑i∈Νeglg(c?c^0ii0). (10)
式中,c?pi=c^ip=exp(cpi)∑pexp(cpi).exp(cip)∑pexp(cip).
本文實(shí)驗(yàn)所需的數(shù)據(jù)均是在真實(shí)倉儲環(huán)境中通過攝像機(jī)采集獲得的圖像,其分辨率為1 920×1 080. 為了減少模型的訓(xùn)練時間,以使網(wǎng)絡(luò)更快地收斂,我們將圖像的分辨率縮小了3倍,所以實(shí)驗(yàn)數(shù)據(jù)的最終分辨率為640×360. 本文創(chuàng)建的倉儲物體數(shù)據(jù)集共有10 450張圖像,這些圖像中包含貨物、托盤和叉車 3個物體類別,其中包含貨物和托盤的圖像共有7 893張,包含叉車的圖像有2 557張.
圖像標(biāo)注采用圖像標(biāo)注工具LabelImg,通過該工具可以直接將倉儲物體用矩形框的形式標(biāo)注出來,并且還能將標(biāo)注的矩形框生成為可擴(kuò)展標(biāo)記語言(extensible markup language,XML)文本文件. XML文件記錄了標(biāo)注矩形框的最小/最大坐標(biāo)、寬、高以及物體類別等信息,以方便訓(xùn)練模型時直接讀取圖像信息. 倉儲物體標(biāo)注的實(shí)例圖如圖3所示.
本文算法實(shí)驗(yàn)所需的軟硬件配置如表1所示,并且使用了深度學(xué)習(xí)中的Caffe框架.
表1 實(shí)驗(yàn)配置 導(dǎo)出到EXCEL
Table 1 Experimental configuration
Operating System |
CPU | Memory | GPU | CUDA |
Ubuntu16.04 |
Intel i7-7700k | 16 GB | NVIDIA TITAN X | CUDA8.0 |
在訓(xùn)練模型之前,我們首先按4∶1的比例將自己創(chuàng)建的倉儲物體數(shù)據(jù)集隨機(jī)分為訓(xùn)練驗(yàn)證集和測試集,然后將訓(xùn)練驗(yàn)證集也按4∶1的比例隨機(jī)分為訓(xùn)練集和驗(yàn)證集. 其中,訓(xùn)練集有6 688張,測試集有 2 090 張,驗(yàn)證集有1 672張.
采用CNN訓(xùn)練模型時,設(shè)置學(xué)習(xí)率的大小尤為重要. 如果學(xué)習(xí)率設(shè)置過大,模型收斂速度太快,但是訓(xùn)練誤差會出現(xiàn)震蕩,無法收斂到全局最優(yōu)值;反之,如果學(xué)習(xí)率設(shè)置得過小,網(wǎng)絡(luò)收斂速度就會很慢,需要花費(fèi)大量的時間才能達(dá)到最優(yōu).
本文中,我們將網(wǎng)絡(luò)訓(xùn)練的迭代次數(shù)設(shè)置為60 000次,根據(jù)動態(tài)調(diào)整學(xué)習(xí)率的策略,我們將學(xué)習(xí)率具體設(shè)置為:(1)初始迭代階段(0~20 000)設(shè)為0.1;中間迭代階段(20 001~40 000)設(shè)為0.01;(3)最后優(yōu)化階段(40 001~60 000)設(shè)為0.001. 同時,我們采用動量為0.9,權(quán)重衰減為0.000 5以及批量尺度為5的隨機(jī)梯度下降(stochastic gradient descent,SGD)在自己創(chuàng)建的倉儲物體數(shù)據(jù)集上從零開始訓(xùn)練DSOD模型. 為了能更好地觀察訓(xùn)練過程中損失(Loss)隨迭代次數(shù)(Iterations)的變化情況,我們畫出了 0~60 000次的Loss-iterations 曲線圖,如圖4所示.
我們從圖4可以觀察到,Loss曲線比較平滑,幾乎沒有出現(xiàn)震蕩現(xiàn)象,說明我們設(shè)置的學(xué)習(xí)率比較適當(dāng),使模型達(dá)到了最優(yōu)收斂的狀態(tài).
在物體檢測領(lǐng)域中,平均準(zhǔn)確率均值(mean Average Precision,mAP)是評價物體檢測算法優(yōu)劣的主要評價指標(biāo). 因此,我們同樣采用mAP來評價本文倉儲物體檢測算法的優(yōu)劣. 在相同訓(xùn)練集和測試集的情況下,本文算法與Faster R-CNN、SSD進(jìn)行了比較,對比實(shí)驗(yàn)結(jié)果如表2所示.
表2 不同算法對比實(shí)驗(yàn)結(jié)果 導(dǎo)出到EXCEL
Table 2 Comparison of experimental results with different algorithms
算法 |
測試圖像數(shù)量/張 | 模型大小/MB | mAP/% |
Faster R-CNN |
2 090 | 235.8 | 93.77 |
SSD |
2 090 | 94.7 | 92.37 |
本文算法 |
2 090 | 51.3 | 93.81 |
由表2可知,本文算法在自己創(chuàng)建的倉儲物體數(shù)據(jù)集上的mAP達(dá)到了93.81%,比Faster R-CNN提高了0.04%,比SSD提高了1.44%. 并且模型大小僅有51.3 MB,比Faster R-CNN減少了184.5 MB,比SSD減少了43.4 MB. 因此,本文算法能較好地滿足倉儲物體檢測的準(zhǔn)確性要求,并且模型占用內(nèi)存小,適用于移動、嵌入式電子設(shè)備等低端設(shè)備.
我們給出部分倉儲物體測試圖像的檢測效果圖,如圖5所示.
由圖5(a)、圖5(b)可知,對于不同顏色的貨物,本文算法均能較好地檢測出來. 由圖5(c)可知,當(dāng)倉儲環(huán)境中的光照條件發(fā)生變化時,本文算法也能較好地檢測出貨物、托盤. 由圖5(a)、圖5(d)可知,無論是尺寸大的貨物、托盤,還是尺寸小的貨物、托盤,本文算法同樣能較好地檢測出來. 由圖5(f)可知,對于局部遮擋的貨物,本文算法依然能較好地檢測出來. 因此,無論是光照條件、物體尺寸以及顏色等變化,還是存在局部遮擋,本文算法都能較好地檢測出倉儲物體,獲得了較為滿意的檢測效果.
基于倉儲環(huán)境中的物體檢測應(yīng)用場景,我們創(chuàng)建了一個倉儲物體數(shù)據(jù)集,將基于CNN的DSOD應(yīng)用于倉儲環(huán)境中,通過在自己創(chuàng)建的倉儲物體數(shù)據(jù)集上從零開始訓(xùn)練DSOD模型,實(shí)現(xiàn)了倉儲環(huán)境中的物體檢測. 該算法的mAP比Faster R-CNN、SSD高,模型大小比Faster R-CNN、SSD小,并且對倉儲物體顏色、尺寸大小以及光照條件等變化具有較好的魯棒性,獲得了較為滿意的檢測效果. 但本文算法對于尺寸較小的倉儲物體仍然會出現(xiàn)漏檢問題. 因此,下一步打算對DSOD的網(wǎng)絡(luò)結(jié)構(gòu)作相應(yīng)的改進(jìn),并擴(kuò)充倉儲物體數(shù)據(jù)集,以進(jìn)一步提升倉儲物體檢測準(zhǔn)確率.
權(quán)所有©:上海陽合儲運(yùn)
專業(yè)承接上海倉庫租賃、上海倉儲配送物流、上海電商倉儲企業(yè)服務(wù)與微笑同在"的先進(jìn)理念不斷發(fā)展壯大。