摘要:不過不要緊,垃圾分類雖然要執(zhí)行,但是奶茶也可以照喝。這里我們考慮四個類別干垃圾,濕垃圾,有害垃圾還是可回收垃圾。報紙可回收垃圾電池有害垃圾一次性餐盒干垃圾我們對圖片里的物品進行分類,這是圖像處理和識別的領(lǐng)域。
目錄
0 環(huán)境
1 引言
2 思路
3 圖像分類
4 總結(jié)
Python版本:3.6.8
系統(tǒng)版本:macOS Mojave
Python Jupyter Notebook
1 引言七月了,大家最近一定被一項新的政策給折磨的焦頭爛額,那就是垃圾分類?!渡虾J猩罾芾項l例》已經(jīng)正式實施了,相信還是有很多的小伙伴和我一樣,還沒有完全搞清楚哪些應該扔在哪個類別里。感覺每天都在學習一遍垃圾分類,真令人頭大。
聽說一杯沒有喝完的珍珠奶茶應該這么扔
1、首先,沒喝完的奶茶水要倒在水池里
2、珍珠,水果肉等殘渣放進濕垃圾
3、把杯子要丟入干垃圾
4、接下來是蓋子,如果是帶蓋子帶熱飲(比如大部分的熱飲),塑料蓋是可以歸到可回收垃圾的嗷
看到這里,是不是大家突然都不想喝奶茶了呢,哈哈。不過不要緊,垃圾分類雖然要執(zhí)行,但是奶茶也可以照喝。
那么,這里我們想討論一下,人工智能和數(shù)據(jù)科學的方法能不能幫助我們進行更好的垃圾分類?這樣我們不用為了不知道要扔哪個垃圾箱而煩惱。
2 思路這問題的解決思路或許不止一條。這里只是拋磚引玉一下,提供一些淺顯的見解。
第一種方案,可以把垃圾的信息制成表格化數(shù)據(jù),然后用傳統(tǒng)的機器學習方法。
第二種方案,把所有的垃圾分類信息做成知識圖譜,每一次的查詢就好像是在翻字典一樣查閱信息。
第三種方案,可以借助現(xiàn)在的深度學習方法,來對垃圾進行識別和分類。每次我們給一張垃圾的圖片,讓模型識別出這是屬于哪一種類別的:干垃圾,濕垃圾,有害垃圾還是可回收垃圾。
圖像分類是深度學習的一個經(jīng)典應用。它的輸入是一張圖片, 然后經(jīng)過一些處理,進入一個深度學習的模型,該模型會返回這個圖片里垃圾的類別。這里我們考慮四個類別:干垃圾,濕垃圾,有害垃圾還是可回收垃圾。
我們對圖片里的物品進行分類,這是圖像處理和識別的領(lǐng)域。人工智能里提出了使用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)來解決這一類問題。
我會用keras包和Tensorflow后端來建立模型。 由于訓練集的樣本暫時比較缺乏,所以這里只能先給一套思路和代碼。訓練模型的工作之前還得進行一波數(shù)據(jù)收集。
我們就先來看看代碼大致長什么樣吧
先導入一些必要的包。
再做一下準備工作。
在上面,我們初始化了一些變量,batch size是128; num_classes = 4,因為需要分類的數(shù)量是4,有干垃圾,濕垃圾,有害垃圾和可回收垃圾這四個種類。epochs 是我們要訓練的次數(shù)。接下來,img_rows, img_cols = 28, 28 我們給了圖片的緯度大小。
在 .reshape(60000,28,28,1)中 , 60000 是圖片的數(shù)量(可變), 28是圖片的大?。烧{(diào)),并且1是channel的意思,channel = 1 是指黑白照片。 .reshape(10000,28,28,1)也是同理,只是圖片數(shù)量是10000。
到了最后兩行,我們是把我們目標變量的值轉(zhuǎn)化成一個二分類, 是用一個向量(矩陣)來表示。比如 [1,0,0,0] 是指干垃圾,[0,1,0,0]是指濕垃圾等等。
接下來是建模的部分。
我們加了卷積層和池化層進入模型。激活函數(shù)是 relu,relu函數(shù)幾乎被廣泛地使用在了卷積神經(jīng)網(wǎng)絡和深度學習。我們在層與層之間也加了dropout來減少過擬合。Dense layer是用來做類別預測的。
建完模型后,我們要進行模型的驗證,保證準確性在線。
到這里,我們的建模預測已經(jīng)大概完成了。一個好的模型,要不斷地去優(yōu)化它,提高精確度等指標要求,直到達到可以接受的程度。
這優(yōu)化的過程,我們在這里就先不深入討論了,以后繼續(xù)。
4 總結(jié)值得一提的是,盡管方法上是有實現(xiàn)的可能,但是實際操作中肯定要更復雜的多,尤其是對精度有著很高的要求。
而且當一個圖片里面包含著好幾種垃圾種類,這也會讓我們的分類模型開發(fā)變得很復雜,增加了難度。
比如,我們想要對一杯奶茶進行垃圾分類,照片里面是包含了多個垃圾的種類,這就比較頭大了,因為這并不是屬于單一的類別。
前路的困難肯定是有的,不過就當這里的分享是個拋磚引玉的起點吧。
畢竟李白也說了,“長風破浪會有時,直掛云帆濟滄?!?。
關(guān)注公眾號「Python專欄」,后臺回復「垃圾分類2」獲取本文全套代碼。更多有意思的python等著你
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/45079.html
摘要:還是老規(guī)矩,從易到難吧傳統(tǒng)的定時器,異步編程等。分配對象時,先是在空間中進行分配。內(nèi)存泄漏內(nèi)存泄漏是指程序中己動態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費,導致程序運行速度減慢甚至系統(tǒng)崩潰等嚴重后果。 showImg(https://segmentfault.com/img/bVbwkad?w=1286&h=876); 網(wǎng)上參差不棄的面試題,本文由淺入深,讓你在...
摘要:還是老規(guī)矩,從易到難吧傳統(tǒng)的定時器,異步編程等。分配對象時,先是在空間中進行分配。內(nèi)存泄漏內(nèi)存泄漏是指程序中己動態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費,導致程序運行速度減慢甚至系統(tǒng)崩潰等嚴重后果。 showImg(https://segmentfault.com/img/bVbwkad?w=1286&h=876); 網(wǎng)上參差不棄的面試題,本文由淺入深,讓你在...
摘要:安裝后已經(jīng)完成了安裝,并且等待其他的線程被關(guān)閉。激活后在這個狀態(tài)會處理事件回調(diào)提供了更新緩存策略的機會。并可以處理功能性的事件請求后臺同步推送。廢棄狀態(tài)這個狀態(tài)表示一個的生命周期結(jié)束。 showImg(https://segmentfault.com/img/bVbwWJu?w=2056&h=1536); 不知不覺,已經(jīng)來到了最后的下篇 其實我寫的東西你如果認真去看,跟著去寫,應該能有...
摘要:前端個靈魂拷問,徹底搞明白你就是中級前端工程師上篇感覺大家比較喜歡看這種類型的文章,以后會多一些。所有依賴這個模塊的語句,都定義在一個回調(diào)函數(shù)中,等到加載完成之后,這個回調(diào)函數(shù)才會運行。此規(guī)范其實是在推廣過程中產(chǎn)生的。 showImg(https://segmentfault.com/img/bVbwAMU?w=700&h=394); 前端20個靈魂拷問,徹底搞明白你就是中級前端工程師...
摘要:前端個靈魂拷問,徹底搞明白你就是中級前端工程師上篇感覺大家比較喜歡看這種類型的文章,以后會多一些。所有依賴這個模塊的語句,都定義在一個回調(diào)函數(shù)中,等到加載完成之后,這個回調(diào)函數(shù)才會運行。此規(guī)范其實是在推廣過程中產(chǎn)生的。 showImg(https://segmentfault.com/img/bVbwAMU?w=700&h=394); 前端20個靈魂拷問,徹底搞明白你就是中級前端工程師...
閱讀 1327·2021-09-26 09:46
閱讀 1657·2021-09-06 15:00
閱讀 781·2019-08-30 15:52
閱讀 1191·2019-08-29 13:10
閱讀 1356·2019-08-26 13:47
閱讀 1532·2019-08-26 13:35
閱讀 2089·2019-08-23 18:38
閱讀 781·2019-08-23 17:59