金莉娟 劉棲昌 張?jiān)S如 劉峻杰
摘? 要:為解決使用普通垃圾桶時(shí)采用人工分揀垃圾造成垃圾分類不準(zhǔn)確、效率低下的問題,設(shè)計(jì)了一款基于樹莓派的智能分類垃圾桶。該垃圾桶的分類算法基于TensorFlow架構(gòu),采用全卷積網(wǎng)絡(luò)(Fully Convolutional Networks, FCN)實(shí)現(xiàn)對(duì)垃圾圖像特征的學(xué)習(xí)和識(shí)別,用于訓(xùn)練數(shù)據(jù)集以改進(jìn)圖像識(shí)別的準(zhǔn)確率,并明確垃圾所屬分類。實(shí)際應(yīng)用時(shí),利用傳感器采集數(shù)據(jù),利用攝像頭識(shí)別物品,利用舵機(jī)帶動(dòng)投放口到正確的分類位置投放垃圾,并且語音播報(bào)當(dāng)前的垃圾種類。本研究共收集了五類垃圾圖像,每類圖像訓(xùn)練34 組,每組150 次。實(shí)驗(yàn)結(jié)果表明,該智能垃圾桶的分類準(zhǔn)確率可達(dá)到85%以上,具有較好的分類效果。
關(guān)鍵詞:垃圾分類;樹莓派;TensorFlow;FCN;深度學(xué)習(xí)
中圖分類號(hào):TP399? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
Design of a Intelligent Classification Garbage Can based on Raspberry Pi
JIN Lijuan, LIU Qichang, ZHANG Xuru, LIU Junjie
Abstract: Aiming at the problem of inaccurate garbage classification and low efficiency caused by manual classification of garbage when using ordinary garbage cans, this paper proposes to design an intelligent classification garbage can based on Raspberry Pi. Its classification algorithm is based on TensorFlow architecture, and FCN (Fully Convolutional Networks) is used to realize the learning and recognition of garbage image features, which is used to train the data set to improve the accuracy of image recognition and clarify the classification of garbage. In practical applications, sensors are used to collect data, cameras to identify items, steering gears to drive the discharge port to the correct classification position, and the current type of garbage is broadcast by voice. In this study, a total of 5 types of garbage images are collected. Each type of image is trained for 34 groups, 150 times in each group. The experimental results show that the classification accuracy of the intelligent garbage can reaches more than 85%, which has a good classification effect.
Keywords: garbage classification; Raspberry Pi; TensorFlow; FCN; deep learning
1? ?引言(Introduction)
隨著社會(huì)的發(fā)展,傳統(tǒng)的垃圾分類方式且僅限于手動(dòng)開關(guān)垃圾桶已不能滿足人們的生活需求[1]。為此,國內(nèi)外開展了廣泛研究,如美國的Transhbot和BigBelly、芬蘭的Enevo,它們大多基于實(shí)時(shí)檢測(cè)、自動(dòng)報(bào)警、液晶顯示屏進(jìn)行設(shè)計(jì),但是還未涉及垃圾自動(dòng)分類[2];國內(nèi)也進(jìn)行了相關(guān)研究,主要分為太陽能垃圾桶與感應(yīng)性垃圾桶,使得垃圾桶具有自動(dòng)歸類、報(bào)警和持續(xù)監(jiān)測(cè)等功能,但還不能滿足自動(dòng)識(shí)別分類的需求[3]。
本文針對(duì)當(dāng)前現(xiàn)狀,設(shè)計(jì)了一個(gè)基于樹莓派的智能分類垃圾桶。該垃圾分類系統(tǒng)能夠自動(dòng)、準(zhǔn)確地判斷出垃圾的類型,通過舵機(jī)帶動(dòng)投放口到正確位置,打開擋板,將垃圾投放到桶內(nèi),從而實(shí)現(xiàn)自動(dòng)分類并可語音播報(bào)出垃圾的種類。此外,在垃圾桶滿載時(shí),會(huì)發(fā)出滿載提醒。
2? ?系統(tǒng)結(jié)構(gòu)(System structure)
垃圾分類系統(tǒng)主要由軟件和硬件組成,軟件的核心是分類算法,硬件的核心是樹莓派。該系統(tǒng)的硬件組成如圖1(a)所示,樹莓派Pi4B開發(fā)板結(jié)構(gòu)如圖1(b)所示。
2.1? ?硬件結(jié)構(gòu)
(1)選擇樹莓派Pi4B開發(fā)板作為核心硬件系統(tǒng),該款產(chǎn)品較好地達(dá)到了系統(tǒng)的設(shè)計(jì)要求[4]。
(2)采用光電傳感器作為檢測(cè)垃圾容量的硬件系統(tǒng)。在垃圾容量達(dá)到75%以后啟用喇叭工具進(jìn)行滿載提醒。光電傳感器在一般情況下由三部分構(gòu)成:發(fā)送器、接收器和檢測(cè)電路。其基本原理是以光電效應(yīng)為基礎(chǔ),將被測(cè)物體的變化量轉(zhuǎn)換為光信號(hào)的變化,進(jìn)而利用光電器件將非電信號(hào)轉(zhuǎn)換成電信號(hào)。
(3)使用托盤暫存待投擲垃圾。使用托盤暫存垃圾時(shí),該垃圾桶的識(shí)別分類系統(tǒng)也正在工作,待垃圾識(shí)別完成后,依據(jù)垃圾的識(shí)別結(jié)果完成分類。
(4)利用攝像頭作為系統(tǒng)中的垃圾圖像采集裝置。使用攝像頭拍攝托盤上的垃圾圖像,垃圾桶的垃圾分類系統(tǒng)根據(jù)拍攝圖像對(duì)垃圾進(jìn)行分類識(shí)別。
(5)采用舵機(jī)作為垃圾桶的投放驅(qū)動(dòng)模塊。當(dāng)明確了待投擲垃圾的所屬類別后,舵機(jī)帶動(dòng)托盤旋轉(zhuǎn),實(shí)現(xiàn)垃圾識(shí)別后的投放步驟。
2.2? ?軟件結(jié)構(gòu)
(1)超聲波檢測(cè)
超聲波檢測(cè)軟件模塊依托超聲波傳感器硬件,基于GPIO框架編寫超聲波硬件的使用程序,判斷當(dāng)前是否有垃圾待投放。
(2)圖像預(yù)處理
攝像頭拍攝到垃圾圖像后,使用OpenCV執(zhí)行圖像預(yù)處理算法對(duì)圖像進(jìn)行裁剪,去除無用的背景,便于后續(xù)的TensorFlow圖像分類。
(3)舵機(jī)驅(qū)動(dòng)
舵機(jī)驅(qū)動(dòng)軟件模塊依托舵機(jī)硬件,基于GPIO框架編寫雙舵機(jī)硬件的使用程序,使之能夠根據(jù)垃圾圖像分類模塊的輸出驅(qū)動(dòng)舵機(jī)轉(zhuǎn)動(dòng)合適角度,從而將垃圾投入正確的分類垃圾桶中。
(4)圖像分類算法
運(yùn)用TensorFlow算法完成對(duì)圖像的分類處理,識(shí)別出垃圾所屬的類別,并能夠用此算法提升圖像識(shí)別的準(zhǔn)確率,以及實(shí)現(xiàn)精準(zhǔn)分類。
3? ?工作原理(Operating principle)
采用計(jì)算機(jī)視覺系統(tǒng)識(shí)別,通過大量的垃圾圖像,應(yīng)用深度學(xué)習(xí)算法進(jìn)行分類訓(xùn)練,通過樹莓派上的視覺系統(tǒng),檢測(cè)當(dāng)前拍攝的垃圾,最終用舵機(jī)將識(shí)別出的垃圾放置到不同的垃圾桶,從而實(shí)現(xiàn)垃圾分類的目的。
第一步,將待分類垃圾放于置物板上,攝像頭檢測(cè)到有垃圾待分類,智能分類垃圾桶進(jìn)入工作狀態(tài)。第二步,垃圾桶開始轉(zhuǎn)動(dòng),轉(zhuǎn)動(dòng)角度由檢測(cè)到的垃圾類型確定,可以旋轉(zhuǎn)0°、90°、180°、270°。待對(duì)應(yīng)垃圾桶轉(zhuǎn)動(dòng)到平臺(tái)位置下方時(shí),置物板開始轉(zhuǎn)動(dòng),垃圾被周圍擋板阻攔,無法移動(dòng),只能掉入下方垃圾儲(chǔ)存區(qū)域。第三步,置物板逆方向轉(zhuǎn)動(dòng),回到檢測(cè)平臺(tái)的位置,垃圾桶逆方向轉(zhuǎn)動(dòng),回到原始位置,垃圾桶完成一次工作,等待下一次工作周期的到來,再一次進(jìn)行垃圾智能分類操作。第四步,攝像頭通過USB連接將識(shí)別的圖像發(fā)送到樹莓派核心端;舵機(jī)用于控制擋板的開啟以及關(guān)閉,控制置物板的旋轉(zhuǎn),確保垃圾投放;干簧管是一個(gè)有觸點(diǎn)的無源電子開關(guān)原件;光電反射傳感器可以檢測(cè)到投放的生活垃圾是否超過垃圾桶容量的75%;語音播報(bào)功能將實(shí)時(shí)播送當(dāng)前的垃圾類別,從而可以在顯示屏上直接顯示,使用戶能夠方便、快捷地查閱信息。
4? 基于TensorFlow的圖像分類算法(Image classification algorithm based on TensorFlow)
本研究的核心是TensorFlow,用于數(shù)據(jù)集模型的訓(xùn)練,從而提升圖像識(shí)別的準(zhǔn)確率以及實(shí)現(xiàn)精準(zhǔn)分類,包括圖像隨機(jī)旋轉(zhuǎn)、圖像隨機(jī)亮度控制、圖像隨機(jī)平移、圖像隨機(jī)縮放空間維度。通過TensorFlow框架構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)模型并得到一個(gè)基于垃圾分類的訓(xùn)練模型。將需要識(shí)別的圖像帶入模型中配比,確定所識(shí)別圖像的類型。該圖像分類算法的網(wǎng)絡(luò)主要分為五層:輸入層、卷積層、池化層、全連接層和輸出層[5],網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
輸入(Input)層:輸入要訓(xùn)練的圖像信息。本研究中輸入的圖像像素為224×224,深度為3。
卷積(Convolution)層和池化(Pooling)層:卷積層和池化層的主要作用是保留主要特征的同時(shí)減少計(jì)算量和參數(shù),防止過擬合,提高模型的泛化能力。本研究中輸入圖像的每個(gè)通道分別從左上角開始,并取與卷積核相同的大小后,與卷積核的對(duì)應(yīng)部分分別進(jìn)行內(nèi)積運(yùn)算,并將內(nèi)積運(yùn)算得到的結(jié)果相加,再加上0核的值,就可以得到特征值左上角的元素值。按照(2,2)的步長(zhǎng)移動(dòng)卷積核,直至輸入圖像被整個(gè)覆蓋,就可以得到最終的特征值。
全連接(Fully Connected)層:將卷積層、池化層中通過運(yùn)算得到的特征空間在樣本中映射并標(biāo)記,即將特征表示整合為一個(gè)值。在本研究中使用ReLU激活函數(shù)[6],其有以下三個(gè)優(yōu)點(diǎn):
(1)使用ReLU激活函數(shù)進(jìn)行運(yùn)算時(shí)計(jì)算量較小。因反向傳播求誤差梯度時(shí),需要運(yùn)用求導(dǎo)計(jì)算,使得計(jì)算量相較于Rule激活函數(shù)大得多,所以本研究中采用ReLU激活函數(shù),整個(gè)過程就只需要進(jìn)行加、乘和比較的操作,計(jì)算上效率更高。
(2)對(duì)于深度神經(jīng)網(wǎng)絡(luò)來說,ReLU激活函數(shù)比其他函數(shù)更適用于本研究。如Sigmoid函數(shù)在反向傳播過程中,由于接近飽和區(qū)時(shí)變換速率較為緩慢,使得求導(dǎo)后的值趨向于0,導(dǎo)致信息丟失,從而較為容易出現(xiàn)梯度消散的情況,將會(huì)發(fā)生深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練無法完成的情況。
(3)ReLU激活函數(shù)會(huì)使部分神經(jīng)元的輸出為0,可以延緩網(wǎng)絡(luò)的擁堵,并減少相關(guān)參數(shù)的相互依存關(guān)系,從而使得過擬合問題得到緩解。
輸出(Output)層:輸出層主要負(fù)責(zé)輸出最后的結(jié)果。本研究中,在輸出層中的計(jì)算與輸入層相似[7]。兩者之間的區(qū)別在于,輸出層一般在擬定參數(shù)時(shí),所輸出的節(jié)點(diǎn)數(shù)目必須與卷積層中分類標(biāo)記的數(shù)目相吻合,并且在運(yùn)算處理這一過程完成后,再使用Softmax函數(shù)來得到測(cè)試圖像在各個(gè)標(biāo)記分類中的概率,并且各分類中的概率相加之和需要等于1[8]。
5? TensorFlow在智能垃圾分類系統(tǒng)中的應(yīng)用(Application of TensorFlow in intelligent garbage classification system)
本研究的重點(diǎn)是對(duì)垃圾進(jìn)行分類,研究目標(biāo)和內(nèi)容是辨別生活中較為常見的垃圾類別,如果蔬殘?jiān)?、易拉罐、塑料瓶、金屬等。因目前關(guān)于垃圾分類問題的研究中沒有公開的垃圾圖像庫,所以該研究中所使用的圖像都為手動(dòng)收集并上傳。因收集到的圖像的像素值較小,故對(duì)每一張垃圾圖像都做了處理,如圖3所示。
本研究使用的深度學(xué)習(xí)網(wǎng)絡(luò)中含有三個(gè)層,其中卷積層使用的是7×7×3的卷積核,步長(zhǎng)為2,在池化層選用常見的最大池化max_pooling。其中算法處理部分在樹莓派中進(jìn)行,使用深度學(xué)習(xí)算法進(jìn)行分類訓(xùn)練,使用全卷積網(wǎng)絡(luò)(FCN)構(gòu)建模型[9]。FCN是對(duì)圖像進(jìn)行像素級(jí)的分類,即對(duì)圖像上的各個(gè)像素進(jìn)行分類,這就需要一個(gè)上采樣將最后得到的輸出上采樣到原圖的大小,從而解決語義級(jí)別的圖像分割問題。FCN可以接受任意尺寸的輸入圖像,采用反卷積層對(duì)最后一個(gè)卷積層的特征圖進(jìn)行上采樣,使它恢復(fù)到與輸入圖像相同的尺寸,并可以對(duì)每一個(gè)像素都產(chǎn)生一個(gè)預(yù)測(cè),同時(shí)保留了原始輸入圖像中的空間信息,其原理如圖4所示。
使用預(yù)訓(xùn)練的網(wǎng)絡(luò)和在ImageNet數(shù)據(jù)集上訓(xùn)練好的模型參數(shù)進(jìn)行初始化,從而訓(xùn)練自己的數(shù)據(jù)集。之所以使用預(yù)訓(xùn)練的網(wǎng)絡(luò)來初始化而不使用隨機(jī)初始化是因?yàn)轭A(yù)訓(xùn)練的網(wǎng)絡(luò)可以加速訓(xùn)練,好的預(yù)訓(xùn)練模型可以避免陷入局部最優(yōu)點(diǎn)或鞍點(diǎn)。加快梯度下降的收斂速度,更有可能獲得一個(gè)低模型誤差或者低泛化誤差的模型,并在訓(xùn)練圖像訓(xùn)練集時(shí)邊訓(xùn)練邊保存構(gòu)建的模型,生成測(cè)試集。再通過樹莓派上的視覺處理,在樹莓派的擋板上置放垃圾,并將OpenCV的圖像分析處理以及數(shù)據(jù)集的系統(tǒng)訓(xùn)練和準(zhǔn)確辨別垃圾種類的功能模塊放置在人機(jī)交互的界面如PC端進(jìn)行,進(jìn)一步通過樹莓派上的端口相連,將訓(xùn)練好的數(shù)據(jù)集直接發(fā)送至樹莓派上,操縱垃圾桶的轉(zhuǎn)動(dòng)。此外,打開樹莓派的擋板,將垃圾投放在設(shè)定的垃圾桶區(qū)域中,進(jìn)而完成垃圾的自動(dòng)分類。
部分關(guān)鍵代碼實(shí)例如下:
model=Sequential([
Conv2D(filters=32,kernel_size=3,padding='same',
activation='relu',input_shape=(480,480,3)),MaxPooling2D
(pool_size=2),
Conv2D(filters=64,kernel_size=3,padding='same',
activation='relu'),
MaxPooling2D(pool_size=2),
Conv2D(filters=32,kernel_size=3,padding='same', activation='relu'),
MaxPooling2D(pool_size=2),
Conv2D(filters=32,kernel_size=3,padding='same',
activation='relu'),
MaxPooling2D(pool_size=2),
Conv2D(filters=32,kernel_size=3,padding='same', activation='relu'),
MaxPooling2D(pool_size=2),
Flatten(),
Dense(64,activation='relu'),
Dense(5,activation='softmax')
])
train_datagen=ImageDataGenerator(
rescale=1./225,shear_range=0.1,zoom_range=0.1,width_shift_range=0.1,height_shift_range=0.1,horizontal_flip=True,vertical_flip=True, validation_split=0.1)
test_datagen=ImageDataGenerator(
rescale=1./255,validation_split=0.1)
train_generator=train_datagen.flow_from_directory(base_path,target_size=(480,480),batch_size=16,class_mode='categorical',subset='training', seed=0)
validation_generator=test_datagen.flow_from_directory(
base_path, target_size=(480,480),batch_size=16,
class_mode='categorical', subset='validation'seed=0)
labels=(train_generator.class_indices)
labels=dict((v,k) for k,v in labels.items())? print(labels)
Checkpoint=ModelCheckpoint(filepath='weights.
best.hdf5',monitor='acc',verbose=1,save_best_only=True,mode='max',save_freq=2)
model.compile(loss='categorical_crossentropy',optimizer=
'adam',metrics=['acc'])
6? ?實(shí)驗(yàn)結(jié)果(Experimental result)
本系統(tǒng)使用深度學(xué)習(xí)算法訓(xùn)練該項(xiàng)目所需要的圖像數(shù)據(jù)集模型。為了驗(yàn)證該模型對(duì)垃圾類別的判斷是否準(zhǔn)確,本研究共收集了五類垃圾的圖像,垃圾種類分別為可回收、不可回收、廚余、有害以及其他垃圾,每種類別訓(xùn)練34 組,每組150 次。其中可回收與不可回收垃圾的識(shí)別準(zhǔn)確率能夠達(dá)到89.7%,廚余和有害垃圾的識(shí)別準(zhǔn)確率能夠達(dá)到85.3%,其他垃圾類別的識(shí)別準(zhǔn)確率能夠達(dá)到86.3%。由圖5可知,隨著訓(xùn)練次數(shù)的增加,所拍攝的垃圾照片與圖像資源庫內(nèi)照片的匹配度和識(shí)別準(zhǔn)確率增加;訓(xùn)練次數(shù)越多,損失函數(shù)越少,垃圾種類的識(shí)別準(zhǔn)確率越高。本實(shí)驗(yàn)從總體上看識(shí)別準(zhǔn)確率較高,滿足該項(xiàng)目設(shè)計(jì)的基本需求,實(shí)現(xiàn)了該項(xiàng)目所要達(dá)到的精準(zhǔn)分類的要求。
7? ?結(jié)論(Conclusion)
本文通過樹莓派平臺(tái),采用軟硬件相結(jié)合的設(shè)計(jì)方法,使用深度學(xué)習(xí)算法進(jìn)行垃圾圖像的分類訓(xùn)練,設(shè)計(jì)了一款全自動(dòng)垃圾分類垃圾桶。其主要采用FCN方法進(jìn)行垃圾歸類,通過語音播報(bào)模塊來播報(bào)垃圾種類,在檢測(cè)垃圾種類的同時(shí)做好垃圾分類置放。這樣不僅能解放勞動(dòng)力,還能在一定程度上節(jié)省財(cái)力。該新型智能垃圾桶不僅結(jié)構(gòu)簡(jiǎn)單,制造成本低,而且使用便捷,適合面向廣大家庭用戶進(jìn)行推廣[10]。與此同時(shí),我們的設(shè)計(jì)還存在一定的優(yōu)化空間,后期我們將使用深度學(xué)習(xí)方法訓(xùn)練更多的數(shù)據(jù)集,以進(jìn)一步提高垃圾分類的準(zhǔn)確率,同時(shí)也將美化智能垃圾桶的外觀,并添加太陽能供電模塊以節(jié)約電力資源,為社會(huì)的環(huán)保工作貢獻(xiàn)出自己的一分力量。
參考文獻(xiàn)(References)
[1] 于雯,王艷,張佳佳,等.多功能智能垃圾桶結(jié)構(gòu)設(shè)計(jì)和功能實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2022(01):117-120.
[2] 王琪,李波濤.可持續(xù)性設(shè)計(jì)——戶外智能垃圾桶設(shè)計(jì)研究[J].藝術(shù)與設(shè)計(jì)(理論),2019,2(08):111-112.
[3] 李繼超,賀曉倩,權(quán)亞騰,等.一種室內(nèi)智能語音識(shí)別垃圾分類系統(tǒng)的設(shè)計(jì)[J]自動(dòng)化與儀表,2021(11):103-108.
[4] 于潤(rùn)滋,李麗萍.基于深度機(jī)器學(xué)習(xí)和RFID的垃圾分類系統(tǒng)設(shè)計(jì)[J].榆林學(xué)院學(xué)報(bào),2021,31(04):40-43.
[5] 祝朝坤,魏倫勝.基于TensorFlow的智能垃圾分類系統(tǒng)的研究與設(shè)計(jì)[J].電子產(chǎn)品世界,2020,27(06):71-75.
[6] 江志.基于圖形相似性和零件相關(guān)性的模具零件庫檢索技術(shù)的研究及應(yīng)用[D].杭州:浙江大學(xué),2020.
[7] 張?chǎng)?,姚慶安,趙健,等.全卷積神經(jīng)網(wǎng)絡(luò)圖像語義分割方法綜述[J].計(jì)算機(jī)工程與應(yīng)用,2022,59(03):1-16.
[8] 毋立芳,賀嬌瑜,簡(jiǎn)萌,等.局部聚類分析的FCN-CNN云圖分割方法[J].軟件學(xué)報(bào),2018,29(4):1049-1059.
[9] DONG Z. Intelligent garbage classification system based on computer? vision[J]. International Core Journal of? Engineering, 2021, 7(4):147-152.
[10] 馬志寅.基于樹莓派和Modelarts平臺(tái)智能分類垃圾桶的設(shè)計(jì)及應(yīng)用[J].科技創(chuàng)新與生產(chǎn)力,2021(10):113-114.
作者簡(jiǎn)介:
金莉娟(2002-),女,本科生.研究領(lǐng)域:計(jì)算機(jī)科學(xué)與技術(shù).
劉棲昌(2001-),男,本科生.研究領(lǐng)域:計(jì)算機(jī)科學(xué)與技術(shù).
張?jiān)S如(2001-),女,本科生.研究領(lǐng)域:計(jì)算機(jī)科學(xué)與技術(shù).
劉峻杰(2001-),男,本科生.研究領(lǐng)域:計(jì)算機(jī)科學(xué)與技術(shù).