李美錕,楊明夏,凌濱
(東北林業大學,黑龍江哈爾濱,150040)
將訓練好的垃圾分類模型放入樹莓派;當顯示屏顯示“按下按鍵開始識別”后,按下按鍵電路中的開關,樹莓派收到按鍵信號后調用攝像頭進行拍照并調用模型處理圖像信息;處理完成后,樹莓派將通過引腳向單片機發送垃圾所屬類別的信號。單片機接收樹莓派給出的信息后,驅動步進電機對垃圾桶的托盤和擋板將垃圾分類投放。再次按下按鍵將開始下一次識別。智能垃圾桶工作流程如圖1所示。

圖1 智能垃圾桶工作過程
本設計將垃圾分成四類:可回收垃圾、其他垃圾、廚余垃圾、有害垃圾,相應的將垃圾桶分成四個區域并標號為1、2、3、4。
如圖2所示,將1區域定為初始擋板設置的位置,2區域定為圓盤開口的位置,上方步進電機控制擋板的轉動,下方步進電機控制托盤的轉動,根據垃圾所屬類別,可以將步進電機控制移動分為四種情況:

圖2 智能垃圾桶區域劃分
(1)垃圾類別在1區域正下方,下方托盤順時針旋轉90度,待垃圾下落后,電機復位。
(2)在2區域的正下方,上方步進電機逆時針轉動90度,帶動垃圾到2區域缺口上方,待垃圾自動下落后,電機復位。
(3)在3區域的正下方,下方電機逆時針旋轉90度,托盤缺口轉到3區域;上方電機逆時針旋轉180度,使垃圾轉到3區域上方自動下落,依次復位上方和下方電機。
企業為學校提供學生實習的場所,使學生在實際中接觸社會、接觸真實的工作場景,增強其工作中處理問題、解決問題的能力。
(4)在4區域的正下方,上方電機順時針旋轉90度,托盤轉到4區域;下方電機順時針旋轉180度,使托盤缺口位置轉到4區域上方,垃圾下落后,依次復位上方和下方電機。
智能垃圾桶功能的實現主要依賴樹莓派3b+,STC89C52芯片,28BYJ4型步進電機等器件。智能垃圾桶的硬件結構如3所示。

圖3 系統硬件結構圖
(1)按鍵與樹莓派的GPIO25相連,當按鍵按下時樹莓派會檢測到該引腳電平進而對垃圾進行拍照并調用垃圾分類模型進行識別。
(2)識別結束,樹莓派一方面控制顯示電路部分相應類別的LED燈亮,一方面對應的引腳會變為短暫的低電平,通知單片機垃圾所屬類別圖4、5為樹莓派與顯示部分電路結構。

圖4 樹莓派

圖5 按鍵與顯示電路
有四組共32個引腳可供使用,資源豐富,引腳輸出電壓滿足步進電機的驅動要求。
當樹莓派識別結束后,某一垃圾類別對應的引腳會變為短暫的低電平,一方面點亮小燈、另一方面便是通知單片機垃圾所屬類別。單片機收到信號后便會根據相應垃圾類別驅動步進電機控制垃圾桶的擋板與托盤將垃圾投放到對應的垃圾收納區域內。圖6為單片機部分電路圖。

圖6 單片機電路
驅動上方擋板和下方電機移動以及復位,實現垃圾分類的投放部分。本設計中,驅動電路采用高耐壓、大電流的達林頓陣列——ULN2003芯片來實現單片機對步進電機的控制。驅動電路結構如圖7所示。

圖7 步進電機驅動電路圖
垃圾分類的核心是圖像處理并分類。圖像處理,即通過訓練機器,找出相同類別物體映射到二維空間中的像素點在數值與相對位置方面的規律,進而得出該類物體的像素特征,并與其他類別物體的像素特征加以區分,最終達到區分不同類別物體的目的。
為了達到這一目的,需要卷積核、人工神經網絡這樣的工具,并通過數據集的訓練與優化,從而得到某類物體的像素特征。卷積核就是參與卷積運算的像素模塊。如圖8,它們的任務是用其特有的像素結構去提取圖片中的結構單元。當兩個及兩個以上的卷積核捆綁在一起使用時,就得到了卷積網絡的過濾器。

