錢昱成 符水波
(寧波市鎮海蛟川書院 浙江省寧波市 315201)
隨著人民生活水平的不斷提高,我國的垃圾產生量逐年急劇增加,由此帶來的環境污染,資源浪費等問題不斷突出,亟待解決。遵循減量化、資源化、無害化的原則,實施生活垃圾分類,可以有效改善城鄉環境,促進資源回收利用,加快“兩型社會”建設,提高新型城鎮化質量和生態文明建設水平。在政策制定及社會環境驅動下,根據實際特點,采取不同分類及收運方法,有效解決現代城市生活垃圾混合清運單一模式,提高城市生活資源化及無害化水平,是未來發展的主旋律。隨著環保進程的推進,如何將垃圾進行快速準確分類是當下實現環保目標首要考慮的問題[1,2]。上海市生活垃圾條例推行至今,市容建設與環境的保護顯然取得較大成就[3]。但在目前大部分城市要求居民定時定點投放,對城市居民的生活造成極大不便。時間上的強制性使居民無法自由支配投遞行為,而在垃圾投擲點的設定上,位置的選擇與數量的安排,可能使居民需要行走比之前更多的路程進行投放。大部分居民易對垃圾分類錯誤,這就要求大量的管理人員投入,運行效率低下,同時引進的智能垃圾桶,雖然在一定程度上緩解了投放壓力,但目前完全智能化的設備還只是理想化的,不能適應當下的實際情形,造成了很大的資源浪費問題[4,5]。如何在復雜環境下提高視覺分類的準確度,垃圾是商品的變異體,在居民投放垃圾時,每個類別的垃圾是不完整、不規則的,在實際情況中數據集的獲取和模型識別結果都是非理想化的,這就造成了完全依賴人工智能技術在實際應用中是有很大困難的。
針對以上問題,本文基于SSD網絡研究了城市生活垃圾分類,在復雜場景下保證檢測準確率的同時,實現多尺度特征圖預測,基于Pytorch框架,進行了垃圾分類檢測準確率測試。
SSD框架是當下主流的目標檢測框架之一,是一種one-stage的通用物體檢測算法。該算法基于前饋神經網絡,在網絡接收到圖片后,首先會生成一系列默認固定尺寸大小的邊界框,根據生成的檢測框對框內物體進行檢測分類,給與置信度評分。整個網絡的訓練不斷的匹配真實框,以達到最好的識別效果,在最后檢測的框中使用非極大值抑制方法,得到最終的預測結果[6]。該算法主要由兩部分構成,第一部分是基于VGG16的特征提取網路,第二部分將VGG16中的兩個全連接層(FC6,FC7)改成了卷積層Conv6,Conv7,同時增加了卷積Conv8、Conv9、Conv10、Conv11共4個特征層,從而實現在不同特征層的預測。訓練中每張圖片送進網絡后獲得多個特征圖(feature map),對于正樣本訓練來說,需要先將先驗框(prior box)與真實標注框(ground truth box)做匹配,當預測框與真實標注框重疊的比值大于閾值0.5時,該目標為正樣本,通過閾值分類正負樣本,使正負樣本按3:1的比例參與網絡訓練。匹配成功說明這個先驗框所包含的是目標物體,但離完整目標的真實標注框不能完全匹配,訓練的目的是保證先驗框分類置信度的同時,將先驗框盡可能回歸到真實標注框。
為更好的適應解決垃圾分類問題,對該框架做出相應的修改,以提高檢測精確度。其主要思路就是均勻地在圖片上不同位置進行密集抽樣,抽樣時可以采用不同尺度和長寬比,然后經過特征提取網絡后直接進行分類和回歸。在特征提取過程中使用應用于要素圖的小卷積濾波器來預測固定的默認邊界框的類別得分和框偏移,從不同尺度的特征圖中快速檢測不同尺度的準確度,并通過縱橫比明確區分預測,即使在低分辨率輸入圖像上,這些設計特征也可實現端到端訓練和高精度,從而進一步提高速度與精度之間的權衡。首先考慮到圖片數據的采集和應用初始時很大程度上是不適應網絡輸入和訓練的,采用圖像調整的方法對送入網絡的圖片進行重塑,另外考慮到圖像數據可能是不完整、不規則的、甚至是不清晰的。基于對該問題的分析,采用對圖像數據進行增強的一些操作,包括圖像的等比填充縮放裁剪,水平翻轉、高斯噪聲等方法。先將原始圖像以最大邊為基準做等比縮放,不足的地方填充0,這里縮放后的邊是最終輸入邊長的256/224倍,然后在進行剪切,輸入模型的圖像數據大小為300*300。在特征提取階段采用resnet101網絡作為基礎主干網絡,在垃圾識別算法中加入基于特征金字塔(Pyramidal Feature Hierarchy)的檢測方式,特征層從低到高,其感受野由小到大,不同特征層用于檢測不同尺寸的物體,即在不同感受野的特征圖上進行物體預測。在n個特征圖進行預測時每個特征圖先驗框的尺寸(scale)大小是不一樣的,最低層的scale=0.2,最高層的scale=0.95,其他層的計算公式如下:

