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

  

  

Python版本:3.6.8

  

系统版本:macOS莫哈韦

  Python Jupyter笔记本

  

  

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

  

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

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

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

  

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

  


  

  

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

  

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

  

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

  

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

  

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

  

  

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

  

报纸:可回收垃圾

  

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

  

电池:有害垃圾

  

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

  

一次性餐盒:干垃圾

  

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

  

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

  

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

  

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

  

先导入一些必要的包。

  

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

  

再做一下准备工作。

  

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

  

在上面,我们初始化了一些变量,批量大小是128;num_classes=4,因为需要分类的数量是4,有干垃圾,湿垃圾,有害垃圾和可回收垃圾这四个种类.epochs是我们要训练的次数。接下来,img_rows img_cols=28日28我们给了图片的纬度大小。

  

在.reshape(28日,60000年,28日1)中,60000年是图片的数量(可变),28是图片的大小(可调),并且1是频道的意思,频道=1是指黑白照片。.reshape(1) 10000年,28岁的28日也是同理,只是图片数量是10000 .

  

到了最后两行,我们是把我们目标变量的值转化成一个二分类,是用一个向量(矩)阵来表示。比如(1,0,0,0)是指干垃圾,(0,1,0,0)是指湿垃圾等等。

  

接下来是建模的部分。

  

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

  

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

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