目录
0 环境
1 引言
2 思路
3 图像分类
4 总结

0 环境

Python版本:3.6.8

系统版本:macOS Mojave

Python Jupyter Notebook

1 引言

七月了,大家最近一定被一项新的政策给折磨的焦头烂额,那就是垃圾分类。《上海市生活垃圾管理条例》已经正式实施了,相信还是有很多的小伙伴和我一样,还没有完全搞清楚哪些应该扔在哪个类别里。感觉每天都在学习一遍垃圾分类,真令人头大。

听说一杯没有喝完的珍珠奶茶应该这么扔
1、首先,没喝完的奶茶水要倒在水池里
2、珍珠,水果肉等残渣放进湿垃圾
3、把杯子要丢入干垃圾
4、接下来是盖子,如果是带盖子带热饮(比如大部分的热饮),塑料盖是可以归到可回收垃圾的嗷

看到这里,是不是大家突然都不想喝奶茶了呢,哈哈。不过不要紧,垃圾分类虽然要执行,但是奶茶也可以照喝。

那么,这里我们想讨论一下,人工智能和数据科学的方法能不能帮助我们进行更好的垃圾分类?这样我们不用为了不知道要扔哪个垃圾箱而烦恼。

2 思路

这问题的解决思路或许不止一条。这里只是抛砖引玉一下,提供一些浅显的见解。

第一种方案,可以把垃圾的信息制成表格化数据,然后用传统的机器学习方法。

第二种方案,把所有的垃圾分类信息做成知识图谱,每一次的查询就好像是在翻字典一样查阅信息。

第三种方案,可以借助现在的深度学习方法,来对垃圾进行识别和分类。每次我们给一张垃圾的图片,让模型识别出这是属于哪一种类别的:干垃圾,湿垃圾,有害垃圾还是可回收垃圾。

3 图像分类

图像分类是深度学习的一个经典应用。它的输入是一张图片, 然后经过一些处理,进入一个深度学习的模型,该模型会返回这个图片里垃圾的类别。这里我们考虑四个类别:干垃圾,湿垃圾,有害垃圾还是可回收垃圾。

(报纸 :可回收垃圾 )

(电池 :有害垃圾 )

(一次性餐盒 :干垃圾 )

