?

基于深度學習的垃圾分類系統

2024-04-12 09:02王林芝WANGLinzhi石玨德SHIYude董梁苗DONGLiangmiao許敏XUMin
價值工程 2024年8期
關鍵詞:殘差垃圾分類

王林芝WANG Lin-zhi;石玨德SHI Yu-de;董梁苗DONG Liang-miao;許敏XU Min

(無錫職業技術學院物聯網技術學院,無錫 214121)

0 引言

近年來,經濟水平和物質生活發展迅速,垃圾的數量與種類呈現指數級增長,人們開始重視垃圾帶來的環境和社會問題。日常生活中的垃圾主要包括有害垃圾、廚余垃圾、可回收垃圾以及其他垃圾這四類,對不同類別的垃圾應采取不同處理方法,若投放不當,可能會導致各種環境污染問題?,F有的垃圾分類方式主要分為兩種,一種是通過桶身顏色來區分垃圾的種類,但不同的顏色沒有明確對應的垃圾桶種類,分類的方式沒有達到共識;另一種是通過垃圾桶表面的標志來區分,這種方式通常只給一個寬泛的類別,沒有明確指出分類細節。利用圖像識別功能,合理的垃圾分類是有效進行垃圾處理、減少環境污染,并進行資源再利用的關鍵舉措,也是目前最合適最有效的科學管理方式。利用現有的生產水平將日常垃圾按類別處理,填埋無用垃圾。這樣既能夠提高垃圾資源處理效率,又能緩解環境污染問題。

為了實現全自動垃圾分類,提高垃圾識別準確率,課題組設計了一種智能垃圾分類系統,其特點如下:①采用OpenCV 視覺模塊進行圖像識別,準確度較高。②用Flask框架作為后端調用前端,易于構建原型并且代碼庫利用率高。③基于深度學習(卷積神經網絡)算法,使用tensorflow算法對圖像進行特征提取,卷積神經網絡通過學習大量數據集,訓練模型,提取圖片的特征,從而實現分類。④充分利用css 和js 的樣式,應用到前端,美化用戶界面,提高用戶的體驗感。

1 功能設計

整個系統是由知識介紹、用戶交流以及智能識別三個模塊組成。如圖1 所示。

圖1 系統功能模塊圖

1.1 知識介紹 這個部分包含了3 個部分,分別是環保資訊、分類知識和廢舊利用三個模塊。環保資訊模塊提供了關于環保新聞和動態的信息,使用戶能夠及時了解環保領域的最新發展和趨勢。分類知識模塊則通過文字和圖片的形式,介紹了不同種類垃圾的正確分類和處理方法,幫助用戶提高垃圾分類的知識水平。廢舊利用模塊則展示了如何合理利用廢棄物品,既減少了垃圾的產生,又節約了資源。

1.2 用戶交流 主要為用戶提供垃圾分類相關知識的測試。查詢資料,選取垃圾分類測試題錯誤率最高的前十題,作為用戶測試的題目。用戶答題后,點擊提交按鈕,會顯示用戶的答題情況。增加用戶使用系統的體驗感。

1.3 垃圾智能識別 系統可以通過建立特定的垃圾識別模型進行常見垃圾類型的識別訓練,達到較高的垃圾識別準確率。點擊上傳圖片,實現垃圾的智能識別。垃圾的智能識別不僅擺脫了傳統人工識別的繁瑣流程,且識別可靠性較高。

2 算法介紹

2.1 圖像處理 將一張圖像(可以是本地圖像,也可以是網絡圖像)進行預處理,然后裁剪成多個小圖像,并對這些小圖像進行數據增強。這個過程被稱為數據預處理,通常在深度學習模型的訓練過程中使用,以提高模型的性能。在程序設計部分定義了兩個函數:preprocess_img 和preprocess_img_from_Url。這兩個函數的主要區別在于獲取圖像的方式不同,一個是從本地路徑獲取圖像,另一個是從網絡URL 獲取圖像。

函數的主要步驟如下:①打開圖像文件(本地或網絡)。②將圖像調整為指定的大?。ㄔ谶@里是256×256 像素)。③將圖像轉換為RGB 格式。④將圖像轉換為NumPy數組。⑤對圖像進行數據增強,具體來說,是從圖像的隨機位置裁剪出224×224 像素的小圖像,然后對這些小圖像進行數據增強。將處理后的小圖像存儲在一個列表中,并返回這個列表。

