作者 | 上海小胖

责编 | 伍杏玲

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

听说一杯没有喝完的珍珠奶茶应该这么扔:

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开发等。还有「大航海计划」,各种内推活动。

本文系作者投稿,版权归作者所有。

90%的程序员学Python这么认为:

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

【END】

 热 文 推 荐 

☞阿里云技术战略总监陈绪:45 岁开源老兵“中年花开”阿里云 | 人物志

☞微信停机断网可充话费;苹果正研发可折叠屏幕 iPad;Rust 1.36.0 发布 | 极客头条

☞微软欲打造开发者联盟!

☞为什么说苹果是唯一在乎你隐私的科技公司?

中国有微信和支付宝, 你为啥还费力不讨好去做区块链? | 人物志

数据库风云:老骥伏枥,新秀辈出

☞智能文本信息抽取算法的进阶与应用

正态分布为何如此重要?

☞泪目!Linux之父:我就是觉得苹果太没意思!

你点的每个“在看”,我都认真当成了喜欢

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

  1. 用python可以免费下载音乐吗-Python 教你轻松下载网易音乐歌曲

    前两篇文章收集了歌手信息和歌词,光有歌手信息和歌词没有歌曲怎么行,那不是耍流氓吗?正好今天周末,给大家发点福利,喜欢听音乐的同学有福了,这篇文章直接把网易云音乐歌手的热门歌曲 50 首全部免费下载下来 ...

  2. 学习3d游戏建模的灵魂拷问20问,轻松征服游戏公司主美!

    做游戏美术培训课程咨询5年了,被同学们问到很多问题,发现特别是零基础的同学,对这个行业一无所知.现在我整理一下入坑游戏美术行业你必须要了解的事情,别贸然去报培训班被坑... 精挑细选了20个常见问题来 ...

  3. 王者荣耀皮肤获取很难?用Python教你轻松获取

    一.分析需要爬取的网站 ①.打开官方王者荣耀壁纸网站 网站地址:https://pvp.qq.com/web201605/wallpaper.shtml ②.快捷键F12,调出控制台进行抓包 ③.找到 ...

  4. Python 教你轻松下载网易音乐歌曲

    点击上方"brucepk",选择"置顶公众号" 第一时间关注 Python 技术干货! "   阅读文本大概需要 2.8 分钟 前两篇文章收集了歌手信 ...

  5. 无惧灵魂拷问!淘宝扫一扫助你不再扔错垃圾!

    自7月1日上海正式实行垃圾分类开始 魔都人民天天经受着这样的灵魂拷问 你是什么垃圾? 面对有史以来最严的垃圾分类(个人扔错最高罚款200) 机智的魔都人民也是八仙过海,各显神通 面对这样的情况,此等情 ...

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

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

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

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

  8. VR技术·上|有关VR的“灵魂拷问”

    NSR (NeXT SCENE Research) 位于纽约哥伦比亚大学创业实验室,是最专业和先锋的沉浸式体验报道媒体和社群.致力于促进艺术和新技术融合,打破传统剧场舞台的边界,探索未来体验式娱乐的发 ...

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

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

最新文章

  1. Python实战之网络编程socket学习笔记及简单练习
  2. Android开发中的小技巧
  3. 浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
  4. java播放背景音乐的几种方式
  5. One order time zone
  6. mockito_吸收Mockito的流利度
  7. Spring 3.1和Hibernate的持久层
  8. 图象关于y轴对称是什么意思_数学概念丨“图象”与“图像”是有区别的 ,你知道吗?...
  9. chararray遍历_数组常用的遍历方法 ——总结
  10. BranchCache实验(1)总部的服务器配置
  11. Java - Thinking in Java 第2章 一切都是对象
  12. 【C++ 与 STL】集合:set
  13. 华为鸿蒙os2.0系统beta,华为发布HarmonyOS 2系统:万物互联时代鸿蒙大一统
  14. 京东、宅急送的微服务实践分享(下)| 架构师小组交流会
  15. python凯撒密码流程图_python实现凯撒密码、凯撒加解密算法
  16. SQL 2012 安装教程
  17. 最是人间四月天,细雨点洒樱花前
  18. 《Qt 实战一二三》
  19. 盛唐领土争夺战读后感
  20. 利用全加器实现7段数码管_[走近FPGA]之数码管动态显示

热门文章

  1. 【cornerstone】撤销标注点位(通过ctrl+z)
  2. 鸿蒙 自研内核 core b,华为平板将首次搭载鸿蒙OS 2.0系统:首次自研内核与构架...
  3. python环境的打包与加载
  4. php ajax loading图片居中显示,PHP语言入门之PHP+ajax实现登录按钮加载loading效果
  5. Linux的sigevent结构----mq_notify()实例
  6. Ubuntu16.04LTS安装XMind8并创建运行图标
  7. 径向涡轮膨胀机行业调研报告 - 市场现状分析与发展前景预测
  8. 中国卡曼涡气流传感器行业市场供需与战略研究报告
  9. IIS 返回 405 - 不允许用于访问此页的 HTTP 谓词。终极解决办法!!!!
  10. 95后大学生利用漏洞免费吃肯德基获刑;Linux内核初步支持苹果M1;Android Studio 4.2 发布|极客头条...