导 言

垃圾分类,指按一定规定或标准将垃圾分类储存、分类投放和分类搬运,从而转变成公共资源的一系列活动的总称。这不仅是出于生态环境角度考虑,“没有垃圾,只有放错位置的资源”,分类收集后,不少垃圾都可以被重新再利用。

随着我国城市化水平的提高,越来越多的生活、生产垃圾成了每一座城市的心病。由于国内现在采取的垃圾处理方式还是粗放型的堆肥、焚烧和填埋,投入成本高、浪费严重,同时效率低下,近几年大城市因土地容量不够而向中小城市转移垃圾非法填埋的新闻屡见报端。

在这波垃圾分类的热潮中,最可怜就要数小龙虾了,小龙虾经历了“龙虾头是干垃圾、龙虾壳是湿垃圾”、“受污染的龙虾头是有害垃圾”、“不管是龙虾壳还是龙虾头,只要是吃剩下的都是湿垃圾”这三个阶段,小龙虾“悲惨”的一生注定了它无论是生还是死,都逃不过人们的争议。

从今年7月1日起,新的《上海市生活垃圾管理条例》正式开始施行。面对志愿者的大妈的灵魂拷问,一时间“你是什么垃圾”成为年轻人之间最流行的日常用语。以后扔垃圾前我们都必须先将垃圾仔细分成:可回收物、有害垃圾、湿垃圾和干垃圾四个类别。

需要记住104 种物品对应的垃圾类别,这着实是一项难度不小的任务。比如干湿垃圾的分类就已经让很多人犯晕:湿纸巾是干垃圾,而干香菇是湿垃圾。塑料杯属于干垃圾,而奶茶属于湿垃圾,所以,半杯奶茶属于什么垃圾?不过对此,我们也不必操之过急。就拿垃圾分类最仔细、最严格的日本来说,也并不是一朝一夕就达到目前这种程度的。

从 70 年代起,日本就面临严重环境污染问题,开始实施垃圾分类措施,之后花了27年才最终实现了全民垃圾分类。日本的垃圾分类以及仔细到严苛的程度,仅横滨市就印刷了 27 页包含 518 项类别的手册。


在日常生活中,每个类别的垃圾往往包含了不同的“内容”,人们在分类投放的时候难免会出现偏差,这时候如果有一个分类神器对垃圾拍个照就能告诉我们是什么类别那就完美啦。

今天的文章,我们将从人工智能的角度出发,尝试利用深度学习技术构建一个垃圾自动分类器,同时也会进一步介绍AI垃圾分类遇到的挑战和一些思考。

收集“垃圾”图像数据

为了实现一个理想的垃圾自动分类器,需要有一个已经分好类别的“垃圾”图像数据集作为训练的基础。然而当前并没有这样一个可以直接使用的数据集,所以我们首先自己动手收集海量的“垃圾”图像并为每张图像标注上相应的类别。

数据集的收集一直以来都是一件耗时耗力的工作,为了快速便捷地完成“垃圾”图像数据集的收集,我们依据官方发布的垃圾分类指南上每一类所包含的垃圾名称,通过在百度图片上爬取名称对应的图像来实现。官方发布的垃圾分类指南如下图所示。

在实际的应用场景中,待分类的样本往往是不可控的,所以一般会增加“其他”这个类别用来收留各种异常样本。在垃圾分类中,除可回收物、有害垃圾和湿垃圾外都属于干垃圾,所以干垃圾已经扮演了“其他”的角色。我们的“垃圾”图像数据集最终分为:可回收垃圾、有害垃圾、湿垃圾和干垃圾四个类别。数据集的部分图像如下图所示。

垃圾自动分类器

垃圾自动分类本质上是一个图像分类问题,我们先回顾这些分类网络的演进思路,再进一步将分类算法应用于垃圾分类,介绍构建一个垃圾自动分类器的流程和细节。

卷积神经网络在2012年迎来了历史突破,AlexNet的出现让卷积神经网络开始逐渐成为计算机视觉任务的标配。在AlexNet的基础上,以增加网络深度为思路,出现了VGGNet;以增强卷积模块为思路,出现了基于Inception的一系列网络。

