导 言
垃圾分类,指按一定规定或标准将垃圾分类储存、分类投放和分类搬运,从而转变成公共资源的一系列活动的总称。这不仅是出于生态环境角度考虑,“没有垃圾,只有放错位置的资源”,分类收集后,不少垃圾都可以被重新再利用。
随着我国城市化水平的提高,越来越多的生活、生产垃圾成了每一座城市的心病。由于国内现在采取的垃圾处理方式还是粗放型的堆肥、焚烧和填埋,投入成本高、浪费严重,同时效率低下,近几年大城市因土地容量不够而向中小城市转移垃圾非法填埋的新闻屡见报端。
在这波垃圾分类的热潮中,最可怜就要数小龙虾了,小龙虾经历了“龙虾头是干垃圾、龙虾壳是湿垃圾”、“受污染的龙虾头是有害垃圾”、“不管是龙虾壳还是龙虾头,只要是吃剩下的都是湿垃圾”这三个阶段,小龙虾“悲惨”的一生注定了它无论是生还是死,都逃不过人们的争议。
从今年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
长按订阅更多精彩▼