李康康,于振中,,范曉東,宋思遠(yuǎn)
(1.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122; 2.哈工大機(jī)器人國際創(chuàng)新研究院 智能裝備研究所,安徽 合肥 230601)
在對無序生活用品的分揀歸類或生活垃圾的分揀歸類中,因其復(fù)雜的種類、堆疊的混亂狀態(tài),傳統(tǒng)的物體分類算法較難勝任。結(jié)合深度學(xué)習(xí)對待抓取的物體進(jìn)行目標(biāo)物體檢測,能夠有效解決混亂狀態(tài)下的物體分類分揀問題。
目標(biāo)檢測技術(shù)在計算機(jī)視覺領(lǐng)域是一個非常重要的研究方向[1,2]。早期傳統(tǒng)目標(biāo)檢測是利用SIFT[3]、HOG[4]、Haar[5]等手工設(shè)計特征的方法結(jié)合SVM、adaboost等一些分類器。由于目標(biāo)檢測受到復(fù)雜環(huán)境、外形、大小、堆疊狀態(tài)及外部光照變化的影響,存在提取目標(biāo)特征準(zhǔn)確性、穩(wěn)定性較差的問題,導(dǎo)致所提取的目標(biāo)特征泛化能力弱,魯棒性較差。通常需要根據(jù)每一個特定物體的形狀結(jié)構(gòu),依靠先驗知識提出相應(yīng)的算法,在目標(biāo)檢測精度和穩(wěn)定性上堪憂。結(jié)合深度學(xué)習(xí)的目標(biāo)檢測方法有很大的優(yōu)勢,通過卷積網(wǎng)絡(luò)計算自主學(xué)習(xí)不同層級的特征更加豐富,學(xué)習(xí)到特征的表征能力更強(qiáng)[6]?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法主要有:R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]、R-FCN[10]、YOLO[11]、SSD[12]等。其中,SSD算法相較于其它算法從不同尺度特征圖上進(jìn)行預(yù)測,根據(jù)不同尺度特征圖其自身所對應(yīng)感受野的大小檢測不同尺度的物體,有助于提高了目標(biāo)檢測的精度。由于生活用品分類分揀中存在物品種類多,結(jié)構(gòu)大小差別大。因此,通過改進(jìn)SSD算法,基于回歸思想搭建深度神經(jīng)網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測,提高目標(biāo)檢測的準(zhǔn)確率。
SSD算法模型是end-to-end的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。在網(wǎng)絡(luò)結(jié)構(gòu)上,原始SSD算法模型主要由基礎(chǔ)網(wǎng)絡(luò)(VGG)、附加特征提取網(wǎng)絡(luò)、原始默認(rèn)框生成部分、卷積預(yù)測部分組成。如圖1所示,基礎(chǔ)網(wǎng)絡(luò)基于VGG16構(gòu)建,并對其進(jìn)行了統(tǒng)一調(diào)整,保留前面的卷積層,將后面的全連接層改換成卷積網(wǎng)絡(luò)層。附加網(wǎng)絡(luò)層如圖中Extra Feature layer所示,添加4個不同尺度卷積網(wǎng)絡(luò)層。卷積預(yù)測部分為所示Detetction部分,采用回歸的思想進(jìn)行預(yù)測。
圖1 SSD算法模型
原始SSD算法的基礎(chǔ)網(wǎng)絡(luò)VGG16和附加特征提取網(wǎng)絡(luò)是直接利用卷積層之間級聯(lián)方式,前一卷積層的輸出是下一卷積層的輸入,原始SSD算法目標(biāo)預(yù)測利用不同尺度的特征圖進(jìn)行。結(jié)合圖1 SSD模型結(jié)構(gòu),其多尺度計算及級聯(lián)方式過程可用數(shù)學(xué)公式定義如下[13]
Fn=φn(Fn-1)=φn(φn-1(φn-2(…φ1(I))))
(1)
R=G(Cn(Fn),Cn-1(Fn-1),…,Cn-d(Fn-d)), n>d>0
(2)
式中:Fn為第n層特征圖,φn為第n-1層到第n層特征圖的非線性卷積運(yùn)算,φ1(I)為輸入圖像I得到第1層特征圖的非線性卷積運(yùn)算,Cn(·)為在第n層特征圖Fn上的檢測結(jié)果,G(·)為將所有不同尺度特征圖的檢測結(jié)果進(jìn)行集合統(tǒng)計,R為算法最終的結(jié)果。
由式(1)、式(2)可知,第n層特征圖上特征信息由第n-1層特征圖上信息決定,分辨率的大小決定了該層特征圖上感受野大小。SSD用來預(yù)測的特征圖Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2中最大尺度的分辨率為38*38,如果輸入圖像中小目標(biāo)尺寸較小,經(jīng)過pooling層池化后,會丟失低層網(wǎng)絡(luò)包含的細(xì)節(jié)信息,如邊緣信息、像素信息[14],如對一些小目標(biāo)物體在經(jīng)過4個pooling后,會使得小目標(biāo)的特征圖減少1/16。甚至導(dǎo)致像素較小的目標(biāo)物體的特征消失。在低層特征圖進(jìn)行目標(biāo)預(yù)測時,小目標(biāo)特征的表達(dá)能力不夠;另一方面,在層層卷積、池化后,高層低分辨率保留的細(xì)節(jié)信息更少;從卷積特征層Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2作為預(yù)測的6個stage,未能兼顧相鄰不同尺度特征層上的特征;此外,由于SSD用于檢測的低層網(wǎng)絡(luò)中只有一層,包含的目標(biāo)信息較少,算法在小目標(biāo)物體的檢測上存在誤檢、漏檢[15]。因此,文中擬提出以下改進(jìn)方法:深層神經(jīng)網(wǎng)絡(luò)提取到的抽象特征,配合相鄰不同尺度特征圖進(jìn)行特征融合;低層網(wǎng)絡(luò)結(jié)合更大分辨率特征層并與自上而下傳遞的高層語義融合,補(bǔ)充低層檢測層上細(xì)節(jié)信息及語義信息。
針對上述分析,改進(jìn)的SSD目標(biāo)檢測算法具體為:一是在基礎(chǔ)網(wǎng)絡(luò)上引入額外的特征層,進(jìn)一步加強(qiáng)目標(biāo)檢測層特征表達(dá)的能力;二是在附加網(wǎng)絡(luò)層中提出融合3種不同尺度特征圖加強(qiáng)前后尺度圖之間的語義信息相關(guān)性;三是在進(jìn)行融合時,構(gòu)造特征增強(qiáng)模塊,優(yōu)化特征融合策略,降低參數(shù)增加帶來的檢測速度變慢的影響。
基礎(chǔ)網(wǎng)絡(luò)卷積層卷積計算得到的特征圖擁有較大的分辨率,深層網(wǎng)絡(luò)對分類任務(wù)有利,而對于檢測任務(wù),需要檢測物體的位置。如圖2所示,圖片輸入網(wǎng)絡(luò)經(jīng)卷積層特征提取后,將低層的特征層Conv3_3、Conv4_3進(jìn)行可視化操作,特征層Conv3_3的分辨率為75*75,相對于Conv4_3特征層的分辨率38*38較大,細(xì)節(jié)特征表達(dá)較豐富。
圖2 低層特征圖可視化
為提高SSD算法低層特征層對小目標(biāo)細(xì)節(jié)特征的充分表達(dá)能力,改善SSD算法對小目標(biāo)的檢測效果,改進(jìn)算法融合相鄰底層高分辨細(xì)節(jié)特征明確的特征圖和高層低分辨率豐富語義信息的特征圖。基礎(chǔ)網(wǎng)絡(luò)特征融合結(jié)構(gòu)如圖3所示,圖3中仍以Conv4_3的尺度大小作為新預(yù)測stage的尺度,采用Concat方式融合Conv3_3、Conv4_3及自上而下高語義特征圖,補(bǔ)充Conv4_3卷積特征圖的特征信息。
圖3 基礎(chǔ)網(wǎng)絡(luò)特征圖融合結(jié)構(gòu)
隨著網(wǎng)絡(luò)卷積層的加深,卷積神經(jīng)網(wǎng)絡(luò)的抽象學(xué)習(xí)能力使得特征圖的表達(dá)能力越來越強(qiáng),具有豐富的語義信息[16]。文中改進(jìn)算法提出結(jié)合FPN算法[17]思想,構(gòu)造特征增強(qiáng)模塊:融合三級不同尺度特征圖并改進(jìn)融合策略的方法。結(jié)構(gòu)如圖4所示。
圖4 特征增強(qiáng)模塊連接結(jié)構(gòu)
圖4左側(cè)自下向上為原始SSD算法前向卷積特征圖預(yù)測stage,在進(jìn)行檢測時,使用了Conv7到Conv11_2的5種不同級別的特征層作為預(yù)測stage,分別對應(yīng)圖4中一級、二級、三級…。深層網(wǎng)絡(luò)良好的平移不變性和結(jié)合更大分辨率的特征圖細(xì)節(jié)信息,有利于目標(biāo)檢測中的分類預(yù)測和位置預(yù)測[18]。因此,對選擇的原始SSD預(yù)測stage,采用結(jié)合兩級不同分辨率的特征層,自上而下,將融合后的信息向下傳遞,進(jìn)一步將深層的高語義信息與淺層的細(xì)節(jié)信息融合。圖4特征增強(qiáng)模塊連接結(jié)構(gòu)算法流程:
(1)對原始SSD算法用于檢測的特征層(二級)用1×1 卷積[19]核提取特征并進(jìn)行橫向鏈接操作;
(2)對兩倍于(1)中分辨率的特征圖(一級)進(jìn)行1×1 卷積計算后,避免引入額外參數(shù),采用最大池化下采樣操作;
(3)將上一輪下Concat得到的特征圖進(jìn)行雙線性插值兩倍上采樣操作;
(4)Concat 融合方式能夠增加該層級下特征[20],將上述步驟(1)~步驟(3)得到的3個相同尺度的特征圖進(jìn)行Concat融合操作。
(5)重復(fù)步驟(1)~步驟(4),將融合后的各級特征圖一方面經(jīng)3x3卷積核消除融合混疊效應(yīng),作為新的預(yù)測stage送入Detection任務(wù),另一方面將特征信息傳遞,用于下一層級的特征融合。
針對上述對原始SSD分析及文中提出改進(jìn)方法,基于多層特征融合算法總體流程如圖5所示:網(wǎng)絡(luò)輸入圖片,經(jīng)SSD前向網(wǎng)絡(luò)提取特征后形成不同尺度的特征圖,通過特征增強(qiáng)模塊提升目標(biāo)特征表達(dá)能力,進(jìn)行檢測任務(wù)。
圖5 基于多層特征融合算法流程
總體網(wǎng)絡(luò)設(shè)計后的結(jié)構(gòu)如圖6所示。圖6中虛線框1應(yīng)用于底層改進(jìn)方法,對于特征層Conv4_3,引入額外高分辨率特征層,結(jié)合高層自上而下高語義特征層并采用Concat融合方式以提高小目標(biāo)的檢測效果。虛線框2對應(yīng)于附加網(wǎng)絡(luò)層的改進(jìn)方法,Zeiler等[21]提出,不同尺度級別的卷積特征層分別表征了不同級別的語義信息,卷積網(wǎng)絡(luò)越深,卷積特征層圖語義級別越高。但并不意味著融合所有不同尺度的特征圖,隨著網(wǎng)絡(luò)的復(fù)雜度增加,網(wǎng)絡(luò)的檢測速度必然會受到某種程度的影響。因此不對Conv10_2、Conv11_2做自上而下的多級特征融合處理。
以融合得到的Conv8_2_2層為例進(jìn)行說明,由圖7特征增強(qiáng)模塊融合流程圖得到,融合之后輸出的預(yù)測stage為Conv8_2_2層,其特征圖尺寸大小為512×10×10。Conv9_2_2層為上一特征融合模塊的輸出,512×5×5經(jīng)過1×1卷積和上采樣后得到維度為10×10×128的特征圖,Conv7層經(jīng)過1×1卷積和下采樣后得到256×10×10的特征圖,將上述兩個采樣后的結(jié)果和Conv8_2層特征圖經(jīng)1×1 卷積提取特征得到尺度為128×10×10的特征圖融合,得到維度為512×10×10的Conv8_2*中間層,經(jīng)3×3卷積核進(jìn)行特征整合后,得到最終的預(yù)測stage(Conv8_2_2層),同時作為下一特征融合模塊的輸入。
圖6 改進(jìn)SSD整體結(jié)構(gòu)
圖7 Conv8_2_2層特征增強(qiáng)融合流程
改進(jìn)算法采用多級不同尺度融合的方法并結(jié)合FPN思想自上而下的傳遞各級不同尺度特征圖的特征信息。在訓(xùn)練階段,由于前一級卷積層參數(shù)的更新,將影響后一級輸入層數(shù)據(jù)分布的變化,導(dǎo)致卷積特征層數(shù)據(jù)分布差異較大,直接進(jìn)行Concat融合操作,會造成特征圖之間有較大的差異。某一網(wǎng)絡(luò)層發(fā)生微小的變化,特征經(jīng)過融合層將會被累計放大下去,導(dǎo)致算法收斂過慢。因此在每層特征層后加入BN[22](batch normalization)操作,做歸一化處理,解決數(shù)據(jù)分布變化帶來的影響,進(jìn)而降低因融合操作增加模型復(fù)雜度帶來訓(xùn)練過程變慢的影響。
實驗硬件配置:CPU為Intel(R)Core(TM)i7-10750HCPU, GPU為NVIDIA RTX 1080Ti顯存6 G,內(nèi)存為16 G。軟件環(huán)境:操作系統(tǒng)為Ubuntu16.04,深度學(xué)習(xí)框架為pytorch,編程語言為Python2.7,第三方庫為OpenCV,以及CUDA。
實驗用的數(shù)據(jù)集共有兩個:公開數(shù)據(jù)PASCAL VOC2007,其中VOC2007包含9963張圖像,20分類。按照PASCAL VOC2007的格式制作家庭生活用品數(shù)據(jù)集(Supplies Dataset),包含4700張圖像,15分類(與20分類不同)。
為檢驗改進(jìn)后的模型效果,將PASCAL VOC2007數(shù)據(jù)集劃分為訓(xùn)練集和測試集。輸入圖片尺寸300*300,圖片經(jīng)過數(shù)據(jù)增強(qiáng)處理。網(wǎng)絡(luò)卷積層權(quán)重采用xavier初始化方法,整個網(wǎng)絡(luò)采用批歸一化BN(BatchNormal)處理,lr設(shè)為1e-4,每進(jìn)行20 000次迭代(iter),學(xué)習(xí)率下降10倍,momentom設(shè)為0.9,weight_decay設(shè)為5e-4,batc_size設(shè)為4,進(jìn)行7萬次迭代。在Supplies Dataset數(shù)據(jù)集上,采用同樣的方式進(jìn)行訓(xùn)練和測試。
4.3.1 訓(xùn)練結(jié)果
構(gòu)建改進(jìn)后的網(wǎng)絡(luò),在PASCAL VOC2007訓(xùn)練集上進(jìn)行訓(xùn)練,模型的訓(xùn)練損失如圖8所示,經(jīng)過10 000次迭代訓(xùn)練后,模型損失趨于平穩(wěn),表明模型達(dá)到最好效果。將訓(xùn)練得到的模型在PASCAL VOC2007測試集上進(jìn)行測試,置信度閾值設(shè)置為0.5,文中改進(jìn)算法的mAP(mean average precision)為78.6%,F(xiàn)PS為45 f/s。相比較于原始SSD算法的mAP提升了近10.4%。
圖8 訓(xùn)練損失
4.3.2 中小目標(biāo)實驗結(jié)果對比分析
為測試改進(jìn)后算法的檢測性能,采用mAP為評價指標(biāo)。選取PASCAL VOC2007數(shù)據(jù)集中包含中小目標(biāo)的圖片200張,共10類。分別對比YOLO、Faster-RCNN、SSD和改進(jìn)算法的mAP,mAP實驗結(jié)果見表1。
從檢測結(jié)果可以看出,改進(jìn)算法提出的利用FPN算法思想結(jié)合不同層級融合的SSD目標(biāo)檢測算法的檢測精度明顯提升。尤其對于小目標(biāo),如bottle提升了近22%,aero提升了近37%,mAP相比原SSD算法提高近14.1%,對比結(jié)果如圖9所示。
圖9 檢測對比結(jié)果
圖10為效果對比圖部分演示,左邊是原始SSD檢測效果圖,右邊是改進(jìn)算法效果圖。對比圖10(a)~圖10(d)可以明顯看出,改進(jìn)后算法較原SSD算法能夠正確檢測出更多的物體,提升算法檢測小目標(biāo)的能力。從圖10(g)和圖10(h)則可以看出對于形態(tài)多樣的一類物體,改進(jìn)算法有更高好的檢測效果,并且能夠成功定位出被遮擋的物體。從圖10(e)和圖10(f)可以看出,改進(jìn)算法對小目標(biāo)的檢測精度有很好的提升。仔細(xì)分析可以得出,基于SSD的目標(biāo)檢測算法,在經(jīng)過不同層級的特征融合后,不僅提升了物體檢測精度,對物體的召回率也有不錯的提升。
圖10 效果對比
4.3.3 生活用品數(shù)據(jù)集檢測結(jié)果對比分析
針對復(fù)雜生活用品的識別是實現(xiàn)機(jī)械臂智能抓取的重要前提條件,定位的準(zhǔn)確與否決定著后續(xù)物體點云分割提取后的真實三維坐標(biāo),決定了機(jī)械臂在視覺系統(tǒng)下的抓取的成功率。因此,提高混亂場景下物體識別與定位的準(zhǔn)確率尤為重要。文中在對改進(jìn)后算法的可靠性進(jìn)行充分實驗,生活用品數(shù)據(jù)集(Supplies Dataset)4700張,包含15類生活用品,如penholder(筆筒)、soap(香皂)、scissors(剪刀)、dumbbells(啞鈴)…等。根據(jù)PASCAL VOC2007數(shù)據(jù)集格式進(jìn)行標(biāo)注和修改,采用同樣的訓(xùn)練方法,將得到的模型進(jìn)行測,測試效果部分演示如圖11所示,左面一欄是原SSD模型的檢測效果圖,右面一欄是改進(jìn)算法檢測效果圖。
圖11 效果對比
從圖11效果圖11(a)、圖11(b)和圖11(e)、圖11(f)可以看出:對于環(huán)境復(fù)雜,物體形態(tài)不明顯的種類,改進(jìn)算法在融合不同層級的增強(qiáng)特征表達(dá)能力后,能夠準(zhǔn)確檢測出目標(biāo)物體。從效果圖11(c)和圖11(d)可以看出,對存在堆疊的物體,改進(jìn)算法不僅正確檢測出小目標(biāo)物體,同時也提高了檢測精度,有效避免原算法中存在的漏檢和誤檢。隨著混亂復(fù)雜度增加及物體間的疊加效應(yīng)影響,從圖11(g)和圖11(h)中可以看出,文中改進(jìn)算法檢測效果尤為明顯,尤其對形態(tài)相似的物體種類,改進(jìn)算法在融合不同層級的特征后,能夠有效檢測出目標(biāo)。如類別為pencil與類別為sosp的物體,改進(jìn)算法精準(zhǔn)定位出pencil位置,避免了原算法的定位不準(zhǔn)。說明了改進(jìn)算法對相似物體的檢測有較強(qiáng)的魯棒性。
通過以上檢測結(jié)果及測試結(jié)果可以得到以下結(jié)論:①改進(jìn)后算法較原始SSD模型算法能夠檢測出更多的物體,減少漏檢;②改進(jìn)算法能夠提高小目標(biāo)物體置信度,提高檢測精度;③對于類別相似的物體,該改進(jìn)后算法能夠提高準(zhǔn)確度,減少誤檢。④改進(jìn)算法對堆疊效應(yīng)下物體的檢測也具有較強(qiáng)的魯棒性和更好的效果。
4.3.4 測試速度結(jié)果對照表
為了測試本文所提算法的可用性,使用兩個數(shù)據(jù)集進(jìn)行對比驗證,由表2中PASCAL VOC2007數(shù)據(jù)集和表3中Supplies Dataset數(shù)據(jù)集上的測試結(jié)果可知,改進(jìn)算法的mAP明顯提升;考慮到模型融合帶來的模型結(jié)構(gòu)復(fù)雜度的提升,模型的檢測速度未受到太多的影響,基本滿足要求。
表2 實驗結(jié)果對照
表3 實驗結(jié)果對照
文中首先介紹了SSD算法網(wǎng)絡(luò)構(gòu)成,并分析原始SSD算法存在的問題及檢測中小目標(biāo)物體效果差的原因。針對這些存在的問題,提出了對網(wǎng)絡(luò)改進(jìn)的方法。將改進(jìn)后的算法在PASCAL VOC2007數(shù)據(jù)集和Supplies Dataset數(shù)據(jù)集上進(jìn)行訓(xùn)練和測試。評價指標(biāo)mAP相比于原始算法提高了10.4%,考慮到算法網(wǎng)絡(luò)層的增加,檢測速度FPS為45 f/s,檢測速度符合算法的實時性要求。此外,為驗證改進(jìn)算法對中小目標(biāo)檢測的效果,從PASCAL VOC2007測試集里面選取200張包含小目標(biāo)的圖片進(jìn)行測試,改進(jìn)算法的mAP明顯高于其它算法,其中相較于原始SSD算法提高了14.1%,說明改進(jìn)算法的有效性。為驗證改進(jìn)算法的可用性,在Supplies Dataset數(shù)據(jù)集上的測試結(jié)果表明,改進(jìn)算法對存在堆疊狀態(tài)物體下的識別也具有較強(qiáng)的可用性和魯棒性。綜合實驗結(jié)果表明,改進(jìn)的目標(biāo)檢測算法在提高精度的同時,算法的實時性也基本滿足要求。在下面的研究工作中,將進(jìn)一步改善網(wǎng)絡(luò)結(jié)構(gòu),調(diào)整網(wǎng)絡(luò)參數(shù),提高算法檢測精度的同時,提高算法的檢測速度,提升算法的整體性能。