陳美玲 朱溫涵 劉佳成 鄭陽
摘? 要:由于人們生活水平的不斷提高,隨之產(chǎn)生的生活垃圾也不斷增多。為解決靠人力進(jìn)行垃圾分類效率低下的問題,對自動(dòng)垃圾分揀系統(tǒng)進(jìn)行研究,并設(shè)計(jì)一種基于機(jī)器視覺的垃圾分揀系統(tǒng)。使用搭載有攝像頭的樹莓派作為主控單片機(jī),利用卷積神經(jīng)網(wǎng)絡(luò)來分辨攝像頭所拍攝垃圾的類型,借助Arduino控制舵機(jī)自動(dòng)開合垃圾桶,實(shí)現(xiàn)垃圾分類。經(jīng)過測試分析,系統(tǒng)的準(zhǔn)確精度均能達(dá)到70%以上,準(zhǔn)確精度較好,籍此人們能夠輕松處理生活垃圾。
關(guān)鍵詞:機(jī)器視覺;樹莓派;卷積神經(jīng)網(wǎng)絡(luò);Arduino
中圖分類號(hào):TP311? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)04-0018-05
Design of Garbage Sorting System Based on Machine Vision
CHEN Meiling1, ZHU Wenhan2, LIU Jiacheng1, ZHENG Yang3
(1.Nanjing Tech University Pujiang Institute, Nanjing? 211200, China; 2.Graduate School Qinhuangdao Branch, Northeastern University, Qinhuangdao? 066004, China; 3.Jiamusi University, Jiamusi? 154007, China)
Abstract: With the continuous improvement of people's living standards, the amount of domestic garbage generated is also increasing. In order to solve the problem of inefficient waste sorting by manpower, the automatic waste sorting system is studied and a waste sorting system based on machine vision is designed. The Raspberry pie equipped with a camera is used as the main control MCU, and the Convolution Neural Network is used to distinguish the type of garbage captured by the camera. The steering gear is controlled by Arduino to automatically open and close the garbage can, realizing garbage classification. After testing and analysis, the accuracy of the system can reach more than 70%, and the accuracy is good, so people can easily handle domestic garbage.
Keywords: machine vision; Raspberry pie; Convolution Neural Network; Arduino
0? 引? 言
截至目前,全國每天的生活垃圾生產(chǎn)量已經(jīng)超過4.5億噸,而全國生活垃圾清運(yùn)量僅為2.29億噸。合理地進(jìn)行垃圾分類是有效進(jìn)行垃圾處理、減少環(huán)境污染的關(guān)鍵舉措,也是最有效的垃圾科學(xué)管理方式[1]。
在國內(nèi),北京領(lǐng)邦儀器公司研發(fā)出了一款采用機(jī)器視覺技術(shù)和光學(xué)檢測技術(shù)的工業(yè)零件檢測機(jī)器人,該機(jī)器人可實(shí)現(xiàn)對高精度零件進(jìn)行檢測分揀[2];在國外,ABB公司于2020年上海舉辦的進(jìn)博會(huì)上,展示了最新研發(fā)產(chǎn)品——YuMi智能垃圾分類機(jī)器人[3]。該機(jī)器人能夠?qū)崿F(xiàn)垃圾的初步化過濾,對垃圾迅速準(zhǔn)確地進(jìn)行識(shí)別,多自由度機(jī)械臂靈活分揀,垃圾分類分揀完成后的數(shù)據(jù)傳遞等功能。目前,隨著深度學(xué)習(xí)技術(shù)的不斷進(jìn)步,借助高速的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)自動(dòng)分揀垃圾有現(xiàn)實(shí)的可能性[4]。
1? 理論基礎(chǔ)
在20世紀(jì)40年代,人工神經(jīng)網(wǎng)絡(luò)由于無法完成非線性分類、反向傳播訓(xùn)練速度慢的發(fā)展進(jìn)入了一段很長的低迷期。2006年,深度信念網(wǎng)絡(luò)的概念被提出,由于該方法對手寫字體識(shí)別的效果好,使得更多人投身于此。深度神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,使得神經(jīng)網(wǎng)絡(luò)訓(xùn)練的速度大大提高。
1.1? 卷積神經(jīng)網(wǎng)絡(luò)
與常規(guī)神經(jīng)網(wǎng)絡(luò)不同,卷積神經(jīng)網(wǎng)絡(luò)能夠解決處理大尺寸圖像的三個(gè)明顯缺點(diǎn):一是圖像向量化造成空間信息丟失,二是參數(shù)過于龐大而導(dǎo)致的訓(xùn)練困難,三是大量的參數(shù)會(huì)導(dǎo)致網(wǎng)絡(luò)的過擬合。在本設(shè)計(jì)中,垃圾分類的圖片數(shù)據(jù)良莠不濟(jì),使用卷積神經(jīng)網(wǎng)絡(luò)可以很好地解決這個(gè)問題。
1.2? 卷積層
在機(jī)器視覺中運(yùn)用卷積神經(jīng)網(wǎng)絡(luò),卷積層是它的核心。不同的卷積核可以提取例如角、水平、線性等特征。每一層圖片經(jīng)過卷積后得到的計(jì)算公式為:
其中, 表示第i層的數(shù)據(jù)寬度, 表示第i-1層的輸入數(shù)據(jù)寬度,p[i]是對第i層數(shù)據(jù)進(jìn)行0填充的大小,f [i]是第i層過濾器的維度,s[i]是第i層過濾器的步長。以上公式同樣適用于輸入圖片的高度。
1.3? 池化層
池化層通常按一定周期規(guī)律插入到連續(xù)的卷積層之間。所謂池化即為壓縮網(wǎng)絡(luò)中原有數(shù)據(jù)參數(shù)的大小,以此來達(dá)到簡化卷積神經(jīng)網(wǎng)絡(luò)計(jì)算,減少卷積層中的相互聯(lián)系單元,同時(shí)控制過擬合這一目的。
通常有三種大值池化的操作方法:最大值池化(Max Pooling)、平均池化(Mean Pooling)和隨機(jī)池化(Stochastic Pooling)。實(shí)踐證明,最大池化的效果比其余二者的都好。
1.4? 全連接層
在卷積神經(jīng)網(wǎng)絡(luò)中,全連接層多位于網(wǎng)絡(luò)末端后兩層。全連接層的作用則是將這些圖形數(shù)據(jù)進(jìn)行整合,然后進(jìn)行歸一化處理。圖1是一個(gè)簡化的全連接層設(shè)計(jì)流程圖。
全連接層的計(jì)算相對于前面的卷積運(yùn)算來講容易得多,當(dāng)使用多次卷積和最大池化操作對原始圖像像素特征提取之后,再乘以提前在全連接層中定義好的權(quán)重參數(shù),接下來通過Softmax函數(shù)激活,得到的結(jié)果是對應(yīng)輸入圖像所對應(yīng)的類別的概率大小,最后通過概率判斷輸入圖像的類別。
2? 總體設(shè)計(jì)
首先在模型訓(xùn)練及預(yù)測方面,本文使用個(gè)人PC機(jī)自帶的GPU,使用卷積神經(jīng)網(wǎng)絡(luò)模型ResNet對預(yù)處理過的數(shù)據(jù)集進(jìn)行訓(xùn)練及預(yù)測。由于樹莓派的體積小,可布置在多個(gè)復(fù)雜環(huán)境。若預(yù)測效果較為滿意,則將該模型重新部署到樹莓派端使用。
在樹莓派端的垃圾分揀系統(tǒng)包括Arduino Mega 2560、樹莓派4B、樹莓派專用攝像頭,設(shè)計(jì)結(jié)構(gòu)如圖2所示。
本設(shè)計(jì)以兩類主控板分別對整個(gè)垃圾分揀系統(tǒng)進(jìn)行聯(lián)合控制。首先通過在樹莓派端訓(xùn)練預(yù)測模型,再使用其專用攝像頭來獲取需要分揀的垃圾數(shù)據(jù),圖片經(jīng)過卷積、池化、激活等一系列深度學(xué)習(xí)處理,最后進(jìn)行歸類并顯示在其連接的顯示器上[5]。同時(shí),樹莓派會(huì)將歸類結(jié)果通過串口發(fā)送給Arduino,Arduino將根據(jù)結(jié)果控制相應(yīng)舵機(jī)的啟停,并根據(jù)當(dāng)前視野內(nèi)是否出現(xiàn)垃圾為依據(jù)控制傳送帶上電機(jī)的移動(dòng),進(jìn)而實(shí)現(xiàn)塑料、金屬、紙張、紙板四類生活垃圾分類分揀的效果。
3? 硬件系統(tǒng)
首先在PC端上使用GPU進(jìn)行模型訓(xùn)練及預(yù)測,接著在準(zhǔn)確性、快速性達(dá)標(biāo)的情況下,將該模型網(wǎng)絡(luò)部署到樹莓派端,進(jìn)而實(shí)現(xiàn)實(shí)時(shí)垃圾分類。在本章中,將介紹本設(shè)計(jì)所用到的硬件環(huán)境。
3.1? CPU與GPU
GPU,又稱視覺處理器,是一種專門在私人PC機(jī)、移動(dòng)設(shè)施上對圖像和圖形做相應(yīng)計(jì)算和處理的單元。GPU的存在使得其可以為CPU分擔(dān)大部分冗長復(fù)雜的圖像處理工作,使得顯卡減少了對CPU的依賴;CPU,又稱中央處理器,是計(jì)算機(jī)控制系統(tǒng)中的核心器件,它能夠通過各類邏輯運(yùn)算電路完成信息處理、程序運(yùn)行等功能。CPU主要包括控制器及運(yùn)算器兩大部分[6]。
該設(shè)計(jì)所使用的硬件環(huán)境如表1所示。在GPU產(chǎn)生之前,傳統(tǒng)處理二三維圖像的方法都是使用CPU,然而由于CPU不只對圖像進(jìn)行處理,還有其他繁多的任務(wù)。隨著機(jī)器視覺技術(shù)的發(fā)展需求,GPU作為專門處理圖像的單元而產(chǎn)生。CPU和GPU的合作運(yùn)行,最大程度上發(fā)揮了電腦的性能。然而由于圖片數(shù)據(jù)大,CPU處理圖像速度緩慢等因素,故選擇單獨(dú)配置使用GPU來對模型進(jìn)行訓(xùn)練。
3.2? 樹莓派與圖像識(shí)別模塊
本設(shè)計(jì)采用樹莓派(Raspberry Pi)4B開發(fā)板作為主控模塊,是一片僅有身份證大小的微型計(jì)算機(jī),也是單片機(jī)的一種。樹莓派4B開發(fā)板在同價(jià)位的開發(fā)板中,性價(jià)比較高,其擁有多種不同規(guī)格的外設(shè)接口,可以連接顯示屏、鼠標(biāo)、鍵盤等外設(shè),其中的GPIO接口擴(kuò)展模塊也能夠各種各樣識(shí)別的傳感器。主板上有提前預(yù)留好的接口,可以與樹莓派專用的500萬像素?cái)z像頭完美連接。樹莓派專用攝像頭實(shí)物圖如圖3所示。
可以看到攝像頭與樹莓派連接方便,使主控板和圖像提取模塊集成在一個(gè)區(qū)域,為垃圾分揀系統(tǒng)的實(shí)物設(shè)計(jì)留足了空間。Python為其主要的編程語言,同時(shí)也可以使用基于ARM框架的其他編譯語言。在本設(shè)計(jì)中主要在樹莓派中運(yùn)用機(jī)器視覺中的TensorFlow+keras算法框架。
3.3? Arduino與數(shù)字舵機(jī)模塊
Arduino是一個(gè)既有硬件又有軟件的開源電子平臺(tái):硬件部分是集成各個(gè)模塊功能、能夠與外設(shè)連接的Arduino電路板,軟件部分則是Arduio IDE,與keil4類似,用作個(gè)人計(jì)算機(jī)端的程序開發(fā)環(huán)境。由于其編程語言的簡單及人性化,故使用者可以將一些常用的語句組合函數(shù)化,這使得使用者能夠快速入門。
該設(shè)計(jì)使用Arduino Mega2560作為舵機(jī)控制的控制板,其實(shí)物圖如圖4所示。它是采用USB接口的核心電路板,具有54個(gè)數(shù)字I/O口,針對本項(xiàng)目垃圾歸類類別多這一難點(diǎn),可以同時(shí)控制多個(gè)舵機(jī)。
在舵機(jī)方面,本文使用20KG舵機(jī),根據(jù)實(shí)際情況,既可組裝成多自由度的機(jī)械臂,又可與垃圾桶蓋結(jié)合,組裝成智能垃圾桶。在電壓保持恒定輸入的情況下,由PID位置式算法控制舵機(jī)可以精準(zhǔn)迅速地達(dá)到所要求的角度。故針對各種復(fù)雜的垃圾,該舵機(jī)能很好地勝任分揀的任務(wù)。
4? 垃圾分揀系統(tǒng)的實(shí)現(xiàn)
在本節(jié)中,將實(shí)現(xiàn)垃圾分揀系統(tǒng)所用到的AlexNet模型在PC端、樹莓派端上有效的運(yùn)行,并對結(jié)果進(jìn)行分析。
4.1? 模型框架選取
TensorFlow是一個(gè)端到端的開源符號(hào)式數(shù)學(xué)系統(tǒng),被廣泛應(yīng)用于先進(jìn)機(jī)器學(xué)習(xí)技術(shù),可以隨時(shí)隨地在云端、本地甚至是瀏覽器中訓(xùn)練部署模型;PyTorch是由Facebook人工智能研究院于2017年提出的,在機(jī)器視覺領(lǐng)域,它具有相當(dāng)簡潔高效快速的框架,入門容易,設(shè)計(jì)理念是追求最少的封裝,使初學(xué)者能夠迅速入門。
TenorFlow與Pytorch的區(qū)別如表2所示。雖然TensorFlow入門難度大,編程難度也更大,但對于大數(shù)據(jù)的數(shù)量顯然較Pytorch要高,另外其社區(qū)學(xué)習(xí)資源、代碼更豐富,當(dāng)代卷積神經(jīng)網(wǎng)絡(luò)框架TensorFlow較為成熟,程序代碼已可以運(yùn)用在Windows、Linux系統(tǒng)上。本文通過網(wǎng)絡(luò)上預(yù)先獲取到的圖片數(shù)據(jù)集,在Windows系統(tǒng)下,使用PC端中的GPU來對AlexNet卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。為使得本設(shè)計(jì)能更符合工業(yè)化生產(chǎn)要求及更貼近實(shí)際生活,故采用TensorFlow作為框架[7]。
4.2? PC端模型預(yù)測
將數(shù)據(jù)集輸入提前布置好的AlexNet網(wǎng)絡(luò)模型代碼當(dāng)中,使用PC端進(jìn)行模型訓(xùn)練和預(yù)測,預(yù)測腳本的代碼編寫思路是:首先載入訓(xùn)練好的模型,接下來讀入圖片信息進(jìn)行預(yù)測,最后展示預(yù)測的效果。使用數(shù)據(jù)爬取技術(shù)對三個(gè)數(shù)據(jù)集分別進(jìn)行預(yù)測,測試結(jié)果如表3所示。
由表3可知,對三個(gè)大小差別不大的圖片數(shù)據(jù)集進(jìn)行預(yù)測,其準(zhǔn)確精度均能達(dá)到70%以上,準(zhǔn)確精度較好;另外其分析圖片的實(shí)際時(shí)間差別不大,使用PC端GPU基本能符合快速性要求。以上,垃圾分類在PC端預(yù)測能夠得到較好的結(jié)果,可以將模型重新部署到樹莓派端。
4.3? 樹莓派端模型預(yù)測
將代碼和圖片集拷貝到樹莓派上,使用樹莓派攝像頭進(jìn)行垃圾分類:激活虛擬環(huán)境后,克隆代碼并進(jìn)入代碼目錄,測試好視頻接口后,打開攝像頭運(yùn)行代碼開始垃圾分類。在攝像頭視野內(nèi)手動(dòng)放入一個(gè)礦泉水瓶,樹莓派檢測結(jié)果如圖5所示。
可以看到,樹莓派在多個(gè)時(shí)間段內(nèi)判斷礦泉水瓶均屬于plastic(塑料),該圖片分類效果較好。接下來,再放入形狀與礦泉水瓶類似的罐裝可樂瓶,樹莓派檢測結(jié)果如圖6所示。
可以看到,樹莓派在多個(gè)時(shí)間段內(nèi)判斷罐裝可樂瓶均屬于metal(金屬),該圖片分類效果較好。接下來,再放入不規(guī)則形狀的衛(wèi)生紙,樹莓派檢測結(jié)果如圖7所示。
不斷翻轉(zhuǎn)手中的衛(wèi)生紙,檢測結(jié)果均為paper(紙),該圖片分類效果較好。最后,再放入與紙材料類似的平面紙板,樹莓派檢測結(jié)果如圖8所示。
以上,可以看到四種垃圾在30秒內(nèi)失誤數(shù)都較少,整體準(zhǔn)確率均達(dá)到80%以上,故部署在樹莓派端的模型分類可以達(dá)到預(yù)期效果。
4.4? Arduino端分揀實(shí)驗(yàn)
將Arduino與樹莓派串行連接,攝像頭實(shí)時(shí)拍攝需要分揀的生活垃圾,顯示屏則用作顯示當(dāng)前分類的結(jié)果;Arduino控制4個(gè)舵機(jī)進(jìn)而帶動(dòng)垃圾桶進(jìn)行開合,基于機(jī)器視覺的垃圾分揀系統(tǒng)圖如圖9所示。
當(dāng)樹莓派檢測結(jié)果為plastic時(shí),舵機(jī)1轉(zhuǎn)動(dòng)45度;當(dāng)檢測結(jié)果為metal時(shí),舵機(jī)2轉(zhuǎn)動(dòng);當(dāng)檢測結(jié)果為paper時(shí),舵機(jī)3轉(zhuǎn)動(dòng);當(dāng)檢測結(jié)果為carboard時(shí),舵機(jī)4轉(zhuǎn)動(dòng)。舵機(jī)是由信號(hào)線輸入一個(gè)PWM信號(hào)進(jìn)而控制一定的角度并鎖死,現(xiàn)場圖片分類時(shí),其中一個(gè)分類情況下,舵機(jī)轉(zhuǎn)動(dòng)如圖10所示。
可以看到,當(dāng)垃圾分類結(jié)果出現(xiàn)時(shí),其中一個(gè)舵機(jī)轉(zhuǎn)動(dòng),由上述實(shí)驗(yàn)結(jié)果可以得到結(jié)論:PC端內(nèi)GPU可以較好地使用訓(xùn)練好的模型進(jìn)行預(yù)測,將模型部署到樹莓派端后,樹莓派也能在快速性的基礎(chǔ)上對垃圾圖片進(jìn)行準(zhǔn)確分類,同時(shí)與樹莓派進(jìn)行串口通信的Arduino也能夠控制相應(yīng)的舵機(jī)轉(zhuǎn)動(dòng),進(jìn)而能夠?qū)⒂?jì)算機(jī)有效代替人力實(shí)現(xiàn)垃圾分類分揀。
5? 結(jié)? 論
本設(shè)計(jì)在PC端和樹莓派端分別進(jìn)行模型訓(xùn)練,在GPU端使用訓(xùn)練好的模型預(yù)測數(shù)據(jù)進(jìn)行匯總分析后,將AlexNet網(wǎng)絡(luò)模型部署到樹莓派端使用,得到了多個(gè)準(zhǔn)確的分類實(shí)驗(yàn)結(jié)果,與此同時(shí)Arduino上的相應(yīng)舵機(jī)角度轉(zhuǎn)動(dòng)也較為精確。以上,實(shí)現(xiàn)了基于機(jī)器視覺的垃圾分揀系統(tǒng)所要求的準(zhǔn)確性及穩(wěn)定性,實(shí)驗(yàn)結(jié)果較好,成本在可控范圍內(nèi);相較人力分揀而言,可代替大量重復(fù)工作,達(dá)到快速性的效果,在硬件和算法進(jìn)一步完善更新的基礎(chǔ)上,有較好的市場前景。
參考文獻(xiàn):
[1] 王蓉蓉.基于機(jī)器學(xué)習(xí)的垃圾識(shí)別與分類研究 [D].蘭州:蘭州理工大學(xué),2021.
[2] 李健凱.基于深度學(xué)習(xí)的視覺機(jī)器人垃圾分揀系統(tǒng)設(shè)計(jì) [D].天津:天津工業(yè)大學(xué),2021.
[3] 肖揚(yáng).基于機(jī)器視覺的廢紙箱分類識(shí)別技術(shù)研究 [D].鄭州:河南大學(xué),2020.
[4] 王喆.基于機(jī)器視覺的醫(yī)療垃圾桶識(shí)別抓取方法研究 [D].濟(jì)南:齊魯工業(yè)大學(xué),2020.
[5] 張鳳.智能垃圾分揀系統(tǒng)關(guān)鍵技術(shù)研究 [D].成都:成都理工大學(xué),2020.
[6] 黃帥.基于機(jī)器視覺的大型生活垃圾焚燒過程診斷方法研究 [D].杭州:浙江大學(xué),2020.
[7] 段昆昕,江秋儀,陳鋒楠,等.基于樹莓派下智能分類垃圾桶設(shè)計(jì) [J].中國新技術(shù)新產(chǎn)品,2022(1):37-39.
作者簡介:陳美玲(1984—),女,滿族,吉林四平人,副教授,碩士,研究方向:智能控制、圖像處理。
收稿日期:2022-09-23
基金項(xiàng)目:校一般科研課題(njpj2021-2-04)