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