2.2 訓練模型 這個部分使用ResNet50 模型,是一種深度卷積神經網絡(CNN) 模型,具有50 個殘差塊(Residual Block),廣泛應用于圖像識別和計算機視覺任務。以下是ResNet50 模型整個過程的詳細介紹。

2.2.1 殘差網絡 殘差網絡(ResNet,Residual Network)是一種深度卷積神經網絡。其引入跳躍連接(skip connection)機制,形成殘差連接,實現了更有效的信息傳遞和更深的網絡結構。

殘差網絡要包括兩部分:殘差塊(Residual block)和跳躍連接(skip connection)。殘差塊是殘差網絡的基本構建單元,其核心思想是引入跳躍連接,將輸入數據直接和卷積層的輸出數據相加,以實現更有效的信息傳遞。殘差網絡公式為:H(x)=F(x)+x

其中,H(x)是輸出結果,F(x)是殘差函數,x 是輸入數據。殘差網絡示意圖可見圖2。

圖2 殘差網絡示意圖

在圖2 中,ResNet 網絡是“跳躍連接”(skip)的方式。輸出結果H(x)計算公式為:H(x)=F(x)+x。當F(x)=0 時,H(x)=x,即所謂的恒等映射。因此,ResNet 網絡的學習目標發生了改變,它不再是學習一個完整的輸出,而是學習目標值H(x)與x 的差值,即殘差F(x)=H(x)-x。訓練過程中的目標就是使殘差結果盡可能接近0,從而在網絡深度增加時,準確率得以保持不下降。

2.2.2 ResNet 網絡結構 ResNet 網絡的構建始于一個7×7 的卷積層,該層負責提取輸入數據的初級特征。隨后,一個3×3 的最大池化層用于對特征進行下采樣,減小數據尺寸。接下來,網絡進入殘差結構部分。這一部分的ResNet 層依次遞進,深度逐漸增加,有助于提取更高級別的特征。在殘差結構之后,網絡再次進行平均池化下采樣,進一步減小數據尺寸。最后,全連接層和softmax 輸出層用于將學到的特征映射到類別概率,從而實現分類任務。

2.3 預測模型 在這個部分使用了Adam 優化器和分類交叉熵損失函數(categorical crossentropy)。

Adam 是一種基于梯度下降算法的自適應學習率優化器。在訓練過程中,Adam 會根據每個參數的歷史梯度和更新情況,自適應地調整每個參數的學習率,以實現更快的訓練收斂和更好的泛化性能。Adam 優化器的核心思想是在每個時間步驟中計算移動平均梯度和移動平均平方梯度,并利用它們來更新模型參數。有效地近似計算梯度的無偏估計值和梯度平方的無偏估計值,從而得到更加準確的參數更新方向。

在機器學習中,交叉熵函數是一種重要的損失函數,用于評估模型的預測結果與真實標簽之間的差異。交叉熵函數起源于信息論領域,用于衡量兩個概率分布之間的差異。對于分類問題,通常使用交叉熵函數作為損失函數,以優化模型的參數,使模型的預測結果盡可能接近真實標簽的分布。通過最小化交叉熵函數,可以提高模型的準確性和泛化能力。在實際應用中,通過計算模型在測試集上的交叉熵函數值來評估模型的準確性。交叉熵函數值越小,表示模型的預測結果與真實標簽的分布越接近,模型的性能越好。

2.4 服務端運行 服務端運行使用Flask 作為后端框架,Flask 是一個用Python 編寫的輕量級web 應用程序框架,對接tensorflow,把tensorflow 訓練好的模型加載成用戶可以使用的api 接口。flask_sever.py 為flask 框架所寫的后端代碼,對接前端,呈現用戶所使用的界面。主要功能是接收用戶上傳的圖片,使用預先訓練好的神經網絡模型對圖片進行分類預測,并返回預測結果。

創建Flask 應用程序對象:使用Flask 類創建一個名為app 的應用程序對象。定義一個函數allowed_file,它接受一個文件名作為輸入,檢查該文件名是否包含一個擴展名,并且該擴展名是否在允許的擴展名集合中。定義一個路由'/predict',該路由可以通過POST 或GET 方法訪問。

定義其他幾個路由,分別對應主頁和網站中其他幾個頁面。每個路由都關聯一個函數,這些函數只是簡單地渲染相應的HTML 模板。在代碼的最后,有一個條件語句,檢查這個腳本是否作為主程序運行。如果是,將啟動Flask應用程序,監聽地址為'127.0.0.1'的本地主機的連接。運行flask_sever.py 文件的時候,在終端會顯示相對應的網址,點擊即可進入對應的系統界面。