我们对图片里的物品进行分类,这是图像处理和识别的领域。人工智能里提出了使用卷积神经网络(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是用来做类别预测的。

建完模型后,我们要进行模型的验证,保证准确性在线。

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

这优化的过程,我们在这里就先不深入讨论了,以后继续。

4 总结

值得一提的是,尽管方法上是有实现的可能,但是实际操作中肯定要更复杂的多,尤其是对精度有着很高的要求。

而且当一个图片里面包含着好几种垃圾种类,这也会让我们的分类模型开发变得很复杂,增加了难度。

比如,我们想要对一杯奶茶进行垃圾分类,照片里面是包含了多个垃圾的种类,这就比较头大了,因为这并不是属于单一的类别。

前路的困难肯定是有的,不过就当这里的分享是个抛砖引玉的起点吧。

毕竟李白也说了,“长风破浪会有时,直挂云帆济沧海”。

关注公众号「Python专栏」,回复关键字「机器学习电子书」获取100本机器学习电子书!

本文全套代码已上传至Github:https://github.com/MiracleYoung/You-are-Pythonista/tree/master/PythonExercise/DataScience/garbage_classification

还在被大妈灵魂拷问?使用Python轻松完成垃圾分类!相关推荐

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

    作者 | 上海小胖 责编 | 伍杏玲 七月了,大家最近一定被一项新的政策给折磨得焦头烂额,那就是垃圾分类.<上海市生活垃圾管理条例>已经正式实施了,相信还是有很多的小伙伴和我一样,还没有完 ...

  2. python 图像识别分类_使用Python轻松完成垃圾分类(基于图像识别)

    0 环境 Python版本:3.6.8 系统版本:macOS Mojave Python Jupyter Notebook 1 引言 七月了,大家最近一定被一项新的政策给折磨的焦头烂额,那就是垃圾分类 ...

  3. python垃圾分类源代码_Python学习:怕乱丢垃圾罚款?使用 Python 轻松完成垃圾分类...

    七月了,大家最近一定被一项新的政策给折磨的焦头烂额,那就是垃圾分类.<上海市生活垃圾管理条例>已经正式实施了,相信还是有很多的小伙伴和我一样,还没有完全搞清楚哪些应该扔在哪个类别里.感觉每 ...

  4. 字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢...

    写在开篇 去年的秋招对于我来说,那是非常的不顺利,所以今年的春招其实我也没有抱太大的希望,令我惊讶的是第一家给我面试机会的公司竟然是宇宙条.一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出 ...

  5. 秋招总结——字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢

    写在开篇 和往年相比,今年的春招看上去不是那么顺利,多少都受疫情有所影响,但是令我惊讶的是第一家给我面试机会的公司竟然是宇宙条.一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出了名的考算法 ...

  6. 大规模集群故障处理,能抗住这3个灵魂拷问算你赢

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 我相信每一个集群管理员,在长期管理多个不同体量及应用场景的 ...

  7. 测试面试题集-MySQL数据库灵魂拷问加强版

    VOL 168 22 2020-10 今天距2021年70天 这是ITester软件测试小栈第168次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  8. github 吐血整理:如何应对 HR 的灵魂拷问?

    本文首发于小程序:编程面试题库 ,转载请保留出处. 最近趁着有时间,整理了一下关于 HR 的灵魂拷问系列,并新建了一个 github 仓库,欢迎持续关注.本文为节选部分内容,点击阅读原文可直达项目. ...

  9. 灵魂拷问:你看过Xgboost原文吗?

    Datawhale 作者:小雨姑娘,Datawhale成员 事情的源头是这样的,某日我分享了一篇阿里机器学习工程师面试失败经历,其中提到了我回答关于Xgboost的部分,评论区的老哥就开始了灵魂拷问: ...

最新文章

  1. pytorch argsort
  2. python常用模块之shelve模块
  3. 【机器学习】基于opencv实现目标检测,error LNK2001: unresolved external symbol public: virtual bool CvSVM::train...
  4. 【rabbitmq安装教程】centos7下安装rabbitMQ
  5. android+查看内存容量apk,如何检查 Android 应用的内存使用情况
  6. 【Android 教程系列第 10 篇】史上最全的 Android 应用包名汇总,含主流应用商店包名,持续更新...
  7. android大智慧安装目录,大智慧的文件目录结构
  8. CodeBlocks 的下载安装
  9. 使用C++开发的NES(FC)模拟器
  10. 诸神之战!一文盘点中国“大模型”玩家们
  11. 【2021情人节主题征文】| 写了一个表白网页后,我跟女神在一起啦
  12. 客户订单管理系统使用教程
  13. iOS 作为蓝牙外设广播信息
  14. 银行业务用语大全(中英文)
  15. MAC下生成密钥,并使用ssh密钥登录
  16. 【杂货铺】中国房屋种类
  17. 英伟达凭借GPU与AI笑傲本届CES展会
  18. Mat 颜色空间转换
  19. 【redis源码学习】redisObject
  20. 一次Avira小红伞误删文件

热门文章

  1. linux图形化界面安装输入法,CentOS 7安装图像桌面、Ibus拼音输入法
  2. 三星s9android10,三星S10和三星S9相比哪款值得购买?三星S10和三星S9区别对比
  3. 【STM32学习】个人感悟
  4. LeetCode 57
  5. Unity中的关节组件和绳子效果的实现
  6. 您需要了解的有关Tesla Powerwall 2的一切(2020版)
  7. Revit二次开发-创建楼板钢筋
  8. 好好讲一讲:到底什么是Java架构师(含福利放送,名额有限)...
  9. No Shedule lines due for delivery up to the selected date
  10. RVO和ORCA它们是如何工作的?