莫慶煒,李宏順,張成發(fā),龐承諾,潘有椿,王曉敏
(廣西民族師范學院 數理與電子信息工程學院,廣西崇左,532200)
隨著社會經濟發(fā)展水平不斷提升,人們的物質需求越加提高,所產生的垃圾也更多。現代科技不斷改革下,社會治理理念已發(fā)生轉變,許多國家已出臺垃圾分類相關政策,垃圾分類已是人們關注的熱點之一。對此,為踐行“環(huán)保、綠色、衛(wèi)生”的理念,結合當下人工智能科技不斷地飛速發(fā)展下,本文設計一款智能垃圾分類系統,該系統是一款集信息處理、人工智能的一體化設計,實現垃圾分類功能,增強垃圾分類環(huán)保理念意識,讓垃圾得到合理的分類回收。
本系統為軟件、硬件相結合,軟件部分為垃圾分類識別功能和UI界面的設計,硬件部分為樹莓派4B(Raspberry Pi 4B)開發(fā)板和顯示屏和PC端,整體系統結構圖如圖1所示。
圖1 系統結構圖
垃圾分類是一個目標分類的任務,當前在深度學習研究中獲得迅猛發(fā)展的圖像檢測是計算視覺的未來發(fā)展趨勢,現已運用到各個領域,如自然語言處理、無人駕駛等并取得優(yōu)異成果[2]。深度學習毫無疑問是目標分類的一種有效辦法。綜上所述,基于垃圾分類識別功能采用卷積神經網絡結合OpenCv圖像識別功能時,選用的卷積神經網絡(CNN)模型是LeNet-5模型,LeNet-5模型是深度學習里最經典的一個模型,LeNet-5卷積神經網絡模型是由Y.LeCun提出,首次在手寫數字上取得了很好地識別結果[3],是一個比較簡潔的模型,通過TensorFlow構建一個LeNet-5卷積神經網絡模型,TensorFlow是一款靈活且移植性強的深度學習框架,相對比起PyTorch雖然沒有PyTorch的模型訓練和學習更快速,但TensorFlow其功能更完善,部署LeNet-5模型到嵌入式終端更加方便,選用的垃圾分類數據集共有6萬張圖片,分為四大類分別有廚余、可回收、有害、其他這四類垃圾,四大類又分200個小類對垃圾信息作說明,嵌入式平臺采用樹莓派4B(Raspberry Pi 4B)開發(fā)板,PC端作為模型的訓練平臺和程序的編寫,PC端平臺配置參數為處理器Intel(i3-10100)CPU頻率3.6GHz、內存16GB,LeNet-5卷積神經網絡模型訓練30回,訓練好的LeNet-5模型對垃圾分類進行特征提取與推理,結合OpenCV庫的圖片處理功能完成垃圾分類圖片識別,將訓練好的模型和編寫好的程序部署到樹莓派平臺上,圖片結果顯示在PyQt5設計的UI界面上。
UI界面系統在PC端平臺上開發(fā),開發(fā)完成后可以部署到樹莓派平臺上,是基于PyQT5框架Python語言開發(fā)完成,UI界面設置由照片顯示、物品種類、物品名稱等七個小模塊構成,其結構如圖2所示。
圖2 系統UI界面結構圖
用戶可以通過點擊上傳圖片將圖片上傳然后點擊開始識別來完成垃圾分類識別,識別成功后顯示在照片顯示模塊上,識別完后照片下面的模塊會對垃圾種類的信息進行說明,提醒用戶使用合理的方式處理垃圾,結構圖右上角的兩個模塊是顯示垃圾的種類、名稱,點擊系統設置功能可以對信息說明板塊的信息進行修改。
垃圾分類識別過程由圖3所示分為輸入圖像、圖像預處理、圖像識別、顯示結果這四個過程,其中輸入圖像為上傳圖像,圖像預處理基于Python的OpenCV庫來開發(fā)完成,圖像預處理是來完成圖像識別的準備工作,圖像識別是基于TensorFlow框架Python語言開發(fā)完成,圖像識別是垃圾分類識別的關鍵技術,識別結果顯示在系統UI界面上。垃圾分類識別過程如圖3所示。
圖3 垃圾分類識別過程
OpenCV讀取圖片的時候,默認讀取圖片BGR數據矩陣,因此將彩色圖轉為灰度圖可以加快處理速度,使用OpenCV庫里的cvtColor函數,原圖三通道經過轉換灰度圖后變?yōu)閱瓮ǖ溃瑸榱思涌炀W絡訓練速度,利用OpenCV庫的Normalize函數對輸入信號進行歸一化處理,將像素值處理到0和1之間,處理后對信號進行中值濾波使圖片噪點降低,為了方便提取圖片特征,除了灰度處理、歸一化處理和噪聲處理還需圖片分割處理,利用邊緣檢測算法將圖片進行分割,將特征分割出來。
垃圾分類識別技術是使用計算機對垃圾圖片進行識別并分類,利用計算機分析圖片信息并提取特征然后進行分類,整個過程里計算機就像人腦一樣根據我們的設定執(zhí)行工作,這樣就能達到智能化。垃圾分類技術的關鍵技術點在于圖片識別,而卷積神經網絡毫無疑問是最好的幫手。卷積神經網絡(convolutional neural networks,CNN)是一類受生物視覺感知機制啟示而創(chuàng)造的機器學習代表性網絡構造,其研究源起20世紀80-90年代,最初出現的經典卷積神經網絡是Le Net-5。在21世紀,伴隨著深度學習理論的提出和數值計算設備的改良,卷積神經網絡獲得了迅速發(fā)展,已經證明在圖像識別和分類等領域非常有效。卷積神經網絡像我們人腦一樣去感知事物,可以進行特征提取和分類,其網絡是拓撲式結構,有多個神經元鏈接,卷積神經網絡由輸入和輸出層以及多個隱藏層組成,隱藏層可分為卷積層,池化層、RELU層和全連通層,其運作原理是將圖像進行卷積運算提取特征,然后激活函數、池化、最后將特征數值連接到全連接層進行分類輸出。卷積網絡的核心思想是將:局部感受野、權值共享以及時間或空間亞采樣這三種結構思想結合起來獲得了某種程度的位移、尺度、形變不變性。
LeNet-5網絡模型結構:典型的CNN模型LeNet-5的結構如圖4所示,由卷積層、池化層、全連接層組成。
圖4 LeNet-5卷積神經網絡結構圖
輸入圖像數據為32×32大小的像素圖片,卷積層有6個卷積核,經過卷積層6個卷積核對輸入層的圖片數據進行卷積運算,得到6個28×28像素大小的特征圖,經過池化層,將6個28×28的特征圖下采樣,得到6個14×14的特征圖,經過第二個卷積層,將上一層的6個14×14的特征圖進行卷積運算得到16個10×10的特征圖,經過第二個池化層,將16個10×10的特征圖下采樣,得到16個5×5的特征圖,最后連接的是兩個全連接層,兩個全連接層分別有120、84個神經元,最后經過輸出層,得出0到1的概率值,最接近1的值為識別結果。
垃圾分類識別上采用Tensorflow框架構建了一個CNN卷積神經網絡開展訓練,用傳統的LeNet-5網絡模型結構其識別率會縮小,會在原模型上做修改,這個神經網絡由兩層卷積和兩層池化所構成,整個結構如圖5所示。
圖5 CNN卷積神經網絡模型結構
輸入層為經過圖像預處理的垃圾分類識別圖片,處理的圖片會變?yōu)榇笮?24的灰度圖,輸入層圖片信號尺度變換后到卷積層,卷積層有三個大小為3×3的卷積核,32個輸出通道,在卷積后對數據進行標準化處理,使其減少計算量,在這里使用的是Relu激活函數,池化層為最大池化層,將特征圖大小減半,經過兩層的卷積和池化操作后經過Flatten層,Flatten層的作用是將特征圖壓成一維圖,繼而將特征拉直之后送入到兩個全連接層進行分類,全連接層有128個神經元,輸出層使用Softmax函數得到概率值,接近1的值為識別結果。
LeNet-5模型將會訓練收集好的垃圾分類數據集,垃圾分類數據集分為廚余垃圾、有害垃圾、可回收垃圾、其余垃圾四大類,共6萬張圖片,其中數據集的25%作為驗證集75%作為訓練集,模型訓練30回,訓練結束之后,將會獲得訓練生成的模型保留訓練過程的折線圖,實驗數據來源于基于樹莓派Raspberry Pi智能垃圾分類系統設計數據集如圖6所示。
圖6 Le Net-5模型訓練折線圖
第一個表格為模型的準確率的曲線變化,第二個表格為交叉熵損失函數的曲線變化,藍線和紅線分別為訓練集合驗證集,可以在表中看出,訓練集的準確度為0.98,驗證集的準確率為0.82,訓練集的損失為0.1,驗證集的損失為1.6,模型的準確率和損失函數隨著epoch而變化,當訓練的次數增加準確率就會越高損失度就會越低且逐漸趨于穩(wěn)定。
在訓練完后對LeNet-5模型做測試,測試結果以四個大類為結果,分別為廚余垃圾、有害垃圾、可回收垃圾、其余垃圾四類為數據準確率,在測試完后結果保存在PC端記錄中,實驗數據來源于基于樹莓派Raspberry Pi智能垃圾分類系統設計數據集,實驗結果以圖7熱力圖所示。
圖7 測試結果熱力圖
在測試結果熱力圖中,越趨近于白色準確率越高,其中以廚余垃圾準確率最高,有害垃圾最低,準確率都處于1到0.8分段中,在PC端記錄中LeNet-5模型的平均準確率為0.822820。
Linux操作系統是一套免費的使用和自由傳播的類Unix系統。Linux不僅系統性能穩(wěn)定,而且是開源軟件具有開放源碼、沒有版權、技術社區(qū)用戶多等優(yōu)點,靈活性高、功能強大、成本低。Ubuntu操作系統是Linux操作系統一支優(yōu)秀的分支。Ubuntu基于Linux內核,是發(fā)行版本之一,Ubuntu是臺式機安裝中最常用的基于Linux的操作系統。Ubuntu提供友好的操作系統和穩(wěn)定針對普通計算機用戶的操作系統,易于安裝、簡單。由于總體設計方案需要樹莓派作為硬件設計,故選取Linux操作系統的分支Ubuntu操作系統,在搭建環(huán)境下方便許多,更為高效,便利。
本系統所采用的硬件為樹莓派4代B型主板2G版。樹莓派原名為Raspberry Pi,是一款嵌入式設備。它的大小有手掌心這么大,與常見的51單片機和STM32等這類的嵌入式設備相比,能完成相同的IO引腳控制之外,還能運行相應的操作系統,可以完成更復雜的任務管理與調度,能夠支持上層應用的開發(fā),為開發(fā)者提供了更廣闊的應用空間。樹莓派的價格便宜、功耗小、體積小、資源豐富,能夠運行人工智能算法,Python為樹莓派的主要編程語言,與常規(guī)的單片機相比,樹莓派顯得更加靈活,在人工智能方面優(yōu)勢較大。通過TensorFlow搭建LeNet-5模型進行訓練,訓練好的模型部署在樹莓派平臺上,就可以得到一個簡潔高效的垃圾分類系統。
樹莓派選取的是Linux的Ubuntu系統,可以到樹莓派官網下載,準備好一張SD卡,下載SD Card Formatter和Etcher軟件并安裝,使用SD Card Formatter軟件將SD卡進行格式化,使用Etcher軟件寫入下載好的鏡像。樹莓派初次登錄選擇中國地區(qū),進入系統后安裝Python、Tensorflow、Pyqt5、Pillow、Opencv-Python、Matplotlib、Keras、虛擬環(huán)境等操作。
將編寫好的Python程序文件部署到樹莓派平臺上,訓練好的模型文件復制到程序文件路徑下,啟動樹莓派,執(zhí)行程序文件結果顯示如圖8所示。
圖8 識別結果
本設計以樹莓派4代B型主板為例來完成基于樹莓派Raspberry Pi 的智能垃圾分類設計,通過學習Python語言、卷積神經網絡算法、樹莓派硬件、Linux操作系統、OpenCV圖像處理等相關專業(yè)知識來實現本方案的設計,界面UI設計使用的是PyQt5來完成,圖片識別方面利用卷積神經網絡算法進行訓練推算,結合OpenCV圖形處理來完成識別,模型上還可以繼續(xù)進行調整以提高精確度。除了總體設計的一些基礎功能,其他功能還可以繼續(xù)挖掘開發(fā),在原有的基礎上添加硬件設計。本系統是人工智能與垃圾分類結合的一個設計,在未來的發(fā)展上人工智能是一個重要的學科,本設計作為一個人工智能的示例來學習。