告别大妈的灵魂拷问,Python 教你轻松完成垃圾分类!

论坛 期权论坛 期权     
CSDN   2019-7-27 14:23   3701   0



作者 | 上海小胖
责编 | 伍杏玲
七月了,大家最近一定被一项新的政策给折磨得焦头烂额,那就是垃圾分类。《上海市生活垃圾管理条例》已经正式实施了,相信还是有很多的小伙伴和我一样,还没有完全搞清楚哪些应该扔在哪个类别里。感觉每天都在学习一遍垃圾分类,真令人头大。
听说一杯没有喝完的珍珠奶茶应该这么扔:
1、首先,没喝完的奶茶水要倒在水池里
2、珍珠,水果肉等残渣放进湿垃圾
3、把杯子要丢入干垃圾
4、接下来是盖子,如果是带盖子带热饮(比如大部分的热饮),塑料盖是可以归到可回收垃圾的嗷
看到这里,是不是大家突然都不想喝奶茶了呢,哈哈。不过不要紧,垃圾分类虽然要执行,但是奶茶也可以照喝。
那么,这里我们想讨论一下,人工智能和数据科学的方法能不能帮助我们进行更好的垃圾分类?这样我们不用为了不知道要扔哪个垃圾箱而烦恼。  
环境:
Python版本:3.6.8
系统版本:MacOS Mojave
Python Jupyter Notebook



思路

这问题的解决思路或许不止一条。这里只是抛砖引玉一下,提供一些浅显的见解。
第一种方案,可以把垃圾的信息制成表格化数据,然后用传统的机器学习方法。
第二种方案,把所有的垃圾分类信息做成知识图谱,每一次的查询就好像是在翻字典一样查阅信息。
第三种方案,可以借助现在的深度学习方法,来对垃圾进行识别和分类。每次我们给一张垃圾的图片,让模型识别出这是属于哪一种类别的:干垃圾,湿垃圾,有害垃圾还是可回收垃圾。      



图像分类

图像分类是深度学习的一个经典应用。它的输入是一张图片, 然后经过一些处理,进入一个深度学习的模型,该模型会返回这个图片里垃圾的类别。这里我们考虑四个类别:干垃圾、湿垃圾、有害垃圾还是可回收垃圾。例如报纸:可回收垃圾;电池:有害垃圾;一次性餐盒:干垃圾。
我们对图片里的物品进行分类,这是图像处理和识别的领域。人工智能里提出了使用卷积神经网络(Convolutional Neural Network, CNN)来解决这一类问题。
我会用keras包和TensorFlow后端来建立模型。由于训练集的样本暂时比较缺乏,所以这里只能先给一套思路和代码。训练模型的工作之前还得进行一波数据收集。
我们就先来看看代码大致长什么样吧。
先导入一些必要的包。


再做一下准备工作。


在上面,我们初始化了一些变量,batch size是128;num_classes = 4,因为需要分类的数量是4,有干垃圾,湿垃圾,有害垃圾和可回收垃圾这四个种类。epochs 是我们要训练的次数。接下来,img_rows, img_cols = 28, 28 我们给了图片的纬度大小。
在 .reshape(60000,28,28,1)中 , 60000 是图片的数量(可变), 28是图片的大小(可调),并且1是channel的意思,channel = 1 是指黑白照片。.reshape(10000,28,28,1)也是同理,只是图片数量是10000。
到了最后两行,我们是把我们目标变量的值转化成一个二分类, 是用一个向量(矩阵)来表示。比如 [1,0,0,0] 是指干垃圾,[0,1,0,0]是指湿垃圾等等。
接下来是建模的部分。


我们加了卷积层和池化层进入模型。激活函数是 relu,relu函数几乎被广泛地使用在了卷积神经网络和深度学习。我们在层与层之间也加了dropout来减少过拟合。Dense layer是用来做类别预测的。
建完模型后,我们要进行模型的验证,保证准确性在线。


到这里,我们的建模预测已经大概完成了。一个好的模型,要不断地去优化它,提高精确度等指标要求,直到达到可以接受的程度。
这优化的过程,我们在这里就先不深入讨论了,以后继续。



总结

值得一提的是,尽管方法上是有实现的可能,但是实际操作中肯定要更复杂的多,尤其是对精度有着很高的要求。
而且当一个图片里面包含着好几种垃圾种类,这也会让我们的分类模型开发变得很复杂,增加了难度。
比如,我们想要对一杯奶茶进行垃圾分类,照片里面是包含了多个垃圾的种类,这就比较头大了,因为这并不是属于单一的类别。
前路的困难肯定是有的,不过就当这里的分享是个抛砖引玉的起点吧。
毕竟李白也说了,“长风破浪会有时,直挂云帆济沧海”。
源码:
https://github.com/MiracleYoung/You-are-Pythonista/tree/master/PythonExercise/DataScience/garbage_classification
作者简介:上海小胖,四大咨询的Tech Lead,MongoDB Professional获得者。「Python专栏」专注Python领域的各种技术:爬虫、DevOps、人工智能、Web开发等。还有「大航海计划」,各种内推活动。
本文系作者投稿,版权归作者所有。
【END】


热 文 推 荐
[/url][url=http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723791&idx=1&sn=30477441cdf55c047948ea0ea3e217b1&chksm=bea6a41c89d12d0af5d643f987fc55abf9da7677594c6280cdbe039be0bc283d763725008495&scene=21#wechat_redirect]阿里云技术战略总监陈绪:45 岁开源老兵“中年花开”阿里云 | 人物志

[/url][url=http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723829&idx=1&sn=82491afce9b987105727b1d7ca5c227b&chksm=bea6a42689d12d308bf352d8b8a72341b75176c38a0a4fc60dd8e59c2f843307ba6f6576ac09&scene=21#wechat_redirect]微信停机断网可充话费;苹果正研发可折叠屏幕 iPad;Rust 1.36.0 发布 | 极客头条

微软欲打造开发者联盟!
为什么说苹果是唯一在乎你隐私的科技公司?
中国有微信和支付宝, 你为啥还费力不讨好去做区块链? | 人物志
数据库风云:老骥伏枥,新秀辈出
智能文本信息抽取算法的进阶与应用
正态分布为何如此重要?
泪目!Linux之父:我就是觉得苹果太没意思!
你点的每个“在看”,我都认真当成了喜欢
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:65
帖子:240
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP