CNN網絡實現垃圾分類

做者:王鎮前端

1. 背景

自2019年7月1日起,隨着《上海市生活垃圾管理條例》正式實施,垃圾分類工做在全國由點到面逐步推開。垃圾分類能夠最大限度的實現垃圾資源利用,減小垃圾處置量,改善生存環境質量,下降垃圾對於地下水的污染。因爲垃圾分類條例剛開始實施,不少居民尚未足夠強的垃圾分類意識,生活中垃圾分類並沒能獲得很好的落實。所以垃圾收集站依然有很強的垃圾自動分類需求。本文經過搭建一個簡單的CNN網絡實現對垃圾進行自動分類。python

2. 數據集

本文使用的數據集來自kaggle上的垃圾分類數據集,共2527張圖片,分爲六類生活垃圾,分別爲cardboard 403張,glass 501張,metal 410張,paper 594張,plastic 482張,trash 137張。該數據集的圖片具備相同的規格尺寸,且要檢測的垃圾大多數位於圖片中央,所以很是適合於訓練深度學習模型。網絡

3. 數據預處理

因爲該數據集是一個較小的數據集,僅有兩千多張圖片,但一般訓練深度學習模型都要求有上萬張乃至更多的圖片。去網上採集更多的圖片擴充數據集顯然是最理想的方法,但那樣會花費大量的時間與精力,所以經過數據加強擴充數據集成了咱們的選擇。app

ImageDataGenerator()keras.preprocessing.image模塊中的圖片生成器,同時也能夠在batch中對數據進行加強,擴充數據集大小,加強模型的泛化能力。好比對圖片進行平移,旋轉,縮放,翻轉等。在將圖片輸入模型以前,爲了提升模型的準確率,還需將圖片進行歸一化處理,即將每一個像素的值映射到(0,1)之間。學習

實驗中咱們隨機選擇90%的圖片做爲訓練集,對訓練集進行數據加強操做,剩下10%的圖片做爲測試集,測試集不作數據加強處理。測試

4. 模型搭建

該網絡使用了四層的卷積層,每一卷積層後接一最大池化層,最後緊跟兩層Dense層,將輸出轉化爲6×1的向量。網絡結構以下所示:大數據

model = Sequential([
    Conv2D(filters=32, kernel_size=3, padding='same', activation='relu', input_shape=(300, 300, 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),

    Flatten(),

    Dense(64, activation='relu'),

    Dense(6, activation='softmax')
])

5. 結果展現

圖1繪製出了該模型訓練過程的學習率曲線。從圖中可見模型在epoch達到40時便開始趨向收斂,以後隨着訓練次數的增長,模型效果也沒有提高,在整個訓練過程當中測試集上取得的最好的準確率爲79.4%。而學習率曲線波動很大緣由是測試集過小,僅含兩百多漲圖片存在較大的偶然性。 CNN的學習率曲線人工智能

圖1 CNN的學習率曲線 部分分類結果展現設計

圖2 部分分類結果展現3d

圖2展現了部分分類結果,其中pred爲模型所判斷的每張圖片的所屬垃圾類別,truth爲每張圖片真實的所屬垃圾類別。從圖中可見,模型對大部分的垃圾圖片分類結果都比較準確,僅第四張將一個玻璃瓶誤判爲了金屬,這也情有可原,由於該圖片中玻璃瓶的反光因素使得該玻璃瓶確實看起來有點像銀白色金屬。

項目源碼地址:https://momodel.cn/explore/5e006c3d744bdda4f67a2bc7?type=app

6. 參考文獻

  1. kaggle數據集. https://www.kaggle.com/asdasdasasdas/garbage-classification
  2. https://www.kesci.com/home/project/5d26a62b688d36002c58a627/code

##關於咱們 Mo(網址:https://momodel.cn) 是一個支持 Python的人工智能在線建模平臺,能幫助你快速開發、訓練並部署模型。

Mo人工智能俱樂部 是由 Mo 的研發與產品團隊發起、致力於下降人工智能開發與使用門檻的俱樂部。團隊具有大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具有從底層到前端的全線設計開發能力。主要研究方向爲大數據管理分析與人工智能技術,並以此來促進數據驅動的科學研究。

相關文章
相關標籤/搜索