陳牧圖,譚睿,石壘壘,馮月芹
(南京工程學院,江蘇南京,211167)
隨著人們生活水平的提高,人均擁有的資源不斷增多,垃圾產生量增多,這使得我們面臨著垃圾圍城的困境。放眼國外,發(fā)達國家普遍采用垃圾分類回收、針對處理的方法,同時,垃圾分類也是中國必然的選擇。環(huán)境問題的日益突出對日常生活、城市發(fā)展以及自然環(huán)境都造成了極大的影響,這些問題已然使垃圾分類成為刻不容緩的需要。
新型智能多功能自動分類垃圾桶,它通過將傳統標簽垃圾桶與智能自動化裝置有機結合,有效解決了傳統的垃圾處理方式對環(huán)境帶來的污染問題、國家土地資源的占用問題以及可回收資源的浪費問題,并且為環(huán)衛(wèi)從業(yè)者和因為工作或生活需要缺少時間進行垃圾分類的人群提供便利。
將深度學習技術應用于垃圾分類處理的方法,通過引入機器視覺拍照、深度學習識別和自動投放裝置代替人工進行垃圾分類。利用OpenMV攝像頭采集圖像信息,以谷歌TensorFlow 為框架,進行數據集的訓練,上述訓練得到的最優(yōu)模型進行格式轉換,使用 TensorFlow Lite converter轉換器將最優(yōu)模型轉換為TensorFlow Lite 能夠識別的tflite 格式模型文件,它可以直接應用于OPENMV攝像頭的控制器,以此進行下一步的識別操作。OPENMV將識別后的垃圾信息計算處理之后,再通過串口通信傳給STM32單片機,通過單片機控制舵機轉動進行垃圾槽的選擇,轉至對應的分類垃圾槽,同時利用大屏幕顯示垃圾的種類以及投放垃圾的數量等信息。
此項目不僅具有理論價值,也有很強的實用價值。與人工相比,智能分類垃圾桶在降低垃圾分類錯誤率的同時,也提高了回收處理的時間、資源效率。在一定程度上節(jié)約了社會資源,美化了生活環(huán)境,提高了人民的生活質量。
智能分揀垃圾桶系統設計框圖如圖1所示。該系統以stm32f407單片機作為控制核心,集成了識別感應、分揀控制、和滿桶檢測三大模塊,識別感應通過一塊光電傳感器和一個openMV攝像頭模塊實現,先由光電傳感器感應是否有垃圾投入,再由openMV通過訓練好的神經網絡模型檢測垃圾種類;分揀控制通過操控舵機轉動實現;滿桶檢測模塊通過超聲波測距檢測桶內垃圾高度,以此通知單片機。而光電傳感器攝像頭和單片機之間的通信方式采用串口通信。
圖1 系統設計圖
采用OPENMV H7 PLUS,OpenMV4 H7是本文選用的攝像頭模塊,它集成了一塊STM32H743芯片,主頻400M,內存2M,運行速度快,低功耗,低成本的電路板,可以通過MicroPython編程,Python的高級數據結構在機器視覺算法中處理復雜的輸出有更大的優(yōu)勢。用Python控制OpenMV,相對更加容易地使用外部終端觸發(fā)拍攝或者執(zhí)行算法,也可以把算法的結果用來控制IO引腳。
測試中以4種不同的常見垃圾作為研究對象。拍攝時以白紙為背景,采用openMV4plus攝像頭模塊進行拍攝,進行正面和側面等多角度拍攝。共獲取樣本圖像1355幅,包括蘋果418幅,電池219幅,礦泉水瓶321幅,口罩397幅。圖像樣本示例如圖2所示。本實驗搜集的垃圾數據集較少,為了減少訓練誤差,采取了適應最短軸(fit shortest axix)處理圖像,將較長軸的外部裁剪為所需的縱橫比,然后插值到所需的大小。為了獲得遷移學習模塊的最佳準確性并滿足MobileNetV2模型的輸入要求,將垃圾樣品圖像像素統一調整為96×96,將顏色格式設置為“RGB”,圖像格式保存為jpg 格式。并將79%的圖像作為訓練數據集,剩下的21%作為測試數據集。
圖2 垃圾樣本示例(a)蘋果(b)礦泉水瓶(c)電池(d)口罩
當垃圾箱的垃圾超過一定容量時,可以用語音模塊實現提示信息。設計采用HX711壓力檢測模塊。該模塊配置于垃圾桶桶蓋與桶箱之間,用于檢測垃圾桶是否已經裝滿。對比上一次投放狀態(tài),在本次投放動作結束時,若垃圾未滿溢至桶蓋處,模塊不會檢測到擠壓力;若垃圾已堆積到桶蓋處,在桶蓋關閉完成前,壓力檢測模塊會收到來自桶蓋和桶內垃圾的上下側的擠壓力,若在擠壓動作過程中檢測到壓力大于0.5kg,單片機則會驅動LED 燈常亮,同時操作語音模塊報警,提醒用戶取走桶內垃圾。
垃圾超出設定的閾值時,語音提示“垃圾滿”;語音提示模塊采用SYN6288。SYN6288模塊通過異步串口接收指定文字,實現文本到語音(TTS)的轉換。
選用2個57 步進電機作為桶蓋轉軸以及分類桶轉軸,以TB6600驅動器驅動旋轉。TB6600驅動器1控制電機1轉軸旋轉到桶口,然后TB6600驅動器2控制電機2桶蓋打開,垃圾自動投放到對應箱體中。
自動播放廣告信息和圖片宣傳,采用7寸的TFT電容屏。顯示內容:垃圾的數量,幾類垃圾投放的順序,所有垃圾投放時間,垃圾桶是否滿載提示。
智能分類垃圾桶整體采用全封閉式設計,并在正平面上端留下一個垃圾投放口??趦裙潭ㄒ粋€垃圾識別盒狀空間,包含OpenMV攝像頭、傳感器與拍照平臺。附近安置一個主控盒,放置單片機、電路等。桶身采用圓柱型,平均分為4部分用以盛放4種垃圾,驅動裝置采用一個舵機,連接一個形狀為3/4圓的桶蓋,與舵機同步旋轉。當在光電傳感器感應到有垃圾投入后并且openmv識別到垃圾并分析出垃圾種類時,stm32控制舵機旋轉到指定位置,等待垃圾投進后通過圓形桶蓋的缺口落入指定桶中,完成分類工作。結構圖如圖3所示。
圖3 機械結構圖
卷積神經網絡(Convolutional Neural Networks, CNN)是一種前饋神經網絡,包含了卷積計算,具有深度結構,是深度學習的代表算法之一。它包含輸入層和隱含層,而隱含層包含卷積層、池化層和全連接層3類常見構筑。一般有正則化(regularization)、分批歸一化(Batch Normalization,BN)、跳躍連接(skip connection)等方式優(yōu)化網絡,以及量化(quantization)、遷移學習(transfer learning)、FFT 卷積、權重稀疏化等方式加速訓練。參數整定的范圍包括:學習率(learning rate)、批次大小 (batch_size)、迭代次數、激活函數、優(yōu)化器(optimizer)等。
遷移學習是一種機器學習方法,一般指將從源領域(Source Domain)的學習成果應用到目標領域(Target Domain)上去的方法。在開發(fā)過程中,已經消耗了巨大的時間與計算資源的預訓練模型往往作為新模型的起點,將已習得的強大技能遷移到相關領域的新問題上,這個方法避免了重新訓練模型,節(jié)省大量資源。開發(fā)時可選擇預訓練。開發(fā)流程一般分以下四步:
(1)選擇源任務:選擇一個在輸入和輸出方面與目標任務有著一定映射關系的原任務。
(2)開發(fā)源模型:為任務開發(fā)一個高效率的模型。
(3)重用模型:將已開發(fā)完成的現有模型作為用于新任務模型的學習起點,節(jié)省資源。
(4)調整模型:整定參數,微調模型,使之更好地適應目標任務要求。
預訓練一般只需經歷選擇源任務、重用模型、調整模型三步,較為常用。
從2014年VGG誕生以來,深度學習網絡模型在圖像處理中的計算能力越來越強,適應能力越來越好。但是相應的,高效率神經網絡占有的空間也越來越大,結構越來越復雜,預測和訓練對硬件條件的要求越來越高,導致這種神經網絡模型往往只能與高算力、高成本機器相綁定。移動設備因硬件資源有限,對深度學習網絡模型處理能力也有限。在深度學習領域內也有神經網絡小型化發(fā)展的趨勢。而MobileNet類的神經網絡模型顯然在移動設備與嵌入式設備的引入應用中擁有極大的優(yōu)勢,在保證模型準確率的同時體積更小,計算量更少,速度更快,準確率更高。
模型結構方面,實驗采用的MobileNetV2模型中主要引入了線性瓶頸層(Linear Bottleneck)和反轉殘差層(Inverted Residuals),網絡的結構也因此得以進一步優(yōu)化。在MobileNetV2網絡模型中共有17個瓶頸層,一個標準卷積層(conv),兩個逐點卷積層(pw conv),共計54層可訓練參數層。訓練流程圖如圖4所示。具體描述如下。
圖4 算法流程圖
1)圖像預處理。將采集到的垃圾圖像進行縮放、二值化等預處理,以此實現數據集的優(yōu)化。并將垃圾樣本圖像大小統一調整為96像素×96 像素,方便后續(xù)的操作。
2)輸入垃圾圖像樣本。隨機從垃圾圖像數據集中抽取 4種垃圾種類圖片79%,作為訓練樣本輸入。
3)基于預訓練 MobileNetV2 模型整體構架構建垃圾識別模型。
4)參數的遷移和微調。通過參數遷移方式初始化預訓練MobileNetV2模型參數,通過學習率,學習周期等訓練參數的設置,在訓練期間隨機轉換數據,從而允許在不過擬合的情況下執(zhí)行更多訓練周期,提高準確率。
5)模型的測試。從垃圾數據集中抽取余下21%垃圾樣本圖片,作為測試樣本對模型進行測試,以驗證模型的精確度。
本文所設計的智能分類垃圾桶能實現較為精確和快速的預測結果,從而做出正確的分類決策。文中基于深度學習網絡的訓練數據均來自于作者自己拍攝的圖片,數據集包含1355張圖像,包含的類別有食物類、電池類、口罩類、礦泉水瓶類的4個類別。為驗證模型的有效性,進行了精確度實驗。模型實驗的樣本準確性如圖5所示。
圖5 模型測試結果
從圖5中可以看出,對于這四種垃圾的識別準確率都達到了98%以上,識別效果較好,組裝成整機后的實驗效果也較好,在接收到數據且垃圾桶未滿桶的情況下,可以快速而精確地識別出對應的垃圾種類,在顯示屏上顯示其種類英文名,并驅動舵機和指示燈做出相應反應。
針對傳統垃圾分類方法效率低、準確度不高的問題,本文提出了一種基于 MobileNetV2模型、遷移學習和stm32f407單片機的垃圾分類方法和系統設計。用遷移學習的方法把在edge impulse上訓練的 MobileNetV2網絡遷移到自己的數據集上進行微調,并通過“數據增強”功能在訓練期間隨機轉換數據來防止模型過擬合,提高模型的泛化能力與準確度。通過對比試驗表明,文中提出的模型的平均準確率達到了98.85%,能夠對垃圾進行有效分類并通過硬件設備完成分揀工作。