圖8 卷積核
經過對比現有的各神經網絡模型,準確率較高的模型是NASNetLarge與MobileNet,因MobileNet運行時所占存儲空間較小,故更適用于本設計。
(2)可分類的垃圾數據集
本數據集來源于網絡,共包括四個大類:可回收垃圾、其他垃圾、廚余垃圾、有害垃圾。
為縮短加載圖片時間,使用opencv處理圖像數據,按照8:2的比例將數據集劃分為訓練集和測試集,為解決內存問題,將訓練集與測試集圖片平均分為40組包保存,調用MobileNet的底層來預處理圖片,完成數據集構建。
使用opencv處理圖像數據,將圖片加載到MobileNet模型中進行預測并將輸出放入全連接層中訓練其權重,調用MobileNet的底層來預處理圖片。本文使用的深度可分離卷積原理如圖9所示。

圖9 深度可分離卷積
(3)模型構建程序設計
首先要使用Python調用TensorFlow的庫來構建模型的頂層,之后使用之前生成好的npy數據集來訓練模型,期間使用GPU進行加速。當40組數據訓練完模型的頂層后,將MobileNet模型的底層與訓練好的模型頂層連接起來便得到了最終的垃圾分類模型。
(4)模型優化
廣泛用于多分類情況的最終輸出層中,因為它可以將神經網絡的輸出值映射到[0,1]的區間內,且其全部輸出結果的和為1。本設計就是多分類情況,要對40種垃圾圖片進行分類,因此模型中最后一層神經元使用的激活函數便是softmax函數。
②優化器:隨機梯度下降法——深度學習中尋找最優解的方法。梯度下降法原理如圖10所示。

圖10 梯度下降示意圖
③損失函數:本設計中使用的是categorical_cros sentropy(交叉熵損失函數)。當誤差大的時候其權重更新快,當誤差小的時候,權重更新慢。
④正則化:過擬合會對測試機數據的準確率產生較大影響,出現過擬合現象。消除過擬合的方法是正則化神經網絡的權值矩陣,Dropout,這是神經網絡中最有效,最常用的正規化方法,用以防止網絡的權值出現某些偶然模式,進而消除過擬合。
本設計采用谷歌團隊依據ImageNet數據集訓練的MobileNet神經網絡作為該垃圾識別模型的底部,權重保持不變,頂部加入512個神經元與40個輸出神經元組成的全連接層,全連接層部分的權重由電腦的GPU進行訓練。
經測試:(1)步進電機旋轉投放垃圾時間滿足投放允許誤差范圍,處理四類垃圾的響應時間如表1所示。

表1 步進電機對不同垃圾的處理時間
由表可知,智能垃圾桶處理需一定的時間,但本設計主要應用于家庭,家庭用戶產生的垃圾種類較為單一且投放垃圾時間間隔較長,該處理速度基本能滿足家庭用戶需求。
(2)通過對數據集中的垃圾類別進行識別,可知智能垃圾桶對每種垃圾分類的準確度。如圖11所示。

圖11 準確度
(3)表格2為垃圾識別模型對四大類垃圾識別準確率的對照表,該數據是由測試集數據得出的,即使模型將某一垃圾的所屬小類識別錯誤,若其最終的所屬大類沒有改變,則仍算識別正確。

表2 垃圾識別模型對四大類垃圾識別準確率
文設計的智能垃圾桶能夠完成日常生活垃圾的分類識別、自動投放等功能。具有占地小、學習能力強、識別準確的優點;且在制作方面運用的樹莓派和輔助芯片等材料成本較低,適合家庭或企業的垃圾分類要求,有望普及。