劉旭瑤,曾天凱,戴嘉慶,張凌濤
(中南林業(yè)科技大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖南 長(zhǎng)沙 410004)
垃圾分類是對(duì)傳統(tǒng)垃圾收集和處理方法的改革,科學(xué)有效地對(duì)垃圾進(jìn)行處理可以挖掘垃圾存在的潛在價(jià)值,從而達(dá)到將垃圾變廢為寶和保護(hù)環(huán)境的目的。現(xiàn)階段的垃圾分類主要面臨以下幾個(gè)關(guān)鍵問題:(1)人們的垃圾分類意識(shí)薄弱,長(zhǎng)期養(yǎng)成的垃圾混裝的習(xí)慣難以改變。(2)垃圾種類繁多,人工分類依賴于對(duì)垃圾類別的主觀判斷,準(zhǔn)確率不高且效率低下[1]。因此,為了進(jìn)一步提高垃圾分類的準(zhǔn)確率和效率,研究一種有效的垃圾自動(dòng)分類方法具有較高的現(xiàn)實(shí)意義?,F(xiàn)有研究主要存在2個(gè)問題:(1)傳統(tǒng)的垃圾桶結(jié)構(gòu)簡(jiǎn)單,只是充當(dāng)了垃圾的容器。(2)垃圾分類的準(zhǔn)確率不高。
為了解決傳統(tǒng)垃圾桶結(jié)構(gòu)簡(jiǎn)單所帶來(lái)的問題,張河等[2]基于51單片機(jī)設(shè)計(jì)了智能垃圾桶系統(tǒng),具有人體檢測(cè)自動(dòng)開蓋和超重預(yù)警的功能。但是這只局限于垃圾桶的使用功能,并不具備分類的功能。
計(jì)算機(jī)視覺的出現(xiàn)為垃圾分類提供了新的思路。近年來(lái),深度學(xué)習(xí)在圖像識(shí)別與分類、目標(biāo)檢測(cè)等領(lǐng)域都體現(xiàn)了一定的優(yōu)勢(shì),這也為垃圾分類提供了新的思路。李丕兵等[3]基于Inception-V3模型設(shè)計(jì)了垃圾分類系統(tǒng),具有較好的分類效果。但是垃圾種類不夠豐富,無(wú)法滿足現(xiàn)有的更復(fù)雜的垃圾類型。盧淑怡等[1]運(yùn)用LeNet-5模型設(shè)計(jì)了“Y”型的垃圾桶,實(shí)現(xiàn)了全自動(dòng)化的垃圾分類,但是垃圾分類的準(zhǔn)確率仍需要進(jìn)一步提高。
考慮到智能分類垃圾桶需要全天候保持工作狀態(tài),隨時(shí)準(zhǔn)備對(duì)人們投入的垃圾進(jìn)行識(shí)別和分類,需要在不降低垃圾分類準(zhǔn)確率的基礎(chǔ)上進(jìn)一步降低功耗和減少延時(shí),確保數(shù)據(jù)傳輸?shù)陌踩院碗[私性,開展了以下幾方面研究:
(1)提出了全自動(dòng)垃圾分類和投放的垃圾桶結(jié)構(gòu)。本研究以先識(shí)別、后自動(dòng)分類回收垃圾為核心思想,設(shè)計(jì)了由3個(gè)模塊構(gòu)成的智能分類垃圾桶:垃圾圖像識(shí)別分類模塊、垃圾投放模塊和監(jiān)測(cè)模塊。解決了傳統(tǒng)的垃圾桶結(jié)構(gòu)較為單一,無(wú)法實(shí)現(xiàn)自動(dòng)化分類和自主投放的問題。
(2)提出了基于TinyML輕量化邊緣側(cè)處理。該將改進(jìn)的MobileNetv2模型基于TinyML技術(shù)部署在Arduino板上。該設(shè)計(jì)可以讓智能分類垃圾桶的功耗更低,且識(shí)別時(shí)間較短,準(zhǔn)確率較高。
智能分類垃圾桶主要分為3個(gè)模塊:垃圾圖像識(shí)別分類模塊,垃圾投放模塊和監(jiān)測(cè)模塊。總體結(jié)構(gòu)如圖1所示,各模塊的功能和實(shí)現(xiàn)方法如下。
圖1 總體結(jié)構(gòu)圖
垃圾圖像識(shí)別分類模塊由熱釋電紅外傳感器、Arduino和攝像頭組成。當(dāng)人靠近智能分類垃圾桶時(shí),熱釋電紅外傳感器可以檢測(cè)到人體發(fā)出的紅外線信號(hào),將其轉(zhuǎn)換為電信號(hào)后傳遞給Arduino。Arduino接收到觸發(fā)信號(hào)后開啟攝像頭,當(dāng)垃圾被投入后對(duì)其進(jìn)行拍攝。采用OpenCV對(duì)垃圾圖像進(jìn)行預(yù)處理來(lái)提取目標(biāo)垃圾的位置及其特征后,將其送入訓(xùn)練好的模型中進(jìn)行分類。
垃圾投放模塊包括STM32、L298N電機(jī)驅(qū)動(dòng)模塊、大扭矩編碼減速電機(jī)和SG90舵機(jī)。圖像識(shí)別分類程序運(yùn)行結(jié)束后利用Arduino與STM32進(jìn)行串口通信,將生成的值傳遞給STM32。STM32接收信息并向電機(jī)發(fā)出指令,電機(jī)帶動(dòng)傳送帶轉(zhuǎn)動(dòng)使盛有垃圾的容器到達(dá)固定位置后,STM32繼續(xù)向舵機(jī)發(fā)出指令來(lái)打開容器底部的擋板,將垃圾投入到相應(yīng)種類的垃圾桶中。
監(jiān)測(cè)模塊由垃圾溢滿監(jiān)測(cè)和異味監(jiān)測(cè)兩部分組成。垃圾桶桶口處的HC-SR04超聲波測(cè)距監(jiān)測(cè)模塊用于溢滿監(jiān)測(cè)。當(dāng)垃圾未發(fā)生溢滿時(shí),HC-SR04發(fā)出超聲波,遇到障礙物則立刻返回,此時(shí)測(cè)得的實(shí)際距離是垃圾桶的內(nèi)壁直徑;當(dāng)垃圾發(fā)生溢滿時(shí),測(cè)得的實(shí)際距離是HC-SR04與垃圾之間的距離,從而判斷出發(fā)生溢滿。垃圾桶內(nèi)的MQ-135異味傳感器和臭氧發(fā)生模塊用于異味監(jiān)測(cè)。當(dāng)異味傳感器檢測(cè)到并且達(dá)到異味傳感器所設(shè)置的閾值時(shí),就向Arduino發(fā)出信號(hào),由Arduino供電開啟臭氧發(fā)生模塊消除異味,當(dāng)氣味水平恢復(fù)到閾值以下則斷電關(guān)閉臭氧發(fā)生模塊。
垃圾圖像識(shí)別分類模塊是系統(tǒng)中的核心部分。該部分將計(jì)算機(jī)視覺與深度學(xué)習(xí)相結(jié)合,采用OpenCV對(duì)垃圾圖像進(jìn)行處理,運(yùn)用背景差分算法,將待檢測(cè)目標(biāo)垃圾截出,供后續(xù)深度學(xué)習(xí)的使用。采用優(yōu)化的MobileNetV2模型對(duì)垃圾圖像進(jìn)行分類,以同時(shí)達(dá)到較高準(zhǔn)確度和低延時(shí)的目的。
(1)目標(biāo)垃圾定位
采用OpenCV實(shí)現(xiàn)背景差分算法,先通過cvt-Color函數(shù)將采集到的三通道RGB圖像轉(zhuǎn)換成單通道的灰度圖像。為了減少垃圾桶內(nèi)背景光照帶來(lái)的誤差,通過threshold函數(shù)對(duì)已有灰度圖像進(jìn)行二值化處理,再將含有待識(shí)別目標(biāo)的二值化圖像與二值化背景圖像進(jìn)行相減,實(shí)現(xiàn)背景差分。
(2)目標(biāo)垃圾特征提取
為了確保檢測(cè)的準(zhǔn)確度,通過morphologyEx函數(shù)調(diào)用MORPH_CLOSE閉運(yùn)算的接口,將背景差分結(jié)果中大面積的白色區(qū)域連通,去除小面積的白色噪點(diǎn),增強(qiáng)圖像特征。最后,通過minAreaRect函數(shù)從閉運(yùn)算的結(jié)果圖像中獲取最小包圍矩形框,根據(jù)矩形框坐標(biāo),在原圖中設(shè)置感興趣區(qū)域,將待檢測(cè)目標(biāo)截出,供后續(xù)深度學(xué)習(xí)使用。實(shí)現(xiàn)效果如圖2所示。
圖2 算法實(shí)現(xiàn)效果
該方法不僅能夠在識(shí)別過程中精準(zhǔn)定位待識(shí)別目標(biāo),而且可以實(shí)現(xiàn)在短時(shí)間內(nèi)從大量的圖片信息中自動(dòng)截取樣本圖片,簡(jiǎn)化了后續(xù)深度學(xué)習(xí)獲取樣本的過程。
在對(duì)輸入的垃圾圖像進(jìn)行處理之后,選取MobileNetV2作為基礎(chǔ)神經(jīng)網(wǎng)絡(luò)模型對(duì)垃圾進(jìn)行分類。為了滿足智能分類垃圾桶的低延時(shí)和高分類準(zhǔn)確率的需求,我們又對(duì)MobileNetV2進(jìn)行了一定的優(yōu)化。
MobileNetv2作為輕量級(jí)網(wǎng)絡(luò),在移動(dòng)端和嵌入式設(shè)備上具有較好的移植性。對(duì)模型架構(gòu)進(jìn)行了兩處修改:減少Bottleneck層和添加擠壓激勵(lì)注意力機(jī)制(SE,Squeeze-and-Excitation Networks)。首先,移除了部分網(wǎng)絡(luò)層,以減少不必要的計(jì)算開支,減少網(wǎng)絡(luò)層后的結(jié)構(gòu)(表1)。Input表示每一層輸入的特征圖尺寸大小,t為Bottleneck內(nèi)部升維的倍數(shù),c為通道數(shù),n為Bottleneck重復(fù)的次數(shù),s為步長(zhǎng);其次,在每一個(gè)Bottleneck層后面都添加了SE模塊,在適度增加模型參數(shù)量的基礎(chǔ)上來(lái)提高垃圾分類的準(zhǔn)確性,結(jié)構(gòu)如圖3所示。經(jīng)過實(shí)驗(yàn)驗(yàn)證發(fā)現(xiàn),改進(jìn)后的模型并沒有提高明顯的延遲成本。通過上述修改,得到了一個(gè)改進(jìn)的MobileNetV2模型,該模型識(shí)別準(zhǔn)確率較高,且模型的尺寸更小,計(jì)算時(shí)間更短。
圖3 Bottleneck
表1 改進(jìn)MobileNetv2結(jié)構(gòu)
與傳統(tǒng)的機(jī)器學(xué)習(xí)不同,TinyML是在嵌入式或移動(dòng)設(shè)備中運(yùn)用人工智能,并且要求在微控制器上以低于1 mW的功耗運(yùn)行神經(jīng)網(wǎng)絡(luò)模型。目前,許多數(shù)據(jù)處理和機(jī)器學(xué)習(xí)算法都建立在云端,但是云計(jì)算的響應(yīng)速度和可靠性又非常依賴于網(wǎng)絡(luò)速度和負(fù)載。當(dāng)物聯(lián)網(wǎng)設(shè)備收集到了大量數(shù)據(jù)和網(wǎng)絡(luò)設(shè)備運(yùn)行緩慢同時(shí)發(fā)生時(shí),通常會(huì)產(chǎn)生很高的計(jì)算負(fù)擔(dān)。而TinyML卻可以通過特定的轉(zhuǎn)換器將訓(xùn)練好的模型部署到微控制器上執(zhí)行邊緣計(jì)算,擺脫了原先的依賴遠(yuǎn)程處理。由云計(jì)算轉(zhuǎn)為邊緣計(jì)算的工作模式體現(xiàn)了很多優(yōu)勢(shì),這為物聯(lián)網(wǎng)設(shè)備提供了更多的獨(dú)立性,使其更加智能化。
(1)搭建好優(yōu)化的MobileNetV2網(wǎng)絡(luò)模型,將數(shù)據(jù)集送入模型進(jìn)行本地或云端訓(xùn)練后保存。
(2)修改模型以創(chuàng)建一個(gè)表示形式更加緊湊的模型。采用通道剪枝的方法將網(wǎng)絡(luò)模型中重要程度低的連接通道進(jìn)行修剪,壓縮模型參數(shù),加速模型推理。
(3)將剪枝后的模型量化成與嵌入式設(shè)備架構(gòu)兼容的格式,在小幅度降低準(zhǔn)確率的情況下進(jìn)一步減小并優(yōu)化模型的尺寸。
(4)將模型轉(zhuǎn)換成二進(jìn)制文件。
(5)部署二進(jìn)制文件到微控制器Arduino上。
數(shù)據(jù)的采集是垃圾圖像分類過程不可或缺的部分,本研究的數(shù)據(jù)集來(lái)源于kaggle的開源數(shù)據(jù)集Garbage Classification(12 classes),經(jīng)篩選后最后留下10915副數(shù)據(jù)集圖像,均采用jpg的格式保存。
處理器:Intel(R)Core(TM)i5-8265U CPU@1.60GHz;顯卡:NVIDIA GeForce MX250;系統(tǒng)內(nèi)存:8Gb。軟件環(huán)境:Cudatoolkit 10.2;TensorFlow;Python 3.8.12。操作系統(tǒng):Windows10。統(tǒng)一輸入的圖像大小為224×224×3。將數(shù)據(jù)集中10915幅圖像以7∶2∶1的比例分別劃分給訓(xùn)練集、驗(yàn)證集和測(cè)試集。
本設(shè)計(jì)的智能分類垃圾桶可以實(shí)現(xiàn)較為精確和快速的預(yù)測(cè)結(jié)果,從而為垃圾分類做出正確決策。圖4為優(yōu)化的MobileNetv2在訓(xùn)練和測(cè)試的過程中得到的準(zhǔn)確率曲線以及損失曲線。圖5為智能分類垃圾桶的實(shí)物圖。為了驗(yàn)證模型的有效性,樣本識(shí)別分類的準(zhǔn)確率見表2。
圖4 準(zhǔn)確率和損失曲線
表2 各類垃圾分類準(zhǔn)確率
圖5 智能分類垃圾桶實(shí)物圖
針對(duì)垃圾分類任務(wù)日趨嚴(yán)峻的現(xiàn)狀,提出了一種基于TinyML輕量化邊緣側(cè)處理的智能分類垃圾桶。首先設(shè)計(jì)了一種新的全自動(dòng)垃圾分類和投放的垃圾桶結(jié)構(gòu),由垃圾圖像識(shí)別分類模塊、垃圾投放模塊和監(jiān)測(cè)模塊構(gòu)成,實(shí)現(xiàn)垃圾的全自動(dòng)分類和投放。其次為了提高垃圾分類的準(zhǔn)確率和降低延時(shí),提出了基于邊緣計(jì)算的TInyML云邊協(xié)同框架,將改進(jìn)的MobileNetv2模型基于TinyML技術(shù)部署在Arduino板上,實(shí)驗(yàn)證明改進(jìn)后的模型不僅具有較好的額垃圾分類準(zhǔn)確率,且功耗更低,延時(shí)更短。
本研究目前仍然存在一定的不足,需要進(jìn)一步收集其他常見類型的垃圾來(lái)擴(kuò)充數(shù)據(jù)集,以更好地適應(yīng)社會(huì)和人們?nèi)粘I畹男枰?/p>