3 系統設計和實現

3.1 首頁模塊 在垃圾分類系統當中有5 個頁面,分別是首頁、環保資訊、分類知識、廢舊利用、趣味測試和垃圾識別。在首頁當中使用一個長圖作為標題的背景圖片,在標題之下增加了圖片大標題,左右按鈕可以滑動查看添加的4 個圖片。為了對首頁的導航欄了解更加透徹,進行分欄,分別是對四個方面的具體拓展。之后增加鼠標懸停效果,將鼠標放在圖片上方,顯示其具體的分類。增加圖片的輪播效果。并且當鼠標放在圖片上面,隨之對應的圖片縮小,輪播效果暫時暫停。效果圖可見圖3。

圖3 首頁效果圖

3.2 環保資訊,分類知識,廢舊利用模塊 鑒于頁面整體協調性,在這3 個模塊,運用一致的css 和js 格式文件。在導航欄處,增加相對應的二級標題,在頁面的底端增加宣傳垃圾分類的標語。根據每個模塊的具體內容,適時地在頁面添加一些相關的圖片。相關效果可見圖4 分類知識效果圖。

3.3 趣味測試模塊 用戶在主頁面點擊“趣味測試“進入垃圾分類測試的界面,在這個界面當中,選取了垃圾分類測試題錯誤率最高前十題作為趣味測試的測試題。每道題都有四個不同類別的答案。用戶答完題之后,點擊下面提交答案的按鈕,系統會顯示您回答正確的題目數量。如果用戶希望再次回答題目,可以在原先的基礎上,重新進行答題,具體效果可見圖5。

圖5 趣味測試效果圖

3.4 垃圾識別模塊 獲取一個名為"imageFile"的文件輸入元素,并獲取用戶選擇的第一個文件。將創建一個名為"formData" 的新對象。然后將選定的文件添加到FormData 中。接下來,創建一個新的XMLHttpRequest 對象,用于與服務器進行通信。XHR 的"open()"方法用于設置請求的類型和URL。使用"POST"方法將文件發送到服務器上的"/predict"端點。將從服務器接收到的響應解析為JSON 格式,并提取分類結果。然后,將分類結果顯示在頁面上的一個元素(ID 為"classificationResult")中。如果請求失敗或出現其他錯誤,將顯示一條錯誤消息。同時在發送請求之前,顯示提示信息?!吧蟼鲌D片進行垃圾分類識別”選擇文件按鈕選擇本地的圖片或者是選擇拍照識別,點擊識別按鈕之后,在最下面的模塊會顯示相關的垃圾類別。效果圖可見圖6。

圖6 垃圾分類識別效果圖

4 結論

本文介紹了一種基于深度學習的垃圾分類識別系統,旨在解決垃圾處理問題,提高垃圾回收效率。通過多種垃圾類型的數據集,使用預處理技術整理和擴充數據,提高模型的泛化能力。采用卷積神經網絡作為基礎模型,提高分類精度。在模型訓練方面,采用隨機梯度下降作為優化算法,實現快速收斂和優化。

系統包含一個垃圾分類識別的前端,使 用CSS和JavaScript,并包含了環保資訊、分類知識、廢舊利用、趣味測試和垃圾識別五個模塊。采用響應式設計,確保了各模塊在不同設備上的顯示效果。在數據結果上,通過數據可視化的方式,將垃圾分類的結果直觀地展示給用戶。

然而,該系統仍存在一些不足,如對于部分垃圾類型,尤其是文字信息不明確的垃圾,分類效果可能不佳。未來可以考慮引入OCR 技術,提高分類精度。

總的來說,基于深度學習的垃圾分類識別系統具有較高的分類精度和實用價值,但仍存在一些不足,需要進一步改進。未來可以提高系統的實時性,拓展垃圾類型覆蓋范圍,推動智能垃圾分類技術的發展。

猜你喜歡
殘差垃圾分類
基于雙向GRU與殘差擬合的車輛跟馳建模
垃圾去哪了
分類算一算
基于殘差學習的自適應無人機目標跟蹤算法
那一雙“分揀垃圾”的手
基于遞歸殘差網絡的圖像超分辨率重建
分類討論求坐標
數據分析中的分類討論
倒垃圾
教你一招:數的分類
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合