在n個特征層得到8732個先驗框的預測結果,然而大部分預測結果是無用的,需要對這些預測結果進行篩選:
(1)對于某個類別,將分類預測的<置信度閾值的框刪除;
(2)將該類別篩選后的框按照置信度降序排序;
(3)對篩選后的框采用非極大值抑制(NMS)。
模型損失函數為多任務損失函數,包含了分類損失和定位損失:

分類損失為:

定位損失為:

如圖1為基于SSD算法的垃圾分類檢測系統的架構圖,首先通過裝載在垃圾桶上的攝像頭對所投放垃圾進行圖像的采集,將采集到的圖像使用OpenCV算法進行預處理,之后送入SSD框架進行識別,得到識別結果后判斷此次垃圾投放是否正確,若正確則投放完成,否則提示投放者重新投放。

圖1:系統架構圖
實驗使用的操作系統環境為Ubuntu16.04,選擇Pytorch作為深度學習框架。該框架語法簡便,開發環境容易搭建。封裝多個神經網絡模塊,能夠快速搭建網絡。做到CPU與GPU資源切換。顯卡型號為 Nvidia GTX2080Ti 11G,實驗基于GPU運行,開發工具為PyCharm,使用OpenCV處理圖片。
訓練模型所采用數據集使用開源的垃圾分類相關圖像和真實場景下的垃圾分類數據圖像。考慮到現實場景中的垃圾分類圖像與開源數據集的圖像有所差異,為了更好的訓練網絡,滿足現實場景中垃圾分類的要求,我們使用攝像頭在小區的投放站點采集一部分實時數據用于構成訓練集和測試集,由于SSD網絡接受圖像大小尺寸是固定的,因此為了保證在網絡訓練中小目標物體也能得到很好的訓練,圖像的分辨率沒有設置的很高。圖像數據的格式為JPG。獲取到的圖像使用開源工具LabelImage軟件進行人工標注,數據集的格式為PASCAL VOC,每個圖像對應一個XML文件。
為了驗證模型是否有效,通過在57種垃圾類別共30000張圖像上訓練垃圾分類模型,3500張圖像用于測試,最終所有類別均值平均精度(mAP)為75.45%,表1為測試的部分類別平均精度(AP)數據。

表1:部分類別平均精度(AP)數據
將得到的SSD模型應用到實際生活中,通過垃圾桶上攝像頭采集垃圾投放圖像,將圖像中垃圾進行識別以判斷投放垃圾是否符合垃圾分類標準,效果如圖2所示。

圖2:垃圾目標檢測
隨著社會的快速發展,環境惡化問題日益突出,而垃圾分類也成為人們對環境最直接的影響。本文在垃圾分類中應用SSD算法,減輕定點定時投放帶來的人力資源消耗,通過實驗以及實際應用證明了該算法在確認人們垃圾分類是否投放正確上具有可行性,模型具有高準確率與魯棒性。但是,垃圾中不乏有更小的目標難以識別,所以,將來有必要在小目標檢測上進一步對算法進行優化,從社會發展來看,基于人工智能算法的垃圾分類檢測系統會被廣泛使用。