劉旭瑤,曾天凱,戴嘉慶,張凌濤
(中南林業科技大學 計算機與信息工程學院,湖南 長沙 410004)
垃圾分類是對傳統垃圾收集和處理方法的改革,科學有效地對垃圾進行處理可以挖掘垃圾存在的潛在價值,從而達到將垃圾變廢為寶和保護環境的目的。現階段的垃圾分類主要面臨以下幾個關鍵問題:(1)人們的垃圾分類意識薄弱,長期養成的垃圾混裝的習慣難以改變。(2)垃圾種類繁多,人工分類依賴于對垃圾類別的主觀判斷,準確率不高且效率低下[1]。因此,為了進一步提高垃圾分類的準確率和效率,研究一種有效的垃圾自動分類方法具有較高的現實意義。現有研究主要存在2個問題:(1)傳統的垃圾桶結構簡單,只是充當了垃圾的容器。(2)垃圾分類的準確率不高。
為了解決傳統垃圾桶結構簡單所帶來的問題,張河等[2]基于51單片機設計了智能垃圾桶系統,具有人體檢測自動開蓋和超重預警的功能。但是這只局限于垃圾桶的使用功能,并不具備分類的功能。
計算機視覺的出現為垃圾分類提供了新的思路。近年來,深度學習在圖像識別與分類、目標檢測等領域都體現了一定的優勢,這也為垃圾分類提供了新的思路。李丕兵等[3]基于Inception-V3模型設計了垃圾分類系統,具有較好的分類效果。但是垃圾種類不夠豐富,無法滿足現有的更復雜的垃圾類型。盧淑怡等[1]運用LeNet-5模型設計了“Y”型的垃圾桶,實現了全自動化的垃圾分類,但是垃圾分類的準確率仍需要進一步提高。
考慮到智能分類垃圾桶需要全天候保持工作狀態,隨時準備對人們投入的垃圾進行識別和分類,需要在不降低垃圾分類準確率的基礎上進一步降低功耗和減少延時,確保數據傳輸的安全性和隱私性,開展了以下幾方面研究:
(1)提出了全自動垃圾分類和投放的垃圾桶結構。本研究以先識別、后自動分類回收垃圾為核心思想,設計了由3個模塊構成的智能分類垃圾桶:垃圾圖像識別分類模塊、垃圾投放模塊和監測模塊。解決了傳統的垃圾桶結構較為單一,無法實現自動化分類和自主投放的問題。
(2)提出了基于TinyML輕量化邊緣側處理。該將改進的MobileNetv2模型基于TinyML技術部署在Arduino板上。該設計可以讓智能分類垃圾桶的功耗更低,且識別時間較短,準確率較高。
智能分類垃圾桶主要分為3個模塊:垃圾圖像識別分類模塊,垃圾投放模塊和監測模塊。總體結構如圖1所示,各模塊的功能和實現方法如下。

圖1 總體結構圖
垃圾圖像識別分類模塊由熱釋電紅外傳感器、Arduino和攝像頭組成。當人靠近智能分類垃圾桶時,熱釋電紅外傳感器可以檢測到人體發出的紅外線信號,將其轉換為電信號后傳遞給Arduino。Arduino接收到觸發信號后開啟攝像頭,當垃圾被投入后對其進行拍攝。采用OpenCV對垃圾圖像進行預處理來提取目標垃圾的位置及其特征后,將其送入訓練好的模型中進行分類。
垃圾投放模塊包括STM32、L298N電機驅動模塊、大扭矩編碼減速電機和SG90舵機。圖像識別分類程序運行結束后利用Arduino與STM32進行串口通信,將生成的值傳遞給STM32。STM32接收信息并向電機發出指令,電機帶動傳送帶轉動使盛有垃圾的容器到達固定位置后,STM32繼續向舵機發出指令來打開容器底部的擋板,將垃圾投入到相應種類的垃圾桶中。
監測模塊由垃圾溢滿監測和異味監測兩部分組成。垃圾桶桶口處的HC-SR04超聲波測距監測模塊用于溢滿監測。當垃圾未發生溢滿時,HC-SR04發出超聲波,遇到障礙物則立刻返回,此時測得的實際距離是垃圾桶的內壁直徑;當垃圾發生溢滿時,測得的實際距離是HC-SR04與垃圾之間的距離,從而判斷出發生溢滿。垃圾桶內的MQ-135異味傳感器和臭氧發生模塊用于異味監測。當異味傳感器檢測到并且達到異味傳感器所設置的閾值時,就向Arduino發出信號,由Arduino供電開啟臭氧發生模塊消除異味,當氣味水平恢復到閾值以下則斷電關閉臭氧發生模塊。
垃圾圖像識別分類模塊是系統中的核心部分。該部分將計算機視覺與深度學習相結合,采用OpenCV對垃圾圖像進行處理,運用背景差分算法,將待檢測目標垃圾截出,供后續深度學習的使用。采用優化的MobileNetV2模型對垃圾圖像進行分類,以同時達到較高準確度和低延時的目的。
(1)目標垃圾定位
采用OpenCV實現背景差分算法,先通過cvt-Color函數將采集到的三通道RGB圖像轉換成單通道的灰度圖像。為了減少垃圾桶內背景光照帶來的誤差,通過threshold函數對已有灰度圖像進行二值化處理,再將含有待識別目標的二值化圖像與二值化背景圖像進行相減,實現背景差分。
(2)目標垃圾特征提取
為了確保檢測的準確度,通過morphologyEx函數調用MORPH_CLOSE閉運算的接口,將背景差分結果中大面積的白色區域連通,去除小面積的白色噪點,增強圖像特征。最后,通過minAreaRect函數從閉運算的結果圖像中獲取最小包圍矩形框,根據矩形框坐標,在原圖中設置感興趣區域,將待檢測目標截出,供后續深度學習使用。實現效果如圖2所示。

