白 陽(yáng), 劉 斌, 李彥彤
(陜西科技大學(xué) 電子信息與人工智能學(xué)院, 陜西 西安 710021)
隨著生活垃圾分類制度的推行,垃圾分類作為推進(jìn)綠色發(fā)展的重要舉措收到越來(lái)越多的關(guān)注[1].可回收垃圾是可以循環(huán)再生的資源,準(zhǔn)確的分類出可回收垃圾可以助力可持續(xù)發(fā)展.但可回收垃圾人工分類效率低下[2],利用垃圾圖像自動(dòng)分類成了研究熱點(diǎn).高光譜成像技術(shù)[3]作為自動(dòng)分類的一種手段,對(duì)透明、半透明物體的分類效果不理想,限制了其在可回收垃圾分類中的應(yīng)用.
目前在計(jì)算機(jī)視覺領(lǐng)域,深度學(xué)習(xí)展現(xiàn)出了強(qiáng)大的表征能力[4-8],在目標(biāo)檢測(cè)方面取得巨大成功[9-11].Faster R-CNN[12]、YOLO[13]、SSD[14]等深度學(xué)習(xí)算法的提出,使目標(biāo)檢測(cè)的速度和精度不斷提高.其中,SSD(Single Shot MultiBox Detector)作為一種成熟的目標(biāo)檢測(cè)算法,受到了廣泛的關(guān)注.楊輝華等[15]、鄧壯來(lái)等[16]、馬建等[17]將SSD算法應(yīng)用在目標(biāo)檢測(cè)中取得了不錯(cuò)的效果.
為了提高SSD算法在可回收垃圾檢測(cè)中的檢測(cè)精度,提高小目標(biāo)檢測(cè)成功率,本文提出了一種可回收垃圾檢測(cè)方法OctConv-SSD(簡(jiǎn)稱O-SSD).
SSD算法是Wei Liu在ECCV 2016上提出的一種目標(biāo)檢測(cè)算法.它從YOLO(You Only Look Once) 繼承了將檢測(cè)轉(zhuǎn)化為回歸的思路,一步完成目標(biāo)的定位和分類,提高了檢測(cè)速度;同時(shí)基于Faster RCNN中的Anchor提出了預(yù)選框以提高檢測(cè)精度.圖1為SSD網(wǎng)絡(luò)結(jié)構(gòu).
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)
SSD網(wǎng)絡(luò)在不同特征層提取共8732個(gè)預(yù)選框,后續(xù)將預(yù)選框和真實(shí)邊界框配對(duì),依據(jù)置信度排序預(yù)選框,挑選置信度高的預(yù)選框進(jìn)行訓(xùn)練,最終回歸分類得到目標(biāo)檢測(cè)框.
SSD算法使用了傳統(tǒng)的卷積方法,直接通過(guò)對(duì)不同特征圖提取預(yù)選框,可以達(dá)到實(shí)時(shí)監(jiān)測(cè)的效果.然而VGG[18]作為SSD的主干網(wǎng)絡(luò),不能夠達(dá)到很深的層次,這使得負(fù)責(zé)檢測(cè)小目標(biāo)的conv4_3存在特征提取不充分的問(wèn)題,對(duì)小目標(biāo)的召回率一般,檢測(cè)精度不如Faster RCNN.SSD采用了密集采樣,正負(fù)樣本分布極其不均衡,同樣影響著目標(biāo)檢測(cè)精度;為了提高檢測(cè)精度,本文提出的O-SSD網(wǎng)絡(luò)將Resnet替換VGG作為SSD網(wǎng)絡(luò)的主干網(wǎng)絡(luò),引入RPN網(wǎng)絡(luò)粗篩預(yù)選框,均衡正負(fù)例數(shù)量,可以顯著提高檢測(cè)精度.另外,圖像存在高、低頻分量,低頻分量存在冗余在編碼過(guò)程中可以節(jié)省.為了提高模型計(jì)算效率與識(shí)別性能,O-SSD引入八度卷積(OctConv)方法替代傳統(tǒng)CNN卷積方法以壓縮低頻分量,加快神經(jīng)網(wǎng)絡(luò)的訓(xùn)練.O-SSD網(wǎng)絡(luò)體系結(jié)構(gòu)如圖2所示.
圖2 O-SDD網(wǎng)絡(luò)結(jié)構(gòu)
O-SSD網(wǎng)絡(luò)卷積方法替換為OctConv,目的是為了降低內(nèi)存和計(jì)算成本.圖中紅色為Resnet替換原SSD網(wǎng)絡(luò)中VGG的部分,其主要作用是用更深的網(wǎng)絡(luò)結(jié)構(gòu)保留更多的小目標(biāo)信息.黃色的6個(gè)過(guò)濾模塊(Filter Block)參考了Faster RCNN算法中的RPN網(wǎng)絡(luò),其主要作用是粗篩預(yù)選框,方便后續(xù)的回歸分類.特征圖間添加了4個(gè)鏈接模塊(Link Block),其目的是在高層特征與低層特征之間添加特征融合方案,減少信息丟失.
1.2.1 OctConv
OctConv是一種可以使模型性能提升,算力減少的卷積方法.一張圖片可以分成低頻(粗略結(jié)構(gòu))和高頻(邊緣細(xì)節(jié))兩個(gè)部分,圖片中高頻信息往往較少,而低頻信息存在冗余.對(duì)于普通卷積方法,所有輸入和輸出特征映射具有相同的分辨率,信息量較少的低頻部分的計(jì)算量消耗大,存儲(chǔ)空間需求高.針對(duì)上述問(wèn)題,OctConv壓縮了低頻部分?jǐn)?shù)據(jù),分別處理低頻和高頻的數(shù)據(jù),并在二者間進(jìn)行信息交換以減少計(jì)算量和存儲(chǔ)空間.OctConv的卷積過(guò)程如圖3所示.
圖3 OctConv卷積過(guò)程
圖3中左側(cè)部分為輸入特征圖,右側(cè)部分為輸出特征圖.左上方與右上方兩部分均為特征圖高頻部分;左下方與右下方兩部分均為特征圖低頻部分.α表示低頻分量所占的比重,是一個(gè)可調(diào)節(jié)參數(shù).將卷積核分為兩個(gè)分量:W=[WH,WL],為實(shí)現(xiàn)高低頻之間的有效通信,輸入張量分為兩個(gè)分量X=[XH,XL],輸出張量也分為兩個(gè)分量Y=[YH,YL].高頻輸出張量YH=YH→H+YL→H,低頻輸出張量YL=YL→L+YH→L,定義YA→B表示從A到B的特征映射后更新的結(jié)果,則YH→H與YL→L是頻率內(nèi)的信息更新,YL→H與YH→L是頻率間的信息更新.為了計(jì)算更新結(jié)果,本文將卷積核細(xì)分為WH→H、WH→L、WL→H、WL→L這四部分.輸出張量計(jì)算方式如下:
(1)
(2)
公式(1)、(2)中:(p,q)是X張量中的位置坐標(biāo),(i,j)表示所取近鄰范圍.WH→H,WH→L,WL→H,WL→L這四部分為卷積核的頻率內(nèi)分量和頻率間分量.定義卷積核為k×k大小,輸入特征圖的通道數(shù)為cin,輸入特征圖低頻分量所占比重為αin,輸出特征圖的通道數(shù)為cout,輸出特征圖低頻分量所占比重為αout.卷積核的通道數(shù)等于輸入特征圖的通道數(shù),卷積核的個(gè)數(shù)等于輸出特征圖的通道數(shù).由此可知WH→H的尺寸為[k,k, (1-αin)cin,(1-αout)cout],WH→L的尺寸為[k,k,(1-αin)cin,αout*cout],WL→H的尺寸為[k,k,αin*cin,(1-αout)cout],WL→L的尺寸為[k,k,αin*cin,αout*cout].OctConv卷積核參數(shù)張量形狀如圖4所示.
圖4 OctConv卷積核
實(shí)驗(yàn)過(guò)程中設(shè)定α的值為0.5,高頻分量與低頻分量所占比重相同,四部分卷積核尺寸相同.由式(2)可知,OctConv可以增大低頻特征映射的感受野.與普通卷積相比,有效地將感受野擴(kuò)大了兩倍,幫助OctConv層捕獲更多的上下文信息.
1.2.2 O-SSD中的Resnet
VGG是SSD網(wǎng)絡(luò)中的特征提取網(wǎng)絡(luò),其通過(guò)堆疊3x3大小的卷積核和2x2最大池化層,對(duì)樣本進(jìn)行特征由淺入深的提取.VGG使用有參層直接學(xué)習(xí)輸入與輸出之間的映射,作為小目標(biāo)檢測(cè)的conv4_3特征圖,存在特征提取不充分的問(wèn)題,使SSD網(wǎng)絡(luò)對(duì)小目標(biāo)的檢測(cè)效果不佳.而Resnet通過(guò)使用多個(gè)有參層學(xué)習(xí)輸入與輸出之間的殘差表示,獲得了更多的特征細(xì)節(jié)與更深的網(wǎng)絡(luò)結(jié)構(gòu),使負(fù)責(zé)檢測(cè)小目標(biāo)的較淺層特征圖保留了更多的特征信息.實(shí)驗(yàn)證明Resnet相比VGG具有更好的特征提取能力.
為兼容SSD網(wǎng)絡(luò)的特征圖尺寸,O-SSD中Resnet的結(jié)構(gòu)如表1所示.
表1 O-SSD網(wǎng)絡(luò)中Resnet的結(jié)構(gòu)
參考了Resnet50[19]模型,1×1卷積核起降維和升維作用,最終輸出的特征圖大小為[512,38,38],兼容了SSD網(wǎng)絡(luò)conv4_3的特征圖尺寸.
1.2.3 過(guò)濾模塊(Filter Block)
SSD作為一種單步檢測(cè)(Single Shot Detectors)算法,對(duì)提取的特征直接進(jìn)行分類回歸.在密集采樣后可以獲得8732個(gè)預(yù)選框,其中負(fù)樣本遠(yuǎn)遠(yuǎn)大于正樣本,容易因訓(xùn)練樣本不均衡引起目標(biāo)分類與目標(biāo)位置回歸錯(cuò)誤,降低準(zhǔn)確率.考慮到RPN網(wǎng)絡(luò)結(jié)構(gòu)可以對(duì)預(yù)選框進(jìn)行前景與后景的分類和位置初步回歸,本文使用RPN作為SSD網(wǎng)絡(luò)的過(guò)濾模塊(Filter Block),對(duì)預(yù)選框進(jìn)行粗篩,過(guò)濾部分負(fù)樣本,改善樣本不均衡帶來(lái)的問(wèn)題.過(guò)濾模塊的結(jié)構(gòu)如圖5所示.
由圖5可知,過(guò)濾模塊對(duì)n個(gè)預(yù)選框做回歸和前景判別,獲得共2n個(gè)置信數(shù)(前景與后景)和4n個(gè)坐標(biāo)偏移量,最終在特征圖中生成n個(gè)粗篩的預(yù)選框.
1.2.4 鏈接模塊(Link Block)
SSD采用VGG作為backbone,后續(xù)添加了新的卷積層來(lái)獲取更多的特征圖用于檢測(cè).卷積神經(jīng)網(wǎng)絡(luò)層數(shù)加深的過(guò)程,是特征從低層到高層提取的過(guò)程.伴隨著網(wǎng)絡(luò)層數(shù)的加深,每一層都會(huì)丟失一部分信息,這影響著檢測(cè)精度.針對(duì)決這一問(wèn)題,本文于特征圖之間添加了連接模塊(Link Block),基于特征融合思想,將低層特征圖信息添加到高層特征圖中以減少信息的丟失,提高檢測(cè)精度.連接模塊的結(jié)構(gòu)如圖6所示.
圖5 過(guò)濾模塊結(jié)構(gòu)
圖6 鏈接模塊結(jié)構(gòu)
在圖6中,低層特征圖通過(guò)三次卷積操作后,與經(jīng)過(guò)一次卷積操作后的高層特征圖對(duì)應(yīng)元素求和.后經(jīng)一個(gè)3×3卷積確保特征可辨別,融合后的特征圖進(jìn)行池化操作完成降采樣過(guò)程,輸出特征圖.
所有實(shí)驗(yàn)均在Windows7,64位操作系統(tǒng),內(nèi)存128 GB,CPU:Intel Xeon Silver 4116,GPU:NVIDIA TITAN Xp的環(huán)境下進(jìn)行.使用Pytorch開源框架實(shí)現(xiàn)O-SSD算法并完成模型的訓(xùn)練.
由于目前沒有針對(duì)可回收垃圾檢測(cè)的公開數(shù)據(jù)集,因此通過(guò)已標(biāo)定的可回收垃圾類別收集可回收垃圾數(shù)據(jù),實(shí)驗(yàn)樣本選擇抱枕、玻璃杯、塑料盆等生活垃圾,電視機(jī)、掛式空調(diào)、吹風(fēng)機(jī)等電子垃圾,共20類2 120個(gè)樣本.使用Lable Image工具對(duì)可回收垃圾數(shù)據(jù)進(jìn)行標(biāo)注.
由于少量數(shù)據(jù)訓(xùn)練模型容易過(guò)擬合,需要對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)充與增強(qiáng)處理.谷歌大腦在研究中發(fā)現(xiàn)對(duì)目標(biāo)檢測(cè)有收益的操作有顏色操作、幾何操作和邊界框操作.本文使用了適用于目標(biāo)檢測(cè)的自動(dòng)數(shù)據(jù)增強(qiáng)方法AutoAugment[20]來(lái)搜索改進(jìn)的數(shù)據(jù)增強(qiáng)策略.在強(qiáng)化學(xué)習(xí)的幫助下給定數(shù)據(jù)集最佳的增強(qiáng)策略,使模型得更好的訓(xùn)練效果.
本文通過(guò)對(duì)比O-SSD模型與SSD模型的檢測(cè)精度和檢測(cè)速度對(duì)比模型性能.設(shè)置bounding box與ground truth的IOU閾值大于0.65時(shí)檢測(cè)結(jié)果正確.
檢測(cè)精度評(píng)價(jià)指標(biāo)選取mAP(Mean Average Precision)指標(biāo),定義為[21]:
(3)
mAP為所有類別的平均精度(AP)求和除以類別數(shù)M.AP定義為:
(4)
AP為某個(gè)類別精度,其中precision(i)為一張影像上一個(gè)物體的精度,K為實(shí)例個(gè)數(shù),N為數(shù)據(jù)影像數(shù).mAP指標(biāo)越高,模型的檢測(cè)效果越好.
檢測(cè)速度評(píng)價(jià)指標(biāo)選取FPS(Frames Per Second,每秒幀數(shù))指標(biāo),定義為模型一秒內(nèi)檢測(cè)的圖像數(shù).模型的FPS越高,檢測(cè)速度越快,實(shí)時(shí)性越好.
模型復(fù)雜度評(píng)價(jià)指標(biāo)選取FLOPs(Floating Point Operations,浮點(diǎn)運(yùn)算次數(shù))指標(biāo),定義為模型的運(yùn)算量.模型的FLOPs越小,模型所需運(yùn)算量越小,計(jì)算效率越高.
實(shí)驗(yàn)使用采集的1 616張可回收垃圾圖片訓(xùn)練O-SSD模型,剩余數(shù)據(jù)分為驗(yàn)證集與測(cè)試集數(shù)據(jù).網(wǎng)絡(luò)超參數(shù)設(shè)置如下:初始學(xué)習(xí)率為1e-4,網(wǎng)絡(luò)迭代到30 000次時(shí)設(shè)置為1e-5,batch設(shè)置為10.網(wǎng)絡(luò)迭代到65 000次達(dá)到最佳檢測(cè)結(jié)果90.62%.
四是要有好身體。自駕游比跟團(tuán)游更考驗(yàn)人的體能。吃飯不及時(shí)、休息不及時(shí)、睡覺不及時(shí),都是常事。有時(shí)前不著村、后不著店,只能咬牙堅(jiān)持。我們此次所去的地方,一連好幾天,都在海拔3500-4000米左右的地方活動(dòng),如果有高原反應(yīng),對(duì)身體會(huì)造成一定影響。在阿克塞縣城,遇到一伙剛從西藏下來(lái)的游客。他們都穿著棉衣,但其中有一女的卻一身背心短褲,精神抖擻。據(jù)說(shuō)在西藏,此人毫無(wú)不適之感。而另有一個(gè)人高原反應(yīng)十分厲害,頭疼欲裂,氧氣吸了一大袋,差點(diǎn)死在那里。
2.5.1 模塊性能評(píng)估
為了研究本文優(yōu)化方法對(duì)算法性能的影響,對(duì)適配不同優(yōu)化方法的O-SSD模型在可回收垃圾數(shù)據(jù)集上做了性能評(píng)估.定義OctConv為方法A,Resnet為方法B,過(guò)濾模塊為方法C,鏈接模塊為方法D.評(píng)估結(jié)果如表2所示.
表2 模塊性能評(píng)估
在表2中,Model1、Model2、Model3、Model4分別為O-SSD模型缺少過(guò)濾模塊,Resnet、OctConv、鏈接模塊的模型,依據(jù)mAP的值升序排序.
對(duì)比上述四種模型與O-SSD模型的精度,可知過(guò)濾模塊在算法中起到關(guān)鍵作用,不含過(guò)濾模塊的Model1相比O-SSD模型性能下降明顯.其主要原因是神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練樣本分布比較敏感,當(dāng)負(fù)例樣本遠(yuǎn)大于正例樣本時(shí),網(wǎng)絡(luò)會(huì)注重負(fù)例樣本特征學(xué)習(xí),使網(wǎng)絡(luò)漏檢率變高,檢測(cè)精度變低.而過(guò)濾模塊通過(guò)篩選剔除部分負(fù)例樣本,使正例與負(fù)例樣本比例均衡,解決了上述問(wèn)題且較大幅度提高了模型檢測(cè)精度.
對(duì)比Model3模型與SSD模型FLOPs可知,在添加B、C、D優(yōu)化方法后,模型復(fù)雜度提升,運(yùn)算量增多.而O-SSD網(wǎng)絡(luò)在Model3的基礎(chǔ)添加了A(OctConv)優(yōu)化方法后,F(xiàn)LOPs下降明顯.這得益于OctConv方法在卷積過(guò)程中,特征圖低頻分量得到壓縮,低頻特征尺寸僅為高頻部分的1/4,這使得特征圖與卷積核的運(yùn)算量大幅度減少.因此,O-SSD模型可以在結(jié)構(gòu)變復(fù)雜的同時(shí),模型復(fù)雜度降低.
使用了四種優(yōu)化方法的O-SSD模型,相比SSD模型檢測(cè)精度提高了9.36%,F(xiàn)LOPs降低了10 G.實(shí)驗(yàn)證明O-SSD模型擁有比SSD模型更高的檢測(cè)精度和更少的運(yùn)算量.
為評(píng)估O-SSD模型的檢測(cè)精度與檢測(cè)速度,實(shí)驗(yàn)對(duì)比了O-SSD模型與SSD、Faster RCNN和YOLO V3在可回收垃圾數(shù)據(jù)集上的模型性能.四種模型對(duì)不同類別可回收垃圾的檢測(cè)精度的如表3所示.
表3 模型對(duì)于不同類別可回收垃圾的檢測(cè)精度(AP/%)
由表3可知,O-SSD在各類可回收垃圾樣本的檢測(cè)精度均為最高水準(zhǔn),檢測(cè)精度優(yōu)于其他三類模型.對(duì)于玻璃杯和礦泉水瓶這類透明、半透明垃圾的檢測(cè)效果理想,相較于高光譜成像技術(shù),O-SSD作為一種深度學(xué)習(xí)領(lǐng)域的可回收垃圾檢測(cè)方法是十分有效的.
四種模型在可回收垃圾數(shù)據(jù)集上的性能如表4所示.由表4可知,O-SSD模型在可回收垃圾數(shù)據(jù)集上擁有最高的檢測(cè)精度和較高的檢測(cè)速度.雖然檢測(cè)速度不及SSD模型(降低3FPS),但O-SSD模型更好的權(quán)衡了檢測(cè)精度與速度.對(duì)比Faster RCNN模型和YOLO V3模型,無(wú)論是在檢測(cè)精度還是檢測(cè)速度上,O-SSD模型都更加優(yōu)秀.綜上,在可回收垃圾檢測(cè)數(shù)據(jù)集中O-SSD模型擁有良好的檢測(cè)性能.
表4 模型性能評(píng)估
2.5.3 小目標(biāo)檢測(cè)對(duì)比
在目標(biāo)檢測(cè)領(lǐng)域,對(duì)于小目標(biāo)的定義有多種,本文采用的是MS COCO數(shù)據(jù)集的定義[20],即尺寸小于32*32像素的目標(biāo)即可認(rèn)定是小目標(biāo).為評(píng)估O-SSD模型對(duì)小目標(biāo)的檢測(cè)性能,實(shí)驗(yàn)對(duì)比了部分檢測(cè)結(jié)果圖,結(jié)果對(duì)比如圖7所示.
圖7 O-SSD模型與SSD模型對(duì)小目標(biāo)檢測(cè)結(jié)果對(duì)比圖
圖7列舉了O-SSD網(wǎng)絡(luò)與SSD網(wǎng)絡(luò)對(duì)抱枕(pillow)與玻璃杯(glass)的檢測(cè)結(jié)果,其中SSD(1)與SSD(2)為SSD模型的檢測(cè)結(jié)果,O-SSD(1)與O-SSD(2)為O-SSD模型的檢測(cè)結(jié)果.對(duì)比發(fā)現(xiàn)SSD網(wǎng)絡(luò)存在小目標(biāo)漏檢的境況,檢測(cè)圖中較小的抱枕和玻璃杯均檢測(cè)失敗.
SSD網(wǎng)絡(luò)主要是在主干網(wǎng)絡(luò)中淺層特征圖conv4_3上提取小目標(biāo)特征,特征圖尺寸較大,預(yù)選框較小,適合作為小目標(biāo)的預(yù)選框.VGG作為SSD的主干網(wǎng)絡(luò),在其特征提取的過(guò)程中,卷積池化的下采樣過(guò)程可能將有用的特征信息濾除掉,小目標(biāo)信息量少容易丟失,因此特征圖conv4_3存在特征提取不充分的問(wèn)題,導(dǎo)致漏檢.O-SSD得益于Resnet殘差特性,網(wǎng)絡(luò)學(xué)習(xí)特征圖之間的殘差,使得大部分特征得以保留,可以使網(wǎng)絡(luò)達(dá)到更深的層數(shù).作為O-SSD小目標(biāo)特征層OctConv4_6達(dá)到了30層的深度,可以較好地保留小目標(biāo)語(yǔ)意信息,因此改善了小目標(biāo)漏檢問(wèn)題,提高了小目標(biāo)的檢測(cè)成功率.
本文提出了一種基于改進(jìn)SSD的模型O-SSD,在可回收垃圾數(shù)據(jù)集上展開多次試驗(yàn),通過(guò)對(duì)比實(shí)驗(yàn)驗(yàn)證了O-SSD模型具有較高的檢測(cè)精度和檢測(cè)速度,相比SSD模型改善了小目標(biāo)漏檢問(wèn)題.下一步考慮改進(jìn)預(yù)選框的采樣方法,進(jìn)一步優(yōu)化模型,以提升模型檢測(cè)速度.