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


Posted in Python onJuly 09, 2019

0 环境

Python版本:3.6.8

系统版本:macOS Mojave

Python Jupyter Notebook

1 引言

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

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

  • 首先,没喝完的奶茶水要倒在水池里
  • 珍珠,水果肉等残渣放进湿垃圾
  • 把杯子要丢入干垃圾
  • 接下来是盖子,如果是带盖子带热饮(比如大部分的热饮),塑料盖是可以归到可回收垃圾的嗷

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

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

2 思路

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

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

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

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

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

3 图像分类

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

报纸 :可回收垃圾

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

电池 :有害垃圾

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

一次性餐盒 :干垃圾

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

我们对图片里的物品进行分类,这是图像处理和识别的领域。人工智能里提出了使用卷积神经网络(Convolutional Neural Network, CNN)来解决这一类问题。

我会用keras包和Tensorflow后端来建立模型。 由于训练集的样本暂时比较缺乏,所以这里只能先给一套思路和代码。训练模型的工作之前还得进行一波数据收集。

我们就先来看看代码大致长什么样吧

先导入一些必要的包。

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

再做一下准备工作。

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

在上面,我们初始化了一些变量,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]是指湿垃圾等等。

接下来是建模的部分。

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

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

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

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

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

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

4 总结

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

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现telnet客户端的方法
Apr 15 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
python 矩阵增加一行或一列的实例
Apr 04 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
pandas 读取各种格式文件的方法
Jun 22 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
Python中有几个关键字
Jun 04 Python
Python分析彩票记录并预测中奖号码过程详解
Jul 09 #Python
python求最大值,不使用内置函数的实现方法
Jul 09 #Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 #Python
python爬虫的一个常见简单js反爬详解
Jul 09 #Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 #Python
python 返回一个列表中第二大的数方法
Jul 09 #Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 #Python
You might like
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Python调用微信公众平台接口操作示例
2017/07/08 Python
python运行其他程序的实现方法
2017/07/14 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Python如何实现定时器功能
2020/05/28 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
大学生工作推荐信范文
2013/12/02 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
党风廉正建设责任书
2015/01/29 职场文书
检讨书模板大全
2015/05/07 职场文书
入党转正申请报告
2015/05/15 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
vscode内网访问服务器的方法
2022/06/28 Servers