基于目標檢測的智能垃圾分類垃圾桶的設(shè)計
1 研究背景
隨著科技的快速發(fā)展,人們的生活水平得到了很大的改善,城市生活中的垃圾數(shù)量也隨之飛速增長。近年來我國提出了全民垃圾分類的政策并在全國進行試點推廣,為解決垃圾處理問題,各個城市相繼出臺了垃圾分類的地方標準,但實際執(zhí)行起來依然有不小難度,用戶的習慣和對垃圾分類知識了解的不足帶來垃圾分類的現(xiàn)實困難,而設(shè)置專門的管理人員則會大量浪費人力資源。如果可以通過相關(guān)的設(shè)計實現(xiàn)自動分類的垃圾桶,將有助于大幅提升垃圾分類的準確率和效率。
深度學習技術(shù)的高速發(fā)展,它的功能也逐漸增強,尤其是在目標檢測和圖像識別等領(lǐng)域上發(fā)揮著重要作用。本文提出的基于深度學習的智能垃圾分類垃圾桶,該設(shè)計將人工智能與垃圾分類進行有機結(jié)合,提出了一種能夠自動進行垃圾分類的垃圾桶的設(shè)計方案。方案的關(guān)鍵在于如何對目標準確而有效地識別,特別是應(yīng)用性能較為優(yōu)異的卷積模型作為目標檢測的模型,對其在目標檢測識別領(lǐng)域的應(yīng)用具有十分關(guān)鍵以及重要的研究價值。
2 分類垃圾桶簡介
2.1 分類垃圾桶的總體設(shè)計
分類垃圾桶整個方案分為PC(個人計算機)端和硬件端兩大部分組成,總體設(shè)計圖如圖1 所示。
圖1 總體設(shè)計框圖
PC 端主要是實現(xiàn)垃圾的分類,主要處理過程如下:
(1)攝像頭捕捉到含有垃圾的圖片;
(2)圖片傳入到模型中進行處理;
(3)處理完后會通過藍牙發(fā)送信號給硬件端。
硬件部分的設(shè)計如圖2 所示,STM32 上電后串口、定時器進行初始化。當STM32 收到電腦端發(fā)送的垃圾類型數(shù)據(jù)時,對收到的數(shù)據(jù)進行判斷,用于區(qū)別出被識別垃圾的種類。當垃圾成功識別種類時,STM32 通過控制垃圾桶底部的垃圾旋轉(zhuǎn)控制裝置。旋轉(zhuǎn)不同的角度使垃圾投放進不同分類的格子中。實現(xiàn)不同垃圾的分類效果。在實際執(zhí)行中,系統(tǒng)將通過控制垃圾旋轉(zhuǎn)裝置旋轉(zhuǎn)到一定角度來進行下方垃圾格子的選擇,如干垃圾時旋轉(zhuǎn)0° 、濕垃圾時旋轉(zhuǎn)90° 、可回收垃圾旋轉(zhuǎn)180° 、有害垃圾時旋轉(zhuǎn)270° ,從而將垃圾投入下方系統(tǒng)定的格子中。
3 模型分析和實際應(yīng)用
3.1 Two Stage目標檢測算法
在人工智能方面較出名的目標檢測模型有R-CNN(區(qū)域卷積神經(jīng)網(wǎng)絡(luò))、OverFeat、Fast R-CNN、FasterR-CNN、YOLO(You Only Look Once)v1、YOLOv2、SSD(single shot multibox detector)。早期的目標檢測模型(較典型的是2013 年的R-CNN)是通過人工技術(shù)得到物體特征,其中有三個主要步驟。
(1)區(qū)域選擇:隨機生成多個固定大小的窗口然后采用滑動窗口對圖像進行遍歷。
(2)特征提?。篠IFT(尺度不變特征轉(zhuǎn)換,scale-invariant feature transform) 是常用特征。
(3)分類器:主要是Adaboost、SVM(支持向量機,support vector machines)。
3.2 YOLOv3模型
YOLOv3 作為近期發(fā)布的模型,它對之前的算法既有保留又有改進。YOLOv3 保留的結(jié)構(gòu)如下所述。
(1)YOLOv1 中保留的結(jié)構(gòu)是劃分單元格來做檢測,區(qū)別是劃分的數(shù)量不一樣。采用”leaky ReLU”作為激活函數(shù),進行端到端地訓練。一個loss function 即可搞定訓練,因此只需關(guān)注輸入端和輸出端。
(2)YOLOv2 中保留的結(jié)構(gòu)是用batch normalization(批量歸一化,BN)作為正則化、加速收斂和避免過擬合的方法,把BN 層和leaky relu 層接到每一層卷積層之后。
YOLO 每一代的提升主要取決于backbone 網(wǎng)絡(luò)的提升,從YOLOv2 的darknet-19 到Y(jié)OLOv3 的darknet-53。YOLOv3還提供替換backbone——tiny darknet。backbone用Darknet-53 提高性能,用tiny-darknet 提高速度。以下將從三個方面來講述YOOv3 模型。
DBL(Darknetconv2d_BN_Leaky):如圖3 所示,是YOLOv3 的基本組件,包含了卷積+BN+Leaky relu。在YOLOv3 中,BN 和leaky relu 已經(jīng)是和卷積層不可分離的部分( 最后一層卷積除外),共同構(gòu)成了最小組件。其中BN 結(jié)構(gòu)起到關(guān)鍵作用,它可減少訓練計算量。計算公式如下:
圖3 YOLO內(nèi)部結(jié)構(gòu)展示
res_n:n 代表數(shù)字,有res1,res2,…,res8 等等,表示這個res_block里含有多少個res_unit。這是YOLOv3的大組件,YOLOv3 開始借鑒了ResNet 的殘差結(jié)構(gòu),使用這種結(jié)構(gòu)可以讓網(wǎng)絡(luò)結(jié)構(gòu)更深。殘差結(jié)構(gòu)相當于把圖片中一些無用特征給過濾掉,提取出有用特征,從而增加本實驗的識別精度。殘差構(gòu)如圖4 所示。
圖4 殘差結(jié)構(gòu)
concat:張量拼接。將darknet 中間層和后面的某一層的上采樣進行拼接。拼接的操作和殘差層add 的操作是不一樣的,拼接會擴充張量的維度,而add 只是直接相加不會導(dǎo)致張量維度的改變。
3.3 實際應(yīng)用方面的解決方法
在實際應(yīng)用中,本實驗在設(shè)計中碰到兩個問題,并且找到了對應(yīng)的解決方法。
(1)當把YOLOv3 模型訓練完成后,開始進行測試部分。訓練出來的參數(shù)加載到測試部分時,可通過在電腦上的攝像頭識別出不同種類垃圾。但是此垃圾識別過程不只是在電腦端完成的,它需要部署到硬件端。從圖5 可看出實物中的大垃圾桶是裝有可回收垃圾桶、有害垃圾桶、廚余垃圾桶、其他垃圾桶這四個小型垃圾桶的,系統(tǒng)是通過旋轉(zhuǎn)小垃圾桶再把黑色平臺上的垃圾倒入對應(yīng)類別的特定垃圾桶中,而這個過程不可避免存在攝像頭會拍到小垃圾桶中垃圾的可能,進而致誤識別操作。
圖5 垃圾桶模型圖
為解決此問題,本設(shè)計在垃圾被成功識別并發(fā)送了指令后用了一個中斷操作,當識別完成后,識別的測試代碼將停止運行,而硬件端的STM32 芯片將執(zhí)行倒垃圾操作,倒完后又會反饋給識別代碼端繼續(xù)開啟識別過程,從而避免了存在拍攝到垃圾桶內(nèi)垃圾影響識別準確度的問題。
(2)測試代碼中用的是開啟攝像頭識別模式,但是其本質(zhì)還是把視頻中的每幀圖片逐一識別出來,這就涉及到識別靈敏度的操作問題。整個倒放垃圾的過程并不是一瞬間的,而是連續(xù)的。在每段識別過程中,可大致分為三種情形,一是垃圾完全沒有出現(xiàn)在攝像頭下,二是垃圾部分出現(xiàn)在攝像頭下,三是垃圾全部出現(xiàn)在攝像頭下。因為當垃圾只漏出部分時,識別所需要的特征是不清楚的,因此在這三種情況中第二部分最容易出現(xiàn)誤識別操作,而如果按照每幀圖片識別的話必定會出現(xiàn)垃圾還沒放到黑色平臺上,垃圾桶就開始運轉(zhuǎn)的現(xiàn)象。為解決這個問題,本實驗通過計算攝像頭每秒多少幀和放垃圾這個動作大概需要多少時間,預(yù)先設(shè)置識別時間并改善識別靈敏度。經(jīng)過多次的實踐結(jié)果是,攝像頭每秒30 幀,放垃圾的時間大約是2 秒左右,這個過程中識別到的圖片大約為60 張,而60 張中一定會有誤操作圖片。本實驗通過控制總的識別數(shù)量來控制最后發(fā)送給STM32 微控制器的指令。實驗結(jié)果表明,最佳值是在2秒內(nèi)有20 張圖片全部識別到同一物體時可發(fā)送對應(yīng)指令給STM32 微控制器。
經(jīng)過上面兩點改進后,分類垃圾桶在實際應(yīng)用中的誤判斷進一步減小,有效提升了識別準確率。
4 實驗結(jié)果
4.1 系統(tǒng)設(shè)計
智能垃圾分類垃圾桶系統(tǒng)設(shè)計包含硬件和軟件兩部分,在測試過程中,我們主要對軟件部分進行了模型實驗。將YOLOV3模型實驗進行結(jié)果對比,在VGG(Visual Geometry Group)16 實驗中用到了tensorflow、VGG16模型,并采用華為的垃圾識別數(shù)據(jù)集一共包括19 800張圖44 個類別,先通過訓練得出權(quán)重再分析實驗結(jié)果對模型進行了一些微調(diào),之后開始進行測試實驗。在YOLOV3 模型中用的是torch、YOLOV3 模型,華為垃圾識別的數(shù)據(jù)集一共為19 800 張圖44 個類別,先訓練凍結(jié)部分為了加快訓練,再使用解凍實驗加強識別率和先驗框,最后進行測試實驗。硬件用到了STMF103、語音播放、舵機、藍牙模塊和攝像頭。
4.2 YOLOv3實驗
4.2.1 實驗前的準備工作
第一步 實驗前的準備
在訓練階段,本實驗基于Windows 操作系統(tǒng), 硬件采用Intel Core i7-8750H 處理器、NVIDIA 2060ITX 獨立顯卡、16GB 顯存、16GB 內(nèi)存,在Pycharm 軟件上運行程序,環(huán)境是torch1.8.1 版本和cuda1.1.1。
第二步 訓練過程
構(gòu)建完模型后把train 和val 的數(shù)據(jù)集劃分為9 比1,epoch 一共為50,凍結(jié)和解凍的Batch_size 分別為8 和3,經(jīng)過8 小時的訓練。
第三步 測試
通過攝像頭輸入圖片到測試代碼中對物體進行識別,得出結(jié)果后發(fā)出信號給硬件,硬件部分做出反應(yīng)。
4.2.2 實驗結(jié)果
訓練出來的training loss 數(shù)值、val loss 數(shù)值與訓練輪數(shù)的關(guān)系如圖6 所示。
圖6 training loss數(shù)值、val loss數(shù)值與練輪數(shù)的關(guān)系
從圖7 中可以看出訓練集和驗證集的loss 值都在同時下降,在實驗中能夠很好地排除背景干擾。
圖7 精確率和召回率的線性圖
5 結(jié)論
從YOLOv3 的實驗結(jié)果可以得出,在訓練輪數(shù)增加的同時模型沒有出現(xiàn)過擬合狀態(tài),并且精確率與召回率也在不斷增加,進而證明了模型優(yōu)良。通過在實際應(yīng)用上做出了具體改進,使得該垃圾識別系統(tǒng)更接近于應(yīng)用到實際生活中。由于該系統(tǒng)的構(gòu)造新穎,YOLOv3 模型的表現(xiàn)優(yōu)異,打破了人們對傳統(tǒng)垃圾桶的理解,使人們在生活中隨處可見的垃圾箱變得更加人性化。采用該系統(tǒng)設(shè)計的智能垃圾分類垃圾桶更容易受大眾接首,通過將垃圾在源頭進行分類投放,并經(jīng)過分類回收,使之重新變成資源,實現(xiàn)垃圾的二次甚至多次利用,符合國家號召的實現(xiàn)科學垃圾分類的既定目標。
參考文獻:
[1]Wang Xuehao,Li Shuai,Chen Chenglizhao,etc.Depth Quality-awa「e Selective Saliency Fusion fo「 RGB-D Image Salient Object Detection[J].Neurocomputing, 2020,(4):72-74.
[2]孟丹.基于深度學習的圖像分類方法研究[D].上海:華東師范大學,2017.
[3]馮子勇.基于深度學習的圖像特征學習和分類方法的研究及應(yīng)用[D].廣州:華南理工大學,2016.
[4]吳正文.卷積神經(jīng)網(wǎng)絡(luò)在圖像分類中的應(yīng)用研究[D].成都:電子科技大學,2015.
(本文來源于《電子產(chǎn)品世界》雜志2022年2月期)
評論