程 浩,陳廣鋒
(東華大學 機械工程學院, 上海 201620)
廢紙盒、塑料瓶、煙頭等是街頭隨處可見的地面垃圾。為了創(chuàng)造良好的城市面貌和整潔的地面環(huán)境,環(huán)衛(wèi)人員需要投入大量的時間去巡查并撿拾地面垃圾。因此,設計一款能夠代替環(huán)衛(wèi)工人去檢測地面垃圾的系統(tǒng)顯得尤為重要。
早在2012年,芬蘭的ZenRobotics公司就設計研發(fā)出一款可以實現(xiàn)工業(yè)垃圾分揀的機器人,現(xiàn)已在各地投入使用[1]。此外,Rad等[2]通過安裝在車輛上的圖像采集系統(tǒng),建立了一套垃圾數(shù)據(jù)集,并利用深度學習框架,對不同類型的垃圾進行識別。日本軟銀機器人控股公司開發(fā)了一款環(huán)衛(wèi)機器人Whiz[3],通過計算機視覺系統(tǒng)、激光測距儀、3D攝像頭、碰撞傳感器等聯(lián)合探測障礙物。王興朝等[4]針對家庭垃圾分類的問題,使用YOLOv3目標檢測算法,設計了一款家用智能分類垃圾桶。馬雯等[5]針對垃圾分類人工操作效率低的問題,采用Soft-NMS算法替代Faster R-CNN中的非極大值抑制算法,在自建的垃圾數(shù)據(jù)集上得到81.77%的綜合識別準確率。錢昱成等[6]將金字塔結構應用到SSD算法中,進行多尺度訓練和預測,取得了75.45%的平均準確率。王明吉等[7]在YOLOv4算法中融入K-means ++聚類算法,對采集的垃圾圖片實現(xiàn)了95.15%的識別準確率。
雖然深度學習模型在垃圾檢測領域取得了良好的效果,但對煙頭、瓶蓋等小目標地面垃圾,以及有遮擋的地面垃圾的識別精度較低。針對以上問題,本文提出一種改進的Faster R-CNN[8]目標識別網(wǎng)絡來檢測不同類別地面垃圾。其中主干網(wǎng)絡采用基于通道注意力機制[9](squeeze-and-excitation networks,SENet)的ResNet-50[10]特征提取網(wǎng)絡,并使用特征金字塔結構[11](feature pyramid network,FPN)提高模型對小目標的檢測效果。在區(qū)域建議網(wǎng)絡中重新設計了更加適配地面垃圾數(shù)據(jù)集錨框,同時使用級聯(lián)結構的檢測器,逐級提高模型對地面垃圾的定位精度和檢測準確率。最后,通過與不同的目標識別網(wǎng)絡的對比,驗證本文算法的檢測效果。
垃圾種類眾多,分類方法不勝枚舉。研究發(fā)現(xiàn),到目前為止國際上并沒有權威且公開的垃圾數(shù)據(jù)集,因此選取包含地面上常見的紙團、煙頭、易拉罐等11個類別地面垃圾圖片(共計14 378張)作為本文采集并標注的地面垃圾數(shù)據(jù)集,并按照8∶2的比例將數(shù)據(jù)集中的樣本隨機劃分為訓練集和測試集兩部分。數(shù)據(jù)集類別分布如表1所示。
表1 數(shù)據(jù)集類別分布Table 1 Dataset category distribution
本文建立的數(shù)據(jù)集包含大尺寸目標、中等尺寸目標、小尺寸目標等。拍攝場景涉及多種復雜環(huán)境,如強光照環(huán)境、雨水環(huán)境、地面凹坑環(huán)境、路面標志線環(huán)境、夜晚環(huán)境等,拍攝圖片適用于地面垃圾檢測任務,可以二次使用。部分地面垃圾樣本如圖1所示。
圖1 地面垃圾樣本示例Fig.1 Samples of ground waste
R-CNN[12]算法提出之后陸續(xù)出現(xiàn)了Fast R-CNN[13]算法、Faster R-CNN算法、Mask R-CNN[14]算法等。其中,Faster R-CNN算法主要包括4個模塊,分別為特征提取網(wǎng)絡、區(qū)域建議網(wǎng)絡[15](region proposal network,RPN)、檢測部分和預測部分。Faster R-CNN算法流程如圖2所示。
圖2 Faster R-CNN算法流程Fig.2 Flowchart of Faster R-CNN algorithm
本文改進后的Faster R-CNN網(wǎng)絡的結構圖如圖3所示。改進后網(wǎng)絡結構主要包括主干網(wǎng)絡模塊、區(qū)域建議網(wǎng)絡模塊、級聯(lián)結構的檢測和預測模塊,以及后處理模塊4個部分。
圖3 改進后的Faster R-CNN網(wǎng)絡結構Fig.3 Improved Faster R-CNN network structure
首先,將圖片輸入改進后的特征提取網(wǎng)絡中得到特征圖;其次,使用優(yōu)化后的區(qū)域建議網(wǎng)絡生成候選框,再將每個特征圖通過RoI Align(region of interest align)縮放成固定尺寸,并且輸入到級聯(lián)結構的檢測和預測模塊中;最后,將得到的待測目標類別和回歸參數(shù)采用非極大值抑制(non maximum suppression,NMS)等后處理,輸出最終的結果。
2.2.1 基于SENet的ResNet-50特征提取網(wǎng)絡
為了使ResNet-50模型可以根據(jù)輸入圖像的特征信息,自適應地重新校準各通道的特征響應,從而提升模型性能,本文在ResNet-50的殘差網(wǎng)絡中添加了SENet模塊。
SENet模塊能通過學習的方式獲取每個特征通道的重要程度,即權重。依照重要程度去提升有用特征并抑制對當前任務無用的特征。具體包括3個步驟:
1)壓縮:將空間維度的特征進行壓縮,生成一個通道描述符。即將原H×W×C大小的特征圖的每個二維特征通道通過全局平均池化變成一個實數(shù),最終得到1×1×C大小的具有全局感受野的特征圖z。計算公式如式(1)所示。
(1)
式中:u(i,j)表示特征向量u中對應(i,j)處的值;H、W、C分別表示輸入圖片的高度、寬度和通道數(shù)。
2)激勵:每個通道采用1個基于通道依賴的自選門機制來學習特定樣本的激活,有選擇地強調信息特征,并抑制無用的特征,即將特征圖z通過全連接層和激活函數(shù),以降低模型復雜度并獲得通道間的依賴關系。具體操作為先將輸出的z通過全連接層FC1把C個通道壓縮成了C/r(r為壓縮比例)個通道來降低計算量,再通過ReLU激活函數(shù)進行處理,然后通過全連接層FC2恢復C成個通道,最后通過sigmoid激活函數(shù)處理,得到由每個通道的權重組成的矩陣s,如式(2)所示。
s=σ(M2δ(M1z))
(2)
式中:M2和M1分別為用來降低維度和升高維度的兩個全連接層的權重;σ為sigmoid激活函數(shù);δ為ReLU激活函數(shù)。
激活函數(shù)計算公式分別如式(3)和(4)所示。
(3)
δ(x)=max(0,x)
(4)
3)加權重計算:將第二步輸出的權重信息s通過乘法逐通道加權到輸入特征上,將重要的特征增強,不重要的特征減弱,從而使提取的特征指向性更強。
模塊整體結構為殘差模塊、全局平均池化、全連接層、ReLU激活函數(shù)、全連接層、sigmoid激活函數(shù)、Scale權重處理部分?;赟ENet的殘差模塊網(wǎng)絡結構如圖4所示。
圖4 基于SENet的殘差模塊Fig.4 SE-Resnet module
2.2.2 基于特征金字塔結構的多尺度檢測
多尺度檢測可以使特征提取不僅是采用神經網(wǎng)絡的最后一層特征,而且從多個尺度來進行卷積網(wǎng)絡提取?;诖?將基于SENet的ResNet-50的Conv1、Conv2_X、Conv3_X、Conv4_X、Conv5_X均輸出。同時,使用特征金字塔結構對不同的特征層進行融合并且獨立地進行預測,從上到下依次輸出多個包含豐富語義信息的特征圖P5、P4、P3、P2、P1。本文對頂層的輸出P5再進行一次下采樣,得到擁有更大感受野的輸出P6,以提高大目標的檢測精度。由此構建本文改進后的Faster R-CNN的主干網(wǎng)絡結構,如圖5所示。
圖5 改進后的Faster R-CNN的主干網(wǎng)絡結構Fig.5 Improved backbone network of Faster R-CNN
區(qū)域建議網(wǎng)絡中的錨框大小和寬高比,嚴重影響候選框的質量和最終的檢測精度。本文對地面垃圾數(shù)據(jù)集進行統(tǒng)計分析后,繪制不同寬高比例的樣本數(shù)量統(tǒng)計圖,如圖6所示。根據(jù)圖6統(tǒng)計結果可知,27%的被測地面垃圾目標的寬高比例位于1.0和1.5之間,但原Faster R-CNN模型中是以3種寬高比例(0.5,1.0,2.0)和3種面積(128像素×128像素,256像素×256像素,512像素×512像素)組成一組錨框如圖7所示,并沒有1.5的寬高比,無法準確匹配地面垃圾數(shù)據(jù)集中所有檢測目標。
圖6 數(shù)據(jù)集樣本不同寬高比分布Fig.6 Aspect ratio distribution of dataset samples
圖7 Faster R-CNN模型錨框Fig.7 Anchor boxes of Faster R-CNN
本文在原Faster R-CNN的錨框生成機制上進行了兩處優(yōu)化:一是在原始3種寬高比的基礎上增加了一個寬高比1.5,以更好地適應待檢測目標的形狀特征;二是對于改進后的主干網(wǎng)絡所生成的多個特征圖,采用不同的面積尺度以適應不同大小的目標,即對于區(qū)域建議網(wǎng)絡輸出的P1部分采用16像素×16像素和32像素×32像素的兩種面積大小的錨框,對于P2部分采用32像素×32像素和64像素×64像素的兩種面積大小的錨框,依此類推。為了方便與原錨框對比,以特征圖P5中的錨框為例,如圖8所示,其中黑色部分是寬高比分別為0.5、1.0、1.5、2.0,面積為512像素×512像素的4個錨框,藍色部分是寬高比分別為0.5、1.0、1.5、2.0,面積為256像素×256像素的4個錨框。
圖8 改進錨框Fig.8 Improved anchor boxes
2.4.1 RoI Align代替RoI Pooling
RoI Pooling(region of interest pooling)在Fast R-CNN中首次被提出,沿用至Faster R-CNN,目的是將輸入圖片在主干網(wǎng)絡中生成的特征圖轉換為固定的尺寸,減少原圖直接壓縮帶來的信息損失。具體實現(xiàn)過程:首先,在輸入的原圖中得到候選框;其次,根據(jù)特征圖和原輸入圖像的縮放關系將候選框映射到原圖的對應位置,并且將映射后的區(qū)域按照輸出的寬度和高度要求(7像素×7像素的大小)劃分為相同大小的幾個部分;最后,通過最大池化操作輸出固定寬高尺寸的矩形框。在這一過程中,像素點是離散的,存在兩處誤差:一次誤差為區(qū)域建議網(wǎng)絡中生成的候選框映射回原圖時,直接向下取整造成偏差;二次誤差為對特征圖區(qū)域均分時,存在無法均分的像素點,只能近似均分,從而造成偏差,如圖9(a)所示。
圖9 RoI Pooling與RoI Align的原理Fig.9 Principles of RoI Pooling and RoI Align
本文的RoI Align使用虛擬像素的方法,即利用雙線性插值法計算非像素坐標點處的像素值,以此來避免RoI Pooling使用過程中產生的誤差,其原理圖如圖9(b)所示。
2.4.2 優(yōu)化Faster R-CNN的檢測器
Faster R-CNN屬于兩階段的目標檢測網(wǎng)絡,其中區(qū)域建議網(wǎng)絡輸出的候選框精度不高,導致無法直接使用高閾值的檢測器。
本文借鑒Cascade R-CNN[16]級聯(lián)的思想,通過設置不同的IoU(intersection over union)閾值來進一步優(yōu)化候選框(其網(wǎng)絡結構見圖3)。將主干網(wǎng)絡輸出的特征圖和區(qū)域建議網(wǎng)絡輸出的候選框作為ROI Align的輸入,待其通過第一個低閾值檢測器之后進入預測器中,再將輸出的回歸參數(shù)解碼之后得到的預測框坐標的和RoI Align結構的輸出作為下一個高閾值檢測器的輸入,最后通過預測器得到最終的目標類別和回歸參數(shù)。綜上,級聯(lián)結構可以分階段逐步提高候選框的精度和網(wǎng)絡的學習能力。
本試驗硬件平臺為Linux操作系統(tǒng)。CPU的型號為Intel(R) Xeon(R) Gold 6330 CPU,核數(shù)為14核。GPU的型號為NVIDIA GeForce RTX 3090,顯存為24 G。采用基于pyTorch實現(xiàn)的目標檢測算法,代碼運行環(huán)境為Python 3.8。
訓練過程采用帶動量的隨機梯度優(yōu)化器,初始學習率設置為0.005,每迭代3個epoch后,學習率縮減為原來的1/3,動量設置為0.9,權值衰減系數(shù)設置為0.000 5,Batch sizes設置為6,采用自動混合精度訓練,每個試驗均訓練24個epoch。
為了驗證改進算法的性能,以地面垃圾數(shù)據(jù)集為樣本,設計對比試驗對模型進行訓練和測試。
3.2.1 主干網(wǎng)絡的對比試驗
VGG-16[17]、MobileNetV2[18]、ResNet-50、ResNet-101、EffficientNet[19]、本文改進的特征提取網(wǎng)絡共6種不同的卷積神經網(wǎng)絡作為Faster R-CNN的主干網(wǎng)絡,設置6組對比試驗,如表2所示。
表2 不同主干網(wǎng)絡的對比Table 2 Comparison of different backbone
由表2可知,使用改進后的主干網(wǎng)絡搭建的Faster R-CNN網(wǎng)絡,學習能力顯著增強,檢測效果明顯提升,mAP(mean average precision)達到92.0%,與以VGG-16和Resnet-50網(wǎng)絡為主干網(wǎng)絡的Faster R-CNN網(wǎng)絡的mAP相比,分別提升了12.4個百分點和5個百分點。
3.2.2 常用目標檢測網(wǎng)絡的對比試驗
將改進之后的Faster R-CNN算法與SSD300[20]、YOLOv3+SPP[21-22]、原Faster R-CNN(VGG-16)、原Faster R-CNN(ResNet-50)進行對比,設置5組試驗,如表3所示。
表3 不同目標檢測算法的檢測平均準確率的對比Table 3 Comparison of average accuracy of different object detection algorithms %
由表3可知:本文改進后的Faster R-CNN算法的mAP相比原Faster R-CNN(以ResNet-50為主干網(wǎng)絡)算法,提高了9.6個百分點。特別是對于瓶蓋、煙頭、樹葉等小目標,提升效果明顯,均在20個百分點以上,分別為26.81個百分點、38.83個百分點、29.90個百分點。
為了直觀區(qū)分本文算法與原算法在地面垃圾數(shù)據(jù)集上的檢測效果,從測試集中隨機抽取6張圖片在相同試驗環(huán)境下進行測試對比,其中檢測框上分別是預測目標類別以及其置信度,檢測效果如圖10所示。
由圖10的對比結果可看出,優(yōu)化后的Faster R-CNN算法相較于原算法,降低了地面垃圾的漏檢和誤檢,特別是煙頭、瓶蓋等小目標以及有遮擋的目標,提升了檢測的準確率和定位精度,能夠更完整地框選出待檢測目標垃圾。同時,由于小尺寸目標在原圖中占比小,且常見的特征提取網(wǎng)絡中均有多次下采樣的操作,導致小目標的語義信息提取困難,與大尺寸、中等尺寸目標相比,檢測精度仍有所不足,所以關于小目標的檢測精度的提高依舊是一個研究重點。從整體上看,本文算法的檢測效果優(yōu)于原Faster R-CNN網(wǎng)絡,能夠更好地滿足實際應用要求。
根據(jù)地面垃圾檢測的實際需求,研究了基于深度學習的改進Faster R-CNN算法對地面垃圾的識別效果,并取得了96.6%的平均準確率,具有良好的檢測效果。具體結論如下:
(1)在主干網(wǎng)絡部分,使用基于SENet的ResNet-50結構,結合特征提取階段的淺層信息來提高煙頭、瓶蓋等小目標的檢測精度,同時使用特征金字塔結構實現(xiàn)多個輸出特征圖之間的特征融合。
(2)在區(qū)域建議網(wǎng)絡部分,對錨框重新定制,增強檢測能力,加快模型收斂。
(3)在檢測部分,用RoI Align代替RoI Pooling,避免量化誤差,同時使用級聯(lián)結構的檢測器,分兩次提高IoU的閾值,提升檢測準確率。