楊皓文 胡琦瑤 李江南 陸璐
摘 要:現(xiàn)有的垃圾分類主要依靠人工分辨,而很多居民因為意識不足或日常工作繁忙,往往無法仔細分類,導(dǎo)致垃圾分類效率低下。為了解決該問題,使垃圾分類適應(yīng)快速發(fā)展的時代,文中設(shè)計并開發(fā)了具有自主識別、智能分類且可以監(jiān)控垃圾桶溫度、裝載量、煙霧及可燃氣體濃度數(shù)據(jù)指標(biāo)的基于NB-IoT的智能垃圾分類系統(tǒng)。將利用CNN神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練的模型數(shù)據(jù)搭載在樹莓派(Raspberry Pi)上,對讀取的圖像進行分類檢測,通過控制電機將垃圾送入其所屬分類的收納桶中。通過HC-SR04測距模塊、MLX90614ESF紅外測溫傳感器、MQ-2煙霧氣敏傳感器獲得垃圾桶裝載容量、箱體內(nèi)溫度與可燃氣體數(shù)據(jù),并上傳至云端服務(wù)器,計算生成城市街道垃圾桶數(shù)據(jù)地圖,同時對垃圾回收進行路徑規(guī)劃,并將處理后的數(shù)據(jù)下傳至手機APP,方便管理人員使用。
關(guān)鍵詞:智能垃圾分類;Raspberry Pi;深度學(xué)習(xí);圖像識別;NB-IoT;傳感器
0 引 言
隨著《生活垃圾分類制度實施方案》的實施,垃圾分類已經(jīng)成為了我們?nèi)粘I畹囊徊糠帧R环矫?,垃圾分類可以減少資源浪費,另一方面,垃圾分類可以減少對環(huán)境的污染,有利于我國可持續(xù)發(fā)展戰(zhàn)略的持續(xù)推進。在目前的方案中,垃圾分類主要依賴居民的主動分類和監(jiān)督員檢查。但此舉存在兩個問題:手動垃圾分類在無形之中增加了居民和監(jiān)督員的負擔(dān),節(jié)約的資源又以人力的形式浪費;由于很多居民垃圾分類意識薄弱,加之日常工作繁忙,很難對垃圾做到細致分類,導(dǎo)致垃圾分類成為“擺設(shè)”。為解決這些問題,本文研究設(shè)計了一套基于NB-IoT的垃圾分類綜合解決方案,可實現(xiàn)對垃圾的自主識別、智能分類,滿足人們的需求。
1 系統(tǒng)整體框架
本文設(shè)計的基于NB-IoT的智能垃圾分類系統(tǒng)的總體結(jié)構(gòu)如圖1所示。此系統(tǒng)的下位機由樹莓派4B處理器、WiFi網(wǎng)絡(luò)模塊、HC-SR04測距模塊、MLX90614ESF紅外測溫傳感器、MQ-2煙霧氣敏傳感器、高清攝像頭等組成。系統(tǒng)的上位機由云端服務(wù)器及手機APP組成,云端服務(wù)器用于下位機與上位機的數(shù)據(jù)交換。下位機對垃圾進行智能識別分類,并采集垃圾桶內(nèi)的溫度、煙霧濃度、可燃氣體濃度、垃圾裝載量等數(shù)據(jù),將其上傳至云端服務(wù)器。服務(wù)器利用其強大的計算能力將接收的數(shù)據(jù)轉(zhuǎn)化為城市街道垃圾桶數(shù)據(jù)地圖,并將數(shù)據(jù)傳送至手機APP,管理人員可隨時查看垃圾桶的分布地圖及垃圾桶數(shù)據(jù),及時處理存在問題的垃圾桶。
搭載在垃圾桶投擲口處的高清攝像頭可以捕捉垃圾的圖像,并將圖像數(shù)據(jù)傳送至樹莓派中,系統(tǒng)利用神經(jīng)網(wǎng)絡(luò)算法生成的模型對垃圾圖像進行識別分類,得到垃圾所屬大類,之后樹莓派調(diào)用GPIO資源控制傳送電機運轉(zhuǎn),將垃圾送入所屬收納桶內(nèi)。
紅外測溫傳感器與煙霧氣敏傳感器可實時監(jiān)測箱體內(nèi)的各項數(shù)據(jù)。當(dāng)檢測到箱體內(nèi)的溫度、煙霧濃度或存在的危險氣體濃度超過設(shè)定閾值時,手機客戶端將發(fā)出警報,通知管理人員及時處理。測距模塊根據(jù)箱體內(nèi)所??沼嗫臻g的垂直距離,對箱內(nèi)垃圾的數(shù)量進行評估,并將數(shù)據(jù)實時上傳至云端服務(wù)器,服務(wù)器根據(jù)垃圾桶裝載量,更新垃圾桶數(shù)據(jù)地圖,并對清理路徑進行規(guī)劃,清潔人員可根據(jù)規(guī)劃對垃圾桶進行清理。此舉既保證了垃圾桶的使用效率,也大大減少了環(huán)衛(wèi)工人的工作量。
2 系統(tǒng)硬件設(shè)計
2.1 數(shù)據(jù)采集
本方案使用的Raspberry Pi 4B搭載了官方Raspbian系統(tǒng),其處理器采用Cortex-A72內(nèi)核,最高主頻可達1.5 GHz,具有強大的代碼執(zhí)行能力和豐富的控制器應(yīng)用,使得神經(jīng)網(wǎng)絡(luò)算法在小型設(shè)備上流暢應(yīng)用成為了可能。本文使用樹莓派主要實現(xiàn)以下功能:
(1)高清攝像頭通過USB接口與樹莓派相連,將識別的垃圾圖像數(shù)據(jù)快速傳回樹莓派處理器進行分析處理;
(2)樹莓派在識別垃圾種類后,通過GPIO接口將指令輸出至傳送電機,以此控制不同類別垃圾的投放;
(3)樹莓派通過自帶的WiFi模塊與云服務(wù)器連接,可以將由各模塊獲取的數(shù)據(jù)上傳至服務(wù)器,方便上位機終端獲取相關(guān)數(shù)據(jù),以便下一步的處理。
本文中,我們通過樹莓派中的V412 API接口調(diào)用攝像頭讀取圖像數(shù)據(jù)[1],其具體實現(xiàn)分為6個步驟:
(1)打開視頻設(shè)備文件,初始化視頻采集參數(shù),設(shè)置視頻圖像的格式;
(2)申請用于采集視頻圖像的幀緩沖區(qū),并從內(nèi)核空間將這些申請的幀緩沖區(qū)映射到用戶空間;
(3)把申請到的緩沖區(qū)放入視頻采集輸入隊列,用于采集視頻圖像數(shù)據(jù);
(4)把幀緩沖區(qū)從隊列中取出,將視頻圖像數(shù)據(jù)處理后,再將幀緩沖區(qū)放回至隊列中;
(5)依次循環(huán)上述4個步驟,以此不斷獲得視頻圖像數(shù)據(jù);
(6)關(guān)閉視頻設(shè)備文件,結(jié)束視頻采集。
2.2 數(shù)據(jù)傳輸
本文選用Socket通信協(xié)議。在樹莓派的TCP/IP通信協(xié)議下進行數(shù)據(jù)傳輸,將已采集的數(shù)據(jù)發(fā)送給云服務(wù)器[2]。
本文利用Python編譯環(huán)境,使用Socket第三方庫實現(xiàn)數(shù)據(jù)傳輸。Socket編程共分為如下5個步驟:
(1)創(chuàng)建Socket對象,將SOCK_STREAM設(shè)置為TCP類型;
(2)獲取靜態(tài)IP,并綁定IP和端口,用listen()進行監(jiān)聽;
(3)用accept()函數(shù)接收Client發(fā)出的請求,包含Client的IP和端口;
(4)向Client發(fā)送垃圾桶的實時數(shù)據(jù);
(5)利用時鐘設(shè)置定時循環(huán)函數(shù),實現(xiàn)數(shù)據(jù)實時更新。
2.3 電機控制
本文采用ULN2003控制板和28BJY-48步進電機實現(xiàn)垃圾傳送[3]。首先將步進電機連接到控制板上,再將控制板上的6個引腳連接到樹莓派的GPIO接口,通過程序使GPIO接口輸出控制信號,控制電機運轉(zhuǎn)。樹莓派使用GPIO進行控制,包括兩種方式:使用C語言WringPi庫文件提供的函數(shù)進行控制;使用Python的RPI.GPIO第三方庫中提供的函數(shù)進行控制。在此系統(tǒng)中本文采用Python程序控制GPIO的狀態(tài),首先調(diào)用gpio.setmode()函數(shù)設(shè)置模式,之后調(diào)用gpio.PWM()函數(shù)設(shè)置PWM波的頻率,最后調(diào)用ChangeDutyCycle()函數(shù)設(shè)置PWM波的占空比。
3 系統(tǒng)軟件設(shè)計
3.1 基于機器學(xué)習(xí)的圖像識別
卷積神經(jīng)網(wǎng)絡(luò)(CNN)由卷積層、池化層、全連接層組合而成,是一類包含卷積計算的前饋神經(jīng)網(wǎng)絡(luò)。該算法針對物體識別不斷優(yōu)化,促使識別精度越來越高,其應(yīng)用潛力巨大,前景廣闊[4]。
本文搭建的神經(jīng)網(wǎng)絡(luò)是在Python環(huán)境下利用第三方庫TensorFlow搭建的。設(shè)計的神經(jīng)網(wǎng)絡(luò)主要包含4個部分,其結(jié)構(gòu)如圖2所示。
第一部分為卷積層。為第一、二層卷積層分別設(shè)計了64個3×3步長為1的三通道卷積核和16個3×3步長為1的十六通道卷積核,通過對輸入圖層上3×3像素大小的區(qū)域進行加權(quán)處理,得到上一圖層的特征信息,其中權(quán)值是圖層上的像素值。具體實施時還利用ReLu()函數(shù)增加網(wǎng)格的非線性分割能力,ReLu()函數(shù)見式(1):
相較于傳統(tǒng)的Sigmoid函數(shù),使用ReLu()函數(shù)的優(yōu)點在于通過動量梯度下降法加快了收斂速度,而且梯度不易飽和[5]。
第二部分是池化層。兩層池化層均為3×3,步長為2的最大池化,選取圖像區(qū)域內(nèi)中像素最大值作為池化后的值,對提取的信息進行降維處理,一方面使特征圖變小,簡化網(wǎng)絡(luò)的復(fù)雜度;另一方面,將特征壓縮,提取主要特征。針對卷積層使用的ReLu()函數(shù),池化操作后使用lrn()進行局部響應(yīng)歸一化,使得其中響應(yīng)比較大的值變得更大,并抑制其他反饋相對較小的神經(jīng)元,增強模型的泛化能力。
第三部分為全連接層。兩層全連接層均擁有128個神經(jīng)元,對前面得到的特征做加權(quán)處理,處理權(quán)值的全連接公式如下:
式中:w為權(quán)值;b為偏置。通過該公式可以整合為一維向量。
第四部分是使用Softmax回歸層對全連接層的輸出做線性回歸,計算出每一類物品的得分。Softmax值的計算方法如下:
多分類下的交叉熵損失Loss計算方法如下[6]:
式中:K為類別數(shù)量;y為布爾值,指代是否屬于該類別;p為屬于類別c的概率。
3.2 圖像識別實驗結(jié)果
本文采用生活中最常見的三種垃圾:飲料瓶、廢紙箱、廢報紙作為測試集。通過網(wǎng)上下載符合要求的圖片獲取測試垃圾對應(yīng)的圖片,少量來自于手動拍攝。本文共收集的原始數(shù)據(jù)集有2 497張圖片,其中飲料瓶圖片445張、報紙圖片988張、紙箱圖片1 064張。
對原始數(shù)據(jù)進行處理,使其適應(yīng)神經(jīng)網(wǎng)絡(luò)。首先,統(tǒng)一圖片大小,將所有圖片儲存轉(zhuǎn)化為64×64;之后,打亂原有圖片順序,分成測試集與訓(xùn)練集;最后,對圖像進行旋轉(zhuǎn)、縮放、裁剪、歸一化操作。
本文根據(jù)訓(xùn)練的數(shù)據(jù)規(guī)模,把實際訓(xùn)練的次數(shù)設(shè)置為2 000次,每訓(xùn)練10次打印一次識別精確度,得到的結(jié)果如圖3所示。
從圖像可以看出,訓(xùn)練開始時,系統(tǒng)識別精度極低,隨著訓(xùn)練次數(shù)的增加,訓(xùn)練精度迅速增加,但訓(xùn)練精度波動較大。當(dāng)訓(xùn)練次數(shù)達到1 250左右時,精度基本保持在100%,偶爾有小幅波動。此時訓(xùn)練的模型精度已經(jīng)達到了使用需求。
得到所需的模型后,開始進行實際測試。使用的圖片包括飲料瓶圖片128張、廢報紙圖片113張、廢紙箱圖片106張。圖4所示分別為報紙和飲料瓶識別的效果,準(zhǔn)確率如圖5所示。
3.3 機器學(xué)習(xí)在樹莓派上的移植
為了可以使卷積神經(jīng)網(wǎng)絡(luò)算法能夠在算力相對較低的樹莓派中快速、穩(wěn)定地運行,本文將CNN神經(jīng)網(wǎng)絡(luò)算法拆分為模型訓(xùn)練和圖像識別兩部分,進行針對性使用。具體做法如下所示:
(1)在電腦上搭建卷積神經(jīng)網(wǎng)絡(luò);
(2)在電腦上測試訓(xùn)練的模型;
(3)將識別算法和訓(xùn)練好的checkpoint模型移植到樹莓派上。
本文在樹莓派上搭建了所需的Python環(huán)境,重復(fù)實驗后得到圖6所示的結(jié)果。
由上圖可知,在樹莓派上的實驗結(jié)果與電腦環(huán)境下的實驗結(jié)果接近,符合使用需求。
3.4 溫度檢測
非接觸紅外線測溫探頭可以通過測量目標(biāo)表面所輻射的紅外能量來確定表面溫度[7]。垃圾存放在垃圾桶中時,有可能因為未滅的煙頭或者桶內(nèi)的特殊環(huán)境(包括可燃氣體、溫度等)等情況引起火災(zāi)。為了保護人民財產(chǎn)安全,本文通過紅外線測溫探頭來感知垃圾桶內(nèi)是否存在火情。
MLX90614ESF紅外測溫傳感器通信流程如圖7所示。使用樹莓派通過該模塊獲取溫度信息的具體過程:啟動傳感器,發(fā)送喚醒模式指令寫入地址,經(jīng)過33 ms,傳感器開始收集數(shù)據(jù),并將數(shù)據(jù)寫入指定地址。之后啟動傳輸時序傳輸數(shù)據(jù),采用PWM模式與SMBus模式輸出[8]。本文選擇使用SMBus模式,其時序如圖8所示。該傳輸模式規(guī)定,在同一時刻只有一個主控器有效,可以通過“寫數(shù)據(jù)”與“讀數(shù)據(jù)”方式完成主設(shè)備與模塊之間的數(shù)據(jù)傳遞,因此可使用樹莓派通過讀取RAM指定地址來讀取溫度數(shù)據(jù)。從MLX90614讀取的數(shù)據(jù)為16位,由高8位和低8位組成,范圍從0x27AD到0x7FFF,即-70 ℃到382.19 ℃,溫度數(shù)據(jù)To的計算方式為:To=高8位<<8|低8位。
若要得到攝氏溫度,首先將溫度數(shù)據(jù)To轉(zhuǎn)化為十進制,之后將得到的結(jié)果除以50,轉(zhuǎn)化為熱力學(xué)溫度,最后將得到的開爾文溫度減去273.15,得到攝氏溫度。
3.5 超聲波測距
超聲波測距基于超聲波渡越時間法[9]。設(shè)超聲波脈沖從傳感器發(fā)射又被傳感器接收的時間為t,超聲波在空氣中傳播的速度為v,則目標(biāo)物體到傳感器的距離x可由以下公式計算得出:
本文采用的HC-SR04超聲波測距模塊集成了CS100超聲波測距芯片,工作電壓范圍為3.3~5.5 V,可以提供2~600 cm的距離感應(yīng),探測精度為0.1(1±1%)cm。HC-SR04的測量過程如圖9所示。首先,向Trig管腳輸入一個大于10 μs的高電平,之后,發(fā)射探頭循環(huán)發(fā)出8個40 kHz的脈沖,并由HC-SR04通過Echo管腳向樹莓派返回一個持續(xù)時間為脈沖信號往返時間的高電平。測量過程中,整個測量周期取決于測量距離,測距模塊在Echo管腳輸出高電平后,即可開始下一次測量。測量距離較長時,測量周期便相應(yīng)增長。具體實現(xiàn)步驟如下:
(1)使用函數(shù)gpio_setup_cdev創(chuàng)建字符設(shè)備;
(2)使用gpio_open配置輸入接口;
(3)使用函數(shù)gpio_read讀取測距模塊發(fā)出的距離數(shù)據(jù);
(4)加入循環(huán)使設(shè)備可以持續(xù)讀入距離數(shù)據(jù)。
本文將該模塊安裝在收納桶的頂端,通過垃圾與頂部之間的距離估算垃圾的承載量,數(shù)據(jù)將用于滿溢判斷與清掃的路徑規(guī)劃。
3.6 煙霧報警檢測
煙霧傳感器的原理:利用氣敏材料在空氣中電阻率的不同,將煙霧或可燃氣體的濃度轉(zhuǎn)化為電信號。
MQ-2煙霧氣敏傳感器的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫,二氧化錫的電導(dǎo)率可以隨著可燃氣體和煙霧濃度的增大而增大。該傳感器具有TTL開關(guān)信號輸出和模擬電壓信號輸出兩種模式,為了得到較為準(zhǔn)確的氣體濃度信息,本文采用模擬信號輸出模式,利用其輸出電壓與濃度成正相關(guān)的特點,可以將模擬端(AO)輸出的信號輸入A/D轉(zhuǎn)換器,將模擬量轉(zhuǎn)換為與傳感器檢測濃度對應(yīng)的數(shù)字量,得到煙霧或可燃氣體濃度的精確值[10]。
3.7 手機客戶端
本文在基于Java環(huán)境下的擴展平臺Eclipse制作設(shè)計了配套的手機APP[11]。APP通過TCP通信協(xié)議連接至系統(tǒng)的云服務(wù)器,實時接收服務(wù)器獲取的垃圾桶數(shù)據(jù)信息,有助于管理人員得到最新數(shù)據(jù)。APP與服務(wù)器的通信方式與上文中樹莓派與服務(wù)器的通信方式一致,但實現(xiàn)的語言不同。實現(xiàn)過程分為4個步驟:建立Socket對象,通過IP與端口連接;創(chuàng)建接收與收發(fā)的資源配置;建立監(jiān)聽循環(huán)機制;跳出循環(huán)關(guān)閉連接。
本文APP的地圖顯示與路徑規(guī)劃功能通過調(diào)用高德地圖URI API接口實現(xiàn),具體實現(xiàn)方式如下:
(1)調(diào)用markers將街道垃圾桶位置添加入地圖;
(2)將垃圾桶位置與下傳數(shù)據(jù)捆綁,實現(xiàn)可視化與數(shù)據(jù)查看的功能結(jié)合;
(3)通過調(diào)取滿溢垃圾桶位置,將各滿溢或即將滿溢的垃圾桶串聯(lián),設(shè)置起始位置和經(jīng)過位置,將mode設(shè)置為walk,將callnative的值設(shè)置為0,由此實現(xiàn)路徑可視化。
APP具體功能如下:
(1)點擊數(shù)據(jù)地圖上的垃圾桶圖標(biāo),查看垃圾桶的各項數(shù)據(jù);
(2)出現(xiàn)火情時,手機APP報警,通知相關(guān)人員及時處理;
(3)可以自動規(guī)劃最優(yōu)清潔路徑,既減輕了清潔人員的工作壓力,也可以讓急需清理的垃圾桶得到及時處理,提高工作效率。
4 實驗結(jié)果
系統(tǒng)測試分為如下兩個方面:
(1)測試垃圾桶的垃圾處理性能,已在軟件部分進行展示;
(2)測試軟件系統(tǒng)的能力,本文通過選取一定區(qū)域,用服務(wù)器模擬情景進行測試。
垃圾桶數(shù)據(jù)地圖如圖10所示。改變服務(wù)器發(fā)送的相關(guān)參數(shù),測試火情情況,手機客戶端的報警系統(tǒng)如圖11所示。垃圾桶清潔路徑規(guī)劃如圖12所示。
5 結(jié) 語
本文設(shè)計了一種基于NB-IoT的垃圾分類及處理系統(tǒng),其上位機是手機APP客戶端,下位機由樹莓派及其搭載的紅外測溫傳感器、超聲波測距模塊、煙霧及可燃氣體傳感器以及電機和垃圾箱本體等組成。通過攝像頭采集圖像數(shù)據(jù),圖像識別系統(tǒng)對垃圾進行自主識別,將垃圾分類投放,通過溫度傳感器和煙霧傳感器上傳到處理器的數(shù)據(jù)判斷是否有火情發(fā)生,若溫度和煙霧濃度超過安全閾值則向手機APP發(fā)送火情警報。最后把垃圾桶裝載信息送入服務(wù)器,形成垃圾桶數(shù)據(jù)地圖,在手機客戶端查看,如果有火情發(fā)生,會在客戶端報警,通知相關(guān)人員及時處理。如果垃圾桶的裝載量達到設(shè)定閾值,便會規(guī)劃出清潔路徑,通知清潔工進行處理。測試結(jié)果表明,此系統(tǒng)可以可靠地工作,相較于傳統(tǒng)垃圾桶,可以減輕普通居民生活壓力和清潔工的工作壓力,提高垃圾分類效率,高效地對垃圾進行分類、處理,并能夠即時報警,在物聯(lián)網(wǎng)時代擁有出色的應(yīng)用前景。
參考文獻
[1]張文涯.基于嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[D].成都:西南交通大學(xué),2009.
[2]何進,謝松巍.基于Socket的TCP/IP網(wǎng)絡(luò)通信模式研究[J].計算機應(yīng)用研究,2001(8):134-135.
[3]江衍煊,鄭振杰,游德智.單片機連接ULN2003驅(qū)動步進電機的應(yīng)用[J].機電元件,2010,30(3):28-31.
[4] Sadaqat ur Rehman,Shanshan Tu,Muhammad Waqas,et al. Unsupervised pre-trained filter learning approach for efficient convolution neural network [J]. Neurocomputing,2019.
[5] KRIZHEVSKY A,SUTSKEVER I,HINTON G. ImageNet Classification with Deep Convolutional Neural Networks [C]// NIPS. Curran Associates Inc. 2012.
[6] Kin Wah Edward Lin,B T Balamurali,Enyan Koh,et al. Singing voice separation using a deep convolutional neural network trained by ideal binary mask and cross entropy [J]. Neural computing and applications,2020,32(4):1037-1050.
[7]李靜,裘祖榮,齊永利.MLX90601系列紅外測溫模塊的原理及應(yīng)用[J].國外電子元器件,2006(1):47-50.
[8]崔健,魯志平.SMBus協(xié)議分析及其在雙MCU通信中的應(yīng)用[J].微計算機信息,2004(6):99-100.
[9]李軍,申俊澤.超聲測距模塊HC-SR04的超聲波測距儀設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2011,11(10):77-78.
[10]張群強,趙巧妮.基于MQ-2型傳感器火災(zāi)報警系統(tǒng)的設(shè)計[J].價值工程,2015,34(13):96-98.
[11]謝恩澤華,劉向前,王小麗,等.利用手機APP制作平臺建設(shè)組織胚胎學(xué)移動學(xué)習(xí)課程的實踐與思考[J].中國組織化學(xué)與細胞化學(xué)雜志,2015,24(2):193-194.