当前ResNet及其变种形式已经被广泛地应用于图像分类任务,同时也成为了在解决目标检测和图像分割等其他计算机视觉问题时常用的主干网络结构。

在本文中,我们使用50层的ResNet来构建垃圾自动分类器。具体我们采用在ImageNet数据集上预训练的ResNet50模型参数作为初始化,利用上一节中收集的“垃圾”图像数据集对其进行微调。

其中我们将上述ResNet50的最后一层输出从1000(ImageNet数据集的分类数量)修改为4(垃圾分类数量),同时在训练过程中冻结了部分卷积层参数的更新。此外还进一步利用水平翻转、随机裁剪和色彩抖动等方式对训练的“垃圾”图像进行数据增强。在完成垃圾自动分类器的训练后,我们对一些垃圾进行了自动分类的测试,准确率达到近90%。虽然对复杂的情况还是存在一定的误判,但大部分常见的垃圾都得到了正确的区分,具有较强的实用性。

从单个垃圾的分类到一堆垃圾的分类

上一个小节中我们介绍了垃圾自动分类器的构建,但是这样的垃圾分类器的输入都是单个垃圾图像。在实际的垃圾分类投放过程中,对单个的垃圾进行一一拍照分类显得过于繁琐和缓慢。那能不能对一群垃圾直接拍照后进行批量分类呢?要实现对一群垃圾的批量分类,其实就是要构建一个垃圾的目标检测器。输入一张含有多个垃圾的图像,让模型输出图像上每种垃圾对应的类别。

和垃圾分类器一样,一个理想的垃圾检测器,需要大量的“垃圾”标注数据来支撑。但是与分类数据集相比,检测数据集除了标注类别外还要标注图位置坐标,这样的标注工作非常艰巨。在完成垃圾检测的图像数据集后,就可以利用当前主流的深度学习检测算法来实现批量垃圾的分类。

结 语

实际上,芬兰的ZenRobotics公司在2012年公开其首代产品“ZenRobotics回收机”。随后经过近5年时间不断研发改进,一种基于视觉判断的垃圾分类机器人Next Generation ZenRobotics Recycler(下称ZenRobotics)研发成功。芬兰的ZenRobotics公司于2012年公开其首代产品“ZenRobotics回收机”。随后经过近5年时间不断研发改进,一种基于视觉判断的垃圾分类机器人Next Generation ZenRobotics Recycler(下称ZenRobotics)研发成功。

在实际的垃圾分类中,由于垃圾多种多样,同一类别的垃圾可能差异很大,而不同类别的垃圾可能差异很小,在复杂情况下分类器效果可能会不尽如人意,后续可以考虑加入垃圾之间的高层次语义关系信息,进一步提升分类器的性能。最后希望大家都能做到正确的垃圾分类投放,毕竟生活不易,还是不要被罚款。

参考资料

[1] Deep Residual Learning for Image Recognition

[2] ImageNet Classification with Deep Convolutional Neural Networks

[3] Very Deep Convolutional Networks for Large-Scale Image Recognition

长按订阅更多精彩▼