圖2 算法實現效果
該方法不僅能夠在識別過程中精準定位待識別目標,而且可以實現在短時間內從大量的圖片信息中自動截取樣本圖片,簡化了后續深度學習獲取樣本的過程。
在對輸入的垃圾圖像進行處理之后,選取MobileNetV2作為基礎神經網絡模型對垃圾進行分類。為了滿足智能分類垃圾桶的低延時和高分類準確率的需求,我們又對MobileNetV2進行了一定的優化。
MobileNetv2作為輕量級網絡,在移動端和嵌入式設備上具有較好的移植性。對模型架構進行了兩處修改:減少Bottleneck層和添加擠壓激勵注意力機制(SE,Squeeze-and-Excitation Networks)。首先,移除了部分網絡層,以減少不必要的計算開支,減少網絡層后的結構(表1)。Input表示每一層輸入的特征圖尺寸大小,t為Bottleneck內部升維的倍數,c為通道數,n為Bottleneck重復的次數,s為步長;其次,在每一個Bottleneck層后面都添加了SE模塊,在適度增加模型參數量的基礎上來提高垃圾分類的準確性,結構如圖3所示。經過實驗驗證發現,改進后的模型并沒有提高明顯的延遲成本。通過上述修改,得到了一個改進的MobileNetV2模型,該模型識別準確率較高,且模型的尺寸更小,計算時間更短。

圖3 Bottleneck

表1 改進MobileNetv2結構
與傳統的機器學習不同,TinyML是在嵌入式或移動設備中運用人工智能,并且要求在微控制器上以低于1 mW的功耗運行神經網絡模型。目前,許多數據處理和機器學習算法都建立在云端,但是云計算的響應速度和可靠性又非常依賴于網絡速度和負載。當物聯網設備收集到了大量數據和網絡設備運行緩慢同時發生時,通常會產生很高的計算負擔。而TinyML卻可以通過特定的轉換器將訓練好的模型部署到微控制器上執行邊緣計算,擺脫了原先的依賴遠程處理。由云計算轉為邊緣計算的工作模式體現了很多優勢,這為物聯網設備提供了更多的獨立性,使其更加智能化。
(1)搭建好優化的MobileNetV2網絡模型,將數據集送入模型進行本地或云端訓練后保存。
(2)修改模型以創建一個表示形式更加緊湊的模型。采用通道剪枝的方法將網絡模型中重要程度低的連接通道進行修剪,壓縮模型參數,加速模型推理。
(3)將剪枝后的模型量化成與嵌入式設備架構兼容的格式,在小幅度降低準確率的情況下進一步減小并優化模型的尺寸。
(4)將模型轉換成二進制文件。
(5)部署二進制文件到微控制器Arduino上。
數據的采集是垃圾圖像分類過程不可或缺的部分,本研究的數據集來源于kaggle的開源數據集Garbage Classification(12 classes),經篩選后最后留下10915副數據集圖像,均采用jpg的格式保存。
處理器:Intel(R)Core(TM)i5-8265U CPU@1.60GHz;顯卡:NVIDIA GeForce MX250;系統內存:8Gb。軟件環境:Cudatoolkit 10.2;TensorFlow;Python 3.8.12。操作系統:Windows10。統一輸入的圖像大小為224×224×3。將數據集中10915幅圖像以7∶2∶1的比例分別劃分給訓練集、驗證集和測試集。
本設計的智能分類垃圾桶可以實現較為精確和快速的預測結果,從而為垃圾分類做出正確決策。圖4為優化的MobileNetv2在訓練和測試的過程中得到的準確率曲線以及損失曲線。圖5為智能分類垃圾桶的實物圖。為了驗證模型的有效性,樣本識別分類的準確率見表2。

圖4 準確率和損失曲線

表2 各類垃圾分類準確率

圖5 智能分類垃圾桶實物圖
針對垃圾分類任務日趨嚴峻的現狀,提出了一種基于TinyML輕量化邊緣側處理的智能分類垃圾桶。首先設計了一種新的全自動垃圾分類和投放的垃圾桶結構,由垃圾圖像識別分類模塊、垃圾投放模塊和監測模塊構成,實現垃圾的全自動分類和投放。其次為了提高垃圾分類的準確率和降低延時,提出了基于邊緣計算的TInyML云邊協同框架,將改進的MobileNetv2模型基于TinyML技術部署在Arduino板上,實驗證明改進后的模型不僅具有較好的額垃圾分類準確率,且功耗更低,延時更短。
本研究目前仍然存在一定的不足,需要進一步收集其他常見類型的垃圾來擴充數據集,以更好地適應社會和人們日常生活的需要。