金莉娟 劉棲昌 張許如 劉峻杰





摘? 要:為解決使用普通垃圾桶時采用人工分揀垃圾造成垃圾分類不準確、效率低下的問題,設計了一款基于樹莓派的智能分類垃圾桶。該垃圾桶的分類算法基于TensorFlow架構,采用全卷積網絡(Fully Convolutional Networks, FCN)實現對垃圾圖像特征的學習和識別,用于訓練數據集以改進圖像識別的準確率,并明確垃圾所屬分類。實際應用時,利用傳感器采集數據,利用攝像頭識別物品,利用舵機帶動投放口到正確的分類位置投放垃圾,并且語音播報當前的垃圾種類。本研究共收集了五類垃圾圖像,每類圖像訓練34 組,每組150 次。實驗結果表明,該智能垃圾桶的分類準確率可達到85%以上,具有較好的分類效果。
關鍵詞:垃圾分類;樹莓派;TensorFlow;FCN;深度學習
中圖分類號:TP399? ? ?文獻標識碼: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)
隨著社會的發展,傳統的垃圾分類方式且僅限于手動開關垃圾桶已不能滿足人們的生活需求[1]。為此,國內外開展了廣泛研究,如美國的Transhbot和BigBelly、芬蘭的Enevo,它們大多基于實時檢測、自動報警、液晶顯示屏進行設計,但是還未涉及垃圾自動分類[2];國內也進行了相關研究,主要分為太陽能垃圾桶與感應性垃圾桶,使得垃圾桶具有自動歸類、報警和持續監測等功能,但還不能滿足自動識別分類的需求[3]。
本文針對當前現狀,設計了一個基于樹莓派的智能分類垃圾桶。該垃圾分類系統能夠自動、準確地判斷出垃圾的類型,通過舵機帶動投放口到正確位置,打開擋板,將垃圾投放到桶內,從而實現自動分類并可語音播報出垃圾的種類。此外,在垃圾桶滿載時,會發出滿載提醒。
2? ?系統結構(System structure)
垃圾分類系統主要由軟件和硬件組成,軟件的核心是分類算法,硬件的核心是樹莓派。該系統的硬件組成如圖1(a)所示,樹莓派Pi4B開發板結構如圖1(b)所示。
2.1? ?硬件結構
(1)選擇樹莓派Pi4B開發板作為核心硬件系統,該款產品較好地達到了系統的設計要求[4]。
(2)采用光電傳感器作為檢測垃圾容量的硬件系統。在垃圾容量達到75%以后啟用喇叭工具進行滿載提醒。光電傳感器在一般情況下由三部分構成:發送器、接收器和檢測電路。其基本原理是以光電效應為基礎,將被測物體的變化量轉換為光信號的變化,進而利用光電器件將非電信號轉換成電信號。
(3)使用托盤暫存待投擲垃圾。使用托盤暫存垃圾時,該垃圾桶的識別分類系統也正在工作,待垃圾識別完成后,依據垃圾的識別結果完成分類。
(4)利用攝像頭作為系統中的垃圾圖像采集裝置。使用攝像頭拍攝托盤上的垃圾圖像,垃圾桶的垃圾分類系統根據拍攝圖像對垃圾進行分類識別。
(5)采用舵機作為垃圾桶的投放驅動模塊。當明確了待投擲垃圾的所屬類別后,舵機帶動托盤旋轉,實現垃圾識別后的投放步驟。
2.2? ?軟件結構
(1)超聲波檢測
超聲波檢測軟件模塊依托超聲波傳感器硬件,基于GPIO框架編寫超聲波硬件的使用程序,判斷當前是否有垃圾待投放。
(2)圖像預處理
攝像頭拍攝到垃圾圖像后,使用OpenCV執行圖像預處理算法對圖像進行裁剪,去除無用的背景,便于后續的TensorFlow圖像分類。
(3)舵機驅動
舵機驅動軟件模塊依托舵機硬件,基于GPIO框架編寫雙舵機硬件的使用程序,使之能夠根據垃圾圖像分類模塊的輸出驅動舵機轉動合適角度,從而將垃圾投入正確的分類垃圾桶中。
(4)圖像分類算法
運用TensorFlow算法完成對圖像的分類處理,識別出垃圾所屬的類別,并能夠用此算法提升圖像識別的準確率,以及實現精準分類。
3? ?工作原理(Operating principle)
采用計算機視覺系統識別,通過大量的垃圾圖像,應用深度學習算法進行分類訓練,通過樹莓派上的視覺系統,檢測當前拍攝的垃圾,最終用舵機將識別出的垃圾放置到不同的垃圾桶,從而實現垃圾分類的目的。
第一步,將待分類垃圾放于置物板上,攝像頭檢測到有垃圾待分類,智能分類垃圾桶進入工作狀態。第二步,垃圾桶開始轉動,轉動角度由檢測到的垃圾類型確定,可以旋轉0°、90°、180°、270°。待對應垃圾桶轉動到平臺位置下方時,置物板開始轉動,垃圾被周圍擋板阻攔,無法移動,只能掉入下方垃圾儲存區域。第三步,置物板逆方向轉動,回到檢測平臺的位置,垃圾桶逆方向轉動,回到原始位置,垃圾桶完成一次工作,等待下一次工作周期的到來,再一次進行垃圾智能分類操作。第四步,攝像頭通過USB連接將識別的圖像發送到樹莓派核心端;舵機用于控制擋板的開啟以及關閉,控制置物板的旋轉,確保垃圾投放;干簧管是一個有觸點的無源電子開關原件;光電反射傳感器可以檢測到投放的生活垃圾是否超過垃圾桶容量的75%;語音播報功能將實時播送當前的垃圾類別,從而可以在顯示屏上直接顯示,使用戶能夠方便、快捷地查閱信息。
4? 基于TensorFlow的圖像分類算法(Image classification algorithm based on TensorFlow)
本研究的核心是TensorFlow,用于數據集模型的訓練,從而提升圖像識別的準確率以及實現精準分類,包括圖像隨機旋轉、圖像隨機亮度控制、圖像隨機平移、圖像隨機縮放空間維度。通過TensorFlow框架構建卷積神經網絡(Convolutional Neural Network, CNN)模型并得到一個基于垃圾分類的訓練模型。將需要識別的圖像帶入模型中配比,確定所識別圖像的類型。該圖像分類算法的網絡主要分為五層:輸入層、卷積層、池化層、全連接層和輸出層[5],網絡結構如圖2所示。
輸入(Input)層:輸入要訓練的圖像信息。本研究中輸入的圖像像素為224×224,深度為3。
卷積(Convolution)層和池化(Pooling)層:卷積層和池化層的主要作用是保留主要特征的同時減少計算量和參數,防止過擬合,提高模型的泛化能力。本研究中輸入圖像的每個通道分別從左上角開始,并取與卷積核相同的大小后,與卷積核的對應部分分別進行內積運算,并將內積運算得到的結果相加,再加上0核的值,就可以得到特征值左上角的元素值。按照(2,2)的步長移動卷積核,直至輸入圖像被整個覆蓋,就可以得到最終的特征值。
全連接(Fully Connected)層:將卷積層、池化層中通過運算得到的特征空間在樣本中映射并標記,即將特征表示整合為一個值。在本研究中使用ReLU激活函數[6],其有以下三個優點:
(1)使用ReLU激活函數進行運算時計算量較小。因反向傳播求誤差梯度時,需要運用求導計算,使得計算量相較于Rule激活函數大得多,所以本研究中采用ReLU激活函數,整個過程就只需要進行加、乘和比較的操作,計算上效率更高。
(2)對于深度神經網絡來說,ReLU激活函數比其他函數更適用于本研究。如Sigmoid函數在反向傳播過程中,由于接近飽和區時變換速率較為緩慢,使得求導后的值趨向于0,導致信息丟失,從而較為容易出現梯度消散的情況,將會發生深度神經網絡訓練無法完成的情況。
(3)ReLU激活函數會使部分神經元的輸出為0,可以延緩網絡的擁堵,并減少相關參數的相互依存關系,從而使得過擬合問題得到緩解。
輸出(Output)層:輸出層主要負責輸出最后的結果。本研究中,在輸出層中的計算與輸入層相似[7]。兩者之間的區別在于,輸出層一般在擬定參數時,所輸出的節點數目必須與卷積層中分類標記的數目相吻合,并且在運算處理這一過程完成后,再使用Softmax函數來得到測試圖像在各個標記分類中的概率,并且各分類中的概率相加之和需要等于1[8]。
5? TensorFlow在智能垃圾分類系統中的應用(Application of TensorFlow in intelligent garbage classification system)
本研究的重點是對垃圾進行分類,研究目標和內容是辨別生活中較為常見的垃圾類別,如果蔬殘渣、易拉罐、塑料瓶、金屬等。因目前關于垃圾分類問題的研究中沒有公開的垃圾圖像庫,所以該研究中所使用的圖像都為手動收集并上傳。因收集到的圖像的像素值較小,故對每一張垃圾圖像都做了處理,如圖3所示。
本研究使用的深度學習網絡中含有三個層,其中卷積層使用的是7×7×3的卷積核,步長為2,在池化層選用常見的最大池化max_pooling。其中算法處理部分在樹莓派中進行,使用深度學習算法進行分類訓練,使用全卷積網絡(FCN)構建模型[9]。FCN是對圖像進行像素級的分類,即對圖像上的各個像素進行分類,這就需要一個上采樣將最后得到的輸出上采樣到原圖的大小,從而解決語義級別的圖像分割問題。FCN可以接受任意尺寸的輸入圖像,采用反卷積層對最后一個卷積層的特征圖進行上采樣,使它恢復到與輸入圖像相同的尺寸,并可以對每一個像素都產生一個預測,同時保留了原始輸入圖像中的空間信息,其原理如圖4所示。
使用預訓練的網絡和在ImageNet數據集上訓練好的模型參數進行初始化,從而訓練自己的數據集。之所以使用預訓練的網絡來初始化而不使用隨機初始化是因為預訓練的網絡可以加速訓練,好的預訓練模型可以避免陷入局部最優點或鞍點。加快梯度下降的收斂速度,更有可能獲得一個低模型誤差或者低泛化誤差的模型,并在訓練圖像訓練集時邊訓練邊保存構建的模型,生成測試集。再通過樹莓派上的視覺處理,在樹莓派的擋板上置放垃圾,并將OpenCV的圖像分析處理以及數據集的系統訓練和準確辨別垃圾種類的功能模塊放置在人機交互的界面如PC端進行,進一步通過樹莓派上的端口相連,將訓練好的數據集直接發送至樹莓派上,操縱垃圾桶的轉動。此外,打開樹莓派的擋板,將垃圾投放在設定的垃圾桶區域中,進而完成垃圾的自動分類。
部分關鍵代碼實例如下:
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? ?實驗結果(Experimental result)
本系統使用深度學習算法訓練該項目所需要的圖像數據集模型。為了驗證該模型對垃圾類別的判斷是否準確,本研究共收集了五類垃圾的圖像,垃圾種類分別為可回收、不可回收、廚余、有害以及其他垃圾,每種類別訓練34 組,每組150 次。其中可回收與不可回收垃圾的識別準確率能夠達到89.7%,廚余和有害垃圾的識別準確率能夠達到85.3%,其他垃圾類別的識別準確率能夠達到86.3%。由圖5可知,隨著訓練次數的增加,所拍攝的垃圾照片與圖像資源庫內照片的匹配度和識別準確率增加;訓練次數越多,損失函數越少,垃圾種類的識別準確率越高。本實驗從總體上看識別準確率較高,滿足該項目設計的基本需求,實現了該項目所要達到的精準分類的要求。
7? ?結論(Conclusion)
本文通過樹莓派平臺,采用軟硬件相結合的設計方法,使用深度學習算法進行垃圾圖像的分類訓練,設計了一款全自動垃圾分類垃圾桶。其主要采用FCN方法進行垃圾歸類,通過語音播報模塊來播報垃圾種類,在檢測垃圾種類的同時做好垃圾分類置放。這樣不僅能解放勞動力,還能在一定程度上節省財力。該新型智能垃圾桶不僅結構簡單,制造成本低,而且使用便捷,適合面向廣大家庭用戶進行推廣[10]。與此同時,我們的設計還存在一定的優化空間,后期我們將使用深度學習方法訓練更多的數據集,以進一步提高垃圾分類的準確率,同時也將美化智能垃圾桶的外觀,并添加太陽能供電模塊以節約電力資源,為社會的環保工作貢獻出自己的一分力量。
參考文獻(References)
[1] 于雯,王艷,張佳佳,等.多功能智能垃圾桶結構設計和功能實現[J].工業儀表與自動化裝置,2022(01):117-120.
[2] 王琪,李波濤.可持續性設計——戶外智能垃圾桶設計研究[J].藝術與設計(理論),2019,2(08):111-112.
[3] 李繼超,賀曉倩,權亞騰,等.一種室內智能語音識別垃圾分類系統的設計[J]自動化與儀表,2021(11):103-108.
[4] 于潤滋,李麗萍.基于深度機器學習和RFID的垃圾分類系統設計[J].榆林學院學報,2021,31(04):40-43.
[5] 祝朝坤,魏倫勝.基于TensorFlow的智能垃圾分類系統的研究與設計[J].電子產品世界,2020,27(06):71-75.
[6] 江志.基于圖形相似性和零件相關性的模具零件庫檢索技術的研究及應用[D].杭州:浙江大學,2020.
[7] 張鑫,姚慶安,趙健,等.全卷積神經網絡圖像語義分割方法綜述[J].計算機工程與應用,2022,59(03):1-16.
[8] 毋立芳,賀嬌瑜,簡萌,等.局部聚類分析的FCN-CNN云圖分割方法[J].軟件學報,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平臺智能分類垃圾桶的設計及應用[J].科技創新與生產力,2021(10):113-114.
作者簡介:
金莉娟(2002-),女,本科生.研究領域:計算機科學與技術.
劉棲昌(2001-),男,本科生.研究領域:計算機科學與技術.
張許如(2001-),女,本科生.研究領域:計算機科學與技術.
劉峻杰(2001-),男,本科生.研究領域:計算機科學與技術.