深度学习:垃圾自动分类相关推荐

  1. 毕业设计 opencv python 深度学习垃圾图像分类系统

    文章目录 0 前言 课题简介 一.识别效果 二.实现 1.数据集 2.实现原理和方法 3.网络结构 最后 0 前言

  2. 【深度学习】对抗扰动、垃圾/钓鱼邮件自动分类和UEBA

    [深度学习]对抗扰动.垃圾/钓鱼邮件自动分类和UEBA 文章目录 1 数据集 2 清洗数据集 3 GloVe + LSTM 4 GloVe词向量模型 5 搭建网络整体结构 6 训练模型并验证 7 对抗 ...

  3. 被垃圾分类逼疯?这个深度学习技术帮你做到垃圾自动分类

    上海迈出中国垃圾分类第一步 7月1日起,被称为"史上最严"垃圾分类措施的<上海市生活垃圾管理条例>正式实施,根据规定,个人或单位未按规定分类投放垃圾都将面临处罚.与此同 ...

  4. 上海居民快被垃圾分类逼疯!这个深度学习技术帮你做到垃圾自动分类

    让垃圾自动分类 近期垃圾分类成为了一个热门话题,原来直接一次性扔掉的垃圾,现在都需要分门别类进行投放.从今年7月1日起,新的<上海市生活垃圾管理条例>正式开始施行,号称史上最严的垃圾分类就 ...

  5. 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码

    一.项目概述 简介:该垃圾分类项目主要在于对各种垃圾进行所属归类,本次项目采用keras深度学习框架搭建卷积神经网络模型实现图像分类,最终移植在树莓派上进行实时视频流的垃圾识别. 前期:主要考虑PC端 ...

  6. 毕业设计 - 题目:垃圾邮件(短信)分类 算法实现 机器学习 深度学习 开题

    文章目录 1 前言 2 垃圾短信/邮件 分类算法 原理 2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍 4 数据预处理 5 特征提取 6 训练分类器 7 综合测试结果 8 其他模型方法 9 最 ...

  7. 手把手带你实现基于深度学习的垃圾分类器

    随着PaddlePaddle2.0的更新,PaddleClas图像分类套件也更新到了2.0-rc1版本.新版本的PaddleClas套件已经默认使用动态图来进行模型训练.现在我们使用PaddleCla ...

  8. 基于python pyotrch开发的垃圾分类程序,含数据集,基于深度学习的垃圾分类程序

    基于python的垃圾分类程序,提供数据集(pytorch开发) 完整代码下载地址:基于python pyotrch开发的垃圾分类程序,含数据集 垃圾分类是目前社会的一个热点,分类的任务是计算机视觉任 ...

  9. 深度学习技巧应用18-OFD格式文件与人工智能结合的技巧应用,实现OFD转文本、OFD自动分类与内容提取

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用18-OFD格式文件与人工智能结合的技巧应用,实现OFD转文本.OFD自动分类与内容提取.OFD格式文件被称为"中国版PDF" ...

最新文章

  1. boost::hana::span用法的测试程序
  2. FastDFS+Nginx实现文件服务器
  3. 动态属性 的简单思考
  4. Blas SGEMM launch failed
  5. python中的sklearn.svm.svr_python机器学习库scikit-learn:SVR的基本应用
  6. mysql+分页脚本_MySql实现分页查询的SQL
  7. Atitit usrqbg1821 Tls 线程本地存储(ThreadLocal Storage 规范标准化草案解决方案ThreadStatic
  8. 概率dp(A - Scout YYF I POJ - 3744 )
  9. Win7激活工具无效?输入SLMGR -REARM显示不是内部命令?
  10. 一个美女引发的两次灭国之战
  11. Java创建SpringBoot服务时yml文件显示粉色不显示绿色小叶子
  12. FX3 DMA生产者消费者ID代表的含义
  13. 清晰扫描件怎么弄:试试扫描裁缝ScanTailor Advanced吧 | 含scantailor使用方法
  14. python智能写小说软件_Scratch编程实现智能自动创作写小说,自动生成文章,自动写材料...
  15. Coursehero解锁Coursehero UnlockCoursehero查答案chegg查题下载
  16. win7用计算机名共享打印机,win7共享打印机需要输入用户名和密码该怎么办啊?...
  17. 通过GET_TAX_PERCENTAGE 函数获取税率
  18. 7. Laravel5学习笔记:如何定义自己的视图组件
  19. ABP中使用MySql数据库
  20. 人脸识别行业热点频频背后蕴藏巨大商机

热门文章

  1. echarts 饼图每块颜色_读者提问,如何让 tooltip 提示框内显示饼图
  2. skywalking原理_Skywalking系列博客6手把手教你编写 Skywalking 插件
  3. 【学习笔记】超简单的多项式求逆(含全套证明)
  4. P1024 一元三次方程求解(递归式二分)
  5. Codeforces Round #643 (Div. 2)题解
  6. 利用php和ajax实现的,利用PHP和AJAX实现数据库增值
  7. bae java_有人在BAE开发过java-tomcat应用吗?数据库老是链接失败
  8. java 取整型的低八位_Java 基础(十五)并发工具包 concurrent
  9. html xhtml and css,HTML与XHTML的重要区别
  10. android layerlist bitmap,android – 在LayerListDrawable中更改Bitmap Drawable