許 偉,熊衛(wèi)華
(浙江理工大學 機械與自動控制學院,浙江 杭州 310018)
隨著中國經(jīng)濟的高速增長,對資源的使用和環(huán)境的保護使得人們開始重視對垃圾的處理問題,而隨著全國各大城市的生活垃圾管理條例的頒布和執(zhí)行,便捷的垃圾分揀方法成為了社會的熱點問題。傳統(tǒng)分揀主要依靠人工分揀,工人的工作環(huán)境較差,且施工人員容易在施工過程中受傷。該文基于計算機視覺深度學習的方法對垃圾進行目標檢測,通過對垃圾目標的定位和分類為后續(xù)的各種取件機械手分揀或其他分揀方式提供算法參考方案。
隨著計算機視覺技術的成熟,越來越多的研究者陸續(xù)提出適用于垃圾目標檢測的深度學習解決方案。Li等提出了FSSD算法,將SSD算法網(wǎng)絡額外提取部分特征層作為金字塔特征融合層,但是,改進后的網(wǎng)絡檢測速度較慢。岳曉明等提出了一種基于CenterNet的垃圾分類與檢測算法,將具有淺層特征層的特征與最終輸出檢測層進行融合,得到了改進的DLLA-34網(wǎng)絡。該算法對其論文中自制垃圾數(shù)據(jù)集的精度達到98.2%,但是,該論文所使用的垃圾數(shù)據(jù)樣本過于相似,訓練集數(shù)據(jù)量不夠大,背景單一,魯棒性不高。向陽等提出了O-SSD網(wǎng)絡,使用八度卷積算法代替?zhèn)鹘y(tǒng)卷積,在提高模型性能的同時減少了算力,該網(wǎng)絡模型取得了不錯的檢測效果。
目前基于深度學習技術的目標檢測算法分為兩類,一類為以Fast R-CNN、Faster R-CNN、R-FCN為代表的雙階段目標檢測算法,該類算法基于區(qū)域建議尋找可能存在目標物體的檢測框;另一類是以YOLO系列、SSD系列為代表的單階段目標檢測算法,該類算法在直接生成候選框的同時進行檢測框的分類和回歸。這些算法模型參數(shù)量較大,不適用于計算能力較弱、成本不高的低功耗設備。研究者們大多從兩個角度對網(wǎng)絡模型進行優(yōu)化,一些著眼于模型的各類壓縮算法,如剪枝、量化、知識蒸餾等,另一些將關注點放在優(yōu)秀的網(wǎng)絡模型設計中,如MobileNet、ShuffleNet等。該文提出一種基于改進YOLOv3的輕量級垃圾目標檢測算法Ghost- YOLO,將GhostNet網(wǎng)絡作為特征提取層代替原來的Darknet-53,并對yolo層進行一定的改進,經(jīng)實驗論證,該算法能有效滿足實時垃圾分類檢測的需求。
基于端到端的神經(jīng)網(wǎng)絡算法YOLO(you only look once)系列經(jīng)過發(fā)展,至今已到Y(jié)OLOv5版本,第四和第五版本都是在第三版本上做改進,且并未涉及到網(wǎng)絡的輕量化工作。該文使用該系列原創(chuàng)作者的YOLOv3算法,并針對網(wǎng)絡輕量化做出一些改進。
YOLOv3網(wǎng)絡結(jié)構(gòu)如圖1所示。算法主干網(wǎng)絡使用Darknet-53作為特征提取層,共74層的特征提取層由大量殘差網(wǎng)絡組成。在yolo層中,YOLOv3采用FPN多尺度特征融合的方式,通過將13×13大小富含高級語義信息的特征進行上采樣操作,與富含位置信息的低層特征圖進行融合,分別在32、16、8倍降采樣三個尺度的特征圖像上進行檢測框和類別的輸出與預測。依次輸出由大及小的物體檢測框。
圖1 YOLOv3網(wǎng)絡結(jié)構(gòu)
如圖2所示,Ghost-YOLO算法通過去除全連接層的GhostNet網(wǎng)絡進行特征提取,其中特征提取網(wǎng)絡中的104、52、26和13分別表示該大小特征圖的最后一步卷積操作。經(jīng)過灰色區(qū)域的特征提取后進入特征融合單元,其中富含語義信息的13×13大小的網(wǎng)絡經(jīng)過三次上采樣分別與特征提取網(wǎng)絡中的第13層、第7層、第5層相同大小的特征進行融合,該融合結(jié)果同時與104×104大小的特征層經(jīng)過三次DSConv(depthwise separable convolution)深度可分離操作的
圖2 Ghost-YOLO網(wǎng)絡結(jié)構(gòu)
特征相融合,獲得更為豐富的底層特征的位置信息。通過最后輸出的52×52,26×26和13×13大小的特征圖進行垃圾目標檢測。
1.2.1 改進的特征提取網(wǎng)絡
考慮到垃圾分類使用場所大多是成本較為低廉的嵌入式設備,為降低運算復雜度,需要對算法進行輕量化。該文使用華為在2020年CVPR上提出的GhostNet網(wǎng)絡結(jié)構(gòu),將YOLOv3算法中的特征提取網(wǎng)絡部分由Darknet53改為GhostNet網(wǎng)絡結(jié)構(gòu),并將其進行遷移學習。Han K發(fā)現(xiàn)經(jīng)過普通卷積后的特征圖有相當一部分高度相似,圖3為文中數(shù)據(jù)集中某張圖片第7層卷積層52×52大小的特征圖可視化,可以發(fā)現(xiàn)該層存在許多近似的冗余特征圖。
圖3 Ghost-YOLO網(wǎng)絡結(jié)構(gòu)
這些冗余特征圖雖然同樣對網(wǎng)絡訓練有一定幫助,但生成這些特征圖的計算成本過高,為降低計算量,只通過普通卷積得到部分特征,其余特征層通過逐層卷積獲得。
通常的卷積如圖4(a)所示,對輸入數(shù)據(jù)X
使用n
個濾波器得到卷積后的特征,而Ghost module則分兩步來獲得與普通卷積相同數(shù)量的特征圖。如圖4(b),第一步是少量卷積,對輸入數(shù)據(jù)X
使用m
(m
=n
/2)個濾波器,內(nèi)核大小為k
×k
的卷積核f
跟原始特征圖X
進行卷積運算,得到輸出特征圖Y
=X
*f
;第二步是cheap operations,如圖中的φ
所示,文中使用的具體方法是對輸出的m
個特征圖逐個進行3×3卷積(depth-wise convolutional)得到另外的n
/2個特征圖。圖4 普通卷積與Ghost模塊的卷積過程
(1)
Y
=[y
,y
,…,y
]=[y
,y
,…,y
1,…,y
1,y
2,…,y
](2)
由于通過逐層卷積生成的特征圖數(shù)量比例越大,網(wǎng)絡的準確率會下降得越明顯,所以該文通過普通卷積得到一半特征圖,另一半特征圖使用計算量較低的逐層卷積得到,即s
=2。Ghostnet網(wǎng)絡結(jié)構(gòu)將Mobilenetv3中的bottleneck模塊改為Ghost bottleneck。其主要由兩個堆疊的Ghost模塊組成,通過第一個Ghost Module起到增加通道數(shù)的作用,并且用來指定輸出通道數(shù)的膨脹比;第二個Ghost Module將通道數(shù)降低到與輸入通道數(shù)一致。該模塊根據(jù)步長的不同分為兩種,如下圖右圖所示Stride=2的G-bneck,使用DWConv深度可分離卷積,該結(jié)構(gòu)會進行兩倍的降采樣。
該文將其應用在垃圾目標檢測任務中,由于垃圾目標會包含類似電池等小物體,為了使小物體在特征提取的過程中信息不易丟失,將圖片統(tǒng)一縮放至416×416大小。
1.2.2 輕量化的特征融合網(wǎng)絡
原YOLOv3網(wǎng)絡由特征提取網(wǎng)絡Darknet-53和目標檢測特征融合yolo層組成,yolo層采用FPN特征金字塔結(jié)構(gòu)將深層語義特征與淺層位置特征進行特征融合,該結(jié)構(gòu)充分利用了特征層級,自上而下的路徑增強以及側(cè)向連接,為檢測提供了更加豐富有利的特征。原yolo層輸出檢測框的特征圖大小分別為13×13、26×26和52×52。由于考慮到原FPN結(jié)構(gòu)在上采樣融合的過程中并未對13×13大小的檢測框進行融合,且特征經(jīng)過多層的傳遞位置信息丟失較多,淺層網(wǎng)絡特征未得到充分利用。為了能夠充分利用網(wǎng)絡淺層豐富的位置信息,同時增強網(wǎng)絡對小尺寸目標的檢測能力,添加一個自底而上的二次融合通道,進一步增強整個網(wǎng)絡結(jié)構(gòu)的特征提取定位能力,如圖5中下方的虛線箭頭所示。首先,利用存在于淺層特征更豐富的定位信息,建立自下而上的特征信息路徑,增加了104×104大小的特征圖進行降采樣實現(xiàn)特征的二次融合,將相同大小的特征圖與上采樣結(jié)構(gòu)的特征圖進行融合,最后取52×52、26×26和13×13大小的特征圖生成最終的三種大小的檢測框進行目標檢測。
圖5 改進的YOLO特征融合層
為降低特征融合層的參數(shù)量,在特征融合層中的所有卷積操作都使用DWConv深度可分離卷積操作代替?zhèn)鹘y(tǒng)卷積操作。具體操作在上述網(wǎng)絡結(jié)構(gòu)圖中已經(jīng)展示。相比于原始結(jié)構(gòu)的上采樣過程與特征提取網(wǎng)絡的特征進行一次融合后卷積,文中的特征融合網(wǎng)絡會增加一路從特征提取網(wǎng)絡中的stride=2的深度可分離卷積構(gòu)成的降采樣鏈路,進行兩次的特征融合,相當于將原本富含位置信息的低層特征層信息進行了二次傳輸。使用深度可分離卷積既保證了信息的有效傳輸,又使得整個改進后的網(wǎng)絡結(jié)構(gòu)輕量化。為表述方便,在下文中使用improved yolo代表本節(jié)的特征融合算法方案。
由于目前并未有專門針對垃圾目標檢測的數(shù)據(jù)集,所以筆者制作了較為通用的垃圾檢測數(shù)據(jù)集??紤]到人力和時間成本,設置了6類常見垃圾種類,分別為瓦楞紙(cardboard)、塑料瓶(bottle)、紡織物品(cloth)、金屬罐頭(metal can)、玻璃材料(glass)和廢棄電池(battery)。通過網(wǎng)絡爬蟲技術在各大網(wǎng)站上下載了約2萬4千張圖片,每種4千張,經(jīng)過對圖片進行分辨率、目標占比以及清晰度的篩選,每個種類篩選出800張左右。另外通過手機拍攝生活垃圾照片作為數(shù)據(jù)集的補充,總數(shù)據(jù)集每類約1 000張,部分圖片會出現(xiàn)多種垃圾,總訓練集5 899張。將上述數(shù)據(jù)集通過LabelImg完成圖片標注工作,存儲為xml格式文件。圖6為數(shù)據(jù)集中的部分圖片。
圖6 數(shù)據(jù)集樣本
文中所使用的深度學習框架為Pytorch1.1.1,實驗設備為win10系統(tǒng),GPU為GTX1080ti,主機內(nèi)存為32 G,所使用的神經(jīng)網(wǎng)絡加速庫為CUDNN7.3,CUDA10.0。
由于2019年華為云舉辦過基于ModelArt平臺的垃圾分類競賽,公開了經(jīng)過篩選的垃圾分類數(shù)據(jù)集,共計19 459張43個類別,文中的特征提取網(wǎng)絡使用遷移學習,在該分類數(shù)據(jù)集上進行預訓練,使用預訓練后的權重文件初始化特征提取網(wǎng)絡。使用自制的垃圾目標檢測數(shù)據(jù)集,將85%的數(shù)據(jù)集作為訓練集以batchsize為8進行訓練,另5%作為測試集,10%作為驗證集。訓練初始學習率為0.000 1,到第90個訓練周期學習率降為0.000 05,在第150個epoch終止訓練,模型在140個周期左右測試集的平均精度均值達到峰值。
評價指標使用目標檢測的通用評價指標平均精度均值mAP(mean average precision),該指標表示多個類別的平均精度的均值,即所有AP的平均值。AP指單個垃圾類別的平均精度,文中使用的AP默認為AP,即預測框與ground truth的IOU在大于50%前提下的單類別平均精度。
(3)
公式(3)表示召回率的計算方式,其中TP表示模型將垃圾目標檢測為正確的類別,F(xiàn)P表示模型將非垃圾目標檢測成垃圾目標,F(xiàn)N表示誤把垃圾目標檢測為錯誤類別或未檢測到垃圾目標的情況。
單類別平均精度AP數(shù)值如圖7所示:平均精度最高的類別為bottle,在文中的數(shù)據(jù)集下達到97.7%,其余從高到低依次為cardboard(95.4%),battery(89.1%),metal can(87.9%),cloth(82.7%),glass(81.3%)。將Ghost-YOLO網(wǎng)絡與原YOLOv3以及YOLOv2網(wǎng)絡進行比較,這兩個網(wǎng)絡的主干網(wǎng)絡均使用同樣的方式在垃圾分類數(shù)據(jù)集下進行預訓練。文中網(wǎng)絡對每類垃圾的平均精度均值均優(yōu)于原YOLOv3網(wǎng)絡,YOLOv3的mAP為86.2%, YOLOv2的mAP為81.1%,文中網(wǎng)絡的mAP為89.02%。
圖7 不同網(wǎng)絡模型各類別垃圾檢測結(jié)果對比
圖8為上述三種網(wǎng)絡的檢測效果對比,通過對特征融合層的改進,增加了底層特征信息的二次融合,使得檢測層的位置信息更加豐富,改進后的網(wǎng)絡檢測框的回歸更加精確。另外對小物體的檢測也更加準確,YOLOv2算法對于所占像素較少的小目標檢測性能較差,文中網(wǎng)絡可以較好地檢測到復雜背景下的小物體。
圖8 不同網(wǎng)絡檢測效果比較
由于文中的垃圾目標檢測數(shù)據(jù)集是自制的,將Ghost-YOLO算法與目前公認的目標檢測算法進行網(wǎng)絡性能的對比。
表1為YOLO系列算法與更換了不同特征提取網(wǎng)絡以及改進YOLO層在同一訓練條件下對文中Garbage數(shù)據(jù)集進行訓練的結(jié)果對比。實驗中各特征提取網(wǎng)絡的權重初始化方式均為在同一垃圾分類數(shù)據(jù)集下的預訓練權重。表中的網(wǎng)絡結(jié)構(gòu)MobilenetV3也是將圖片resize到416×416大小。
表1 不同主干網(wǎng)絡下檢測模型與改進yolo層網(wǎng)絡結(jié)構(gòu)性能對比
由表1可見,Ghost-YOLO垃圾檢測算法在文中數(shù)據(jù)集上的mAP達到89.02%,高于YOLO-v3的86.20%和其他網(wǎng)絡。召回率達到79.02%,模型大小為9.5 MB,遠小于YOLOv3的235.1 MB。由于Ghost Model所使用的cheap operations,計算量僅為原YOLOv3的7.14%。同時,文中改進的improved yolo提升了1%~2%左右的mAP。
表2為同一主干網(wǎng)絡在添加了不同策略在文中數(shù)據(jù)集上的消融實驗。
表2 不同模塊的性能對比實驗
由表2可知,若只使用遷移學習的Ghostnet加原yolo特征融合網(wǎng)絡,算法mAP只有82.32%。若使用遷移學習可以使網(wǎng)絡mAP提高到87.3%。若使用improved yolo檢測準確率可以提高至88.73%。將兩個策略同時使用將得到89.02%的mAP。因此,提出的Ghost-yolo算法在Garbage數(shù)據(jù)集上可以在一定程度上提高算法的平均精度均值。
另外對比YOLOv3網(wǎng)絡和Ghost-yolo網(wǎng)絡的圖片處理速度,在GPU:GTX1080Ti的硬件條件下,文中算法達到26 f/s,相比于YOLOv3的20 f/s稍快。在CPU: i7-4790的硬件條件下,文中算法達到3.2 f/s,較快于YOLOv3的2 f/s,處理速度基本可以滿足實時檢測的需求。
基于YOLOv3算法提出了一種Ghost-yolo垃圾分類目標檢測算法,通過Ghost Model使得冗余特征圖以更低的計算量獲得,大大降低了算法的參數(shù)量并保持較高的準確率。通過改進的yolo層能夠較好地增強網(wǎng)絡對小目標物體的檢測以及檢測框的回歸精確度,mAP達到89.02%。該結(jié)構(gòu)充分利用了特征層級,使用自上而下的路徑增強以及側(cè)向連接,為垃圾目標的檢測提供了更加豐富有利的特征,且網(wǎng)絡所占用內(nèi)存空間較小,計算量較小,適合在低功耗邊緣設備上運行。后續(xù)工作需要進一步擴充數(shù)據(jù)集,使其能夠檢測更多類別的垃圾目標,并優(yōu)化算法,進一步提升檢測的準確率。