Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何构建用于垃圾分类的图像分类器

如何构建用于垃圾分类的图像分类器

作者头像
代码医生工作室
发布于 2019-06-21 08:58:18
发布于 2019-06-21 08:58:18
3.4K0
举报
文章被收录于专栏:相约机器人相约机器人

作者 | Collin Ching

来源 | Towards Data Science

编辑 | 代码医生团队

为何要垃圾分类?

当垃圾处理不当时,就会发生回收污染 - 比如回收带有油的披萨盒。或者当垃圾被正确处理但准备不当时 - 如回收未经冲洗的果酱罐。

污染是回收行业中的一个巨大问题,可以通过自动化垃圾分类来减轻污染。尝试原型化图像分类器来分类垃圾和可回收物 - 这个分类器可以在光学分拣系统中应用。

构建图像分类器

训练一个卷积神经网络,用fastai库(建在PyTorch上)将图像分类为纸板,玻璃,金属,纸张,塑料或垃圾。使用了由Gary Thung和Mindy Yang手动收集的图像数据集。在此处下载其数据集,然后将其移至与笔记本相同的目录中。(注意:需要使用GPU来加速训练。)

https://github.com/garythung/trashnet/blob/master/data/dataset-resized.zip

https://github.com/collindching/Waste-Sorter

建模管道:

  1. 下载并提取图像
  2. 将图像组织到不同的文件夹中
  3. 训练模型
  4. 制作并评估测试预测
  5. 后续步骤

1.提取数据

首先需要提取“dataset-resized.zip”的内容。

从zip文件中提取图像的代码

解压缩后,数据集调整大小的文件夹有六个子文件夹:

忽略.DS_Store

2.将图像组织到不同的文件夹中

现在已经提取了数据,把图像分成训练,验证和测试图像文件夹,分成50-25-25。定义了一些帮助快速构建它的函数,可以在笔记本中查看。

https://nbviewer.jupyter.org/github/collindching/Waste-Sorter/blob/master/Waste%20sorter.ipynb

接下来,将根据ImageNet目录约定创建一堆目标文件夹。这意味着它将有一个包含三个子文件夹的外部文件夹(称之为数据):训练,验证和测试。在每个文件夹中,有一个名为纸板,玻璃,金属,纸张,塑料和垃圾的文件夹。

ImageDataBunch.from_folder()指定将从ImageNet结构中的文件夹中提取训练,验证和测试数据。

批量大小bs是一次训练的图像数量。如果计算机内存较少,请选择较小的批处理大小。

可以使用get_transforms()函数来扩充数据。

以下是数据的示例:

优秀的垃圾照片

3.模型训练

在一行代码中指定CNN

什么是resnet34?

残余神经网络是具有许多层的卷积神经网络(CNN)。特别是resnet34是一个CNN,在ImageNet数据库上预先训练了34层。预训练的CNN在新的图像分类任务上表现更好,因为它已经学习了一些视觉特征并且可以将这些知识迁移(因此迁移学习)。

由于它们能够描述更多的复杂性,因此理论上深度神经网络在训练数据上应该比浅层网络表现更好。但实际上,深度神经网络在经验上往往比浅层神经网络差。

创建了Resnets以使用称为快捷方式连接的黑客来规避这个故障。如果图层中的某些节点具有次优值,则可以调整权重和偏差; 如果节点是最优的(其残差为0),为什么不单独留下?仅根据需要对节点进行调整(当存在非零残差时)。

需要调整时,快捷方式连接应用标识功能将信息传递给后续层。这在可能的情况下缩短了神经网络,并允许resnet具有深层体系结构,并且更像浅层神经网络。resnet34中的34只是指层数。

找到学习率

找到梯度下降的学习率,以确保神经网络合理快速收敛而不会错过最佳误差。

学习速率发现者建议学习率为5.13e-03。有了这个可以训练模型。

训练

验证集训练结果

模型运行了20个时期。这种拟合方法的优点在于学习率随着每个时期而降低,能够越来越接近最佳状态。在8.6%时,验证错误看起来非常好......看看它如何对测试数据执行。

首先可以看看哪些图像分类错误。

可视化大多数不正确的图像

回收装置表现不佳的图像实际上已经降级了。看起来这些照片曝光太多,所以这实际上并不是模型的错!

这种模式经常混淆玻璃塑料和玻璃混淆金属。最困惑的图像列表如下。

4.对测试数据做出新的预测

要了解此模式的实际执行情况,需要对测试数据进行预测。首先将使用learner.get_preds()方法对测试数据进行预测。

注意: learner.predict()仅预测单个图像,而learner.get_preds()预测一组图像。强烈建议您阅读文档以了解有关predict()和get_preds()的更多信息。

get_preds(ds_type)中的ds_type参数采用DataSet参数。示例值是DataSet.Train,DataSet.Valid和DataSet.Test。之所以提到这一点是因为错误地传递了实际数据(learn.data.test_ds),它给了错误的输出并且花了很长时间来调试。

不要犯这个错误!不传递数据 - 传入数据集类型!

这些是每个图像的预测概率。该张量有365行 - 每个图像一个 - 和6列 - 每个材料类别一个。

现在要将上面张量中的概率转换为预测类名的向量。

这些是所有图像的预测标签!检查第一张图像是否真的是玻璃。

接下来将从测试数据集中获取实际标签。

看起来前五个预测相匹配!

这个模型如何整体表现?可以使用混淆矩阵来找出答案。

测试混淆矩阵

混淆矩阵数组

打算让这个矩阵更漂亮一点:

同样,该模型似乎混淆了金属玻璃和塑料玻璃。有了更多的时间,相信进一步的调查可以帮助减少这些错误。

最终在测试数据上获得了92.1%的准确度,这非常棒 - TrashNet数据集的原始创建者在70-30测试训练拆分中使用支持向量机实现了63%的测试精度(训练了神经网络以及27%的测试精度)。

5.后续步骤

如果有更多的时间,会回去减少玻璃的分类错误。还会从数据集中删除过度曝光的照片,因为这些图像只是坏数据。

这只是一个快速而肮脏的迷你项目,表明训练图像分类模型的速度非常快,但是使用fastai库创建最先进的模型的速度非常快。

这个项目的Github。

https://github.com/collindching/Waste-Sorter

关于图书

深度学习之TensorFlow:入门、原理与进阶实战》和《Python带我起飞——入门、进阶、商业实战》两本图书是代码医生团队精心编著的 AI入门与提高的精品图书。配套资源丰富:配套视频、QQ读者群、实例源码、 配套论坛:http://bbs.aianaconda.com 。更多请见:https://www.aianaconda.com

点击“阅读原文”进入大蛇智能鉴黄世界

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?
转载来源:AI 研习社编译的技术博客 原标题:Tensorflow Vs Keras? — Comparison by building a model for image classificatio
崔庆才
2019/09/04
9350
图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?
垃圾图像分类流程图yolov4-tiny_用python编写垃圾分类系统
数据下载链接 https://pan.baidu.com/s/1wr3h2Wc720uqUeIroTCIJA百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间
全栈程序员站长
2022/11/14
6760
垃圾图像分类流程图yolov4-tiny_用python编写垃圾分类系统
我用飞桨做了一个可回收垃圾材料分类机
随着社会生产力的发展,工业化、城镇化的兴起和人口增加,人类社会产生的垃圾与日俱增,加剧了全球范围内的资源短缺和环境污染,对自然环境和人体健康带来了巨大的挑战。
用户1386409
2020/03/24
8440
我用飞桨做了一个可回收垃圾材料分类机
独家 | kaggle季军新手笔记:利用fast.ai对油棕人工林图像进行快速分类(附代码)
WiDS数据马拉松由女性数据科学工作者与她们的伙伴联合发起,她们面临的挑战是需要建立一个模型,来预测一批卫星图像中存在油棕人工林种植园的情况。
数据派THU
2019/05/23
1.1K0
独家 | kaggle季军新手笔记:利用fast.ai对油棕人工林图像进行快速分类(附代码)
fast.ai 深度学习笔记(一)
上面显示的神经网络示例有一个隐藏层。我们在过去几年学到的一些东西是,这种神经网络如果不添加多个隐藏层,就不会快速或可扩展,因此被称为“深度”学习。
ApacheCN_飞龙
2024/02/11
2810
fast.ai 深度学习笔记(一)
CVPR 2022 | 将X光图片用于垃圾分割,港中大(深圳)探索大规模智能垃圾分类
机器之心专栏 作者:李易寒 研究者表示,这一工作有望让大规模的智能垃圾分类检查成为可能,提升垃圾分类回收的效率,减少环境污染。 近些年来,社会的发展带来了生活垃圾的爆发性增长,实行垃圾分类既可以减少对自然环境的破坏,同时对垃圾中的可回收资源进行回收再利用,也带来更大经济效益。垃圾分类的的检查工作是其中的重要一环,只有正确的分类才能提升回收效率和避免环境污染。传统的分类检查方法依赖于人工的翻阅。而现有的图像检查方法也需要打开垃圾袋并且把垃圾摊开。这些检查方法存在两大缺点: 翻开垃圾袋的过程比较繁琐,且对于接触
机器之心
2022/08/25
1960
CVPR 2022 | 将X光图片用于垃圾分割,港中大(深圳)探索大规模智能垃圾分类
Fastai-学习器训练
在Fastai框架下,其实完成了前文所说的数据准备工作,就已经完成了深度网络训练的一半工作。剩下的就是学习器的构建以及训练效果的分析,也就是模型训练的部分。
全栈程序员站长
2022/10/05
8720
Fastai-学习器训练
图像分类比赛中,你可以用如下方案举一反三
雷锋网 AI 研习社按,在本文中,作者将向大家介绍其在 Kaggle 植物幼苗分类大赛(https://www.kaggle.com/c/plant-seedlings-classification)中所使用的解决方案。本文作者曾经位列该项赛事排行榜榜首达数月之久,并最终斩获第五名。作者使用的方法普适性非常强,可以用于其它的图像识别任务。雷锋网(公众号:雷锋网) AI 研习社将原文编译整理如下。
AI研习社
2018/07/26
9520
图像分类比赛中,你可以用如下方案举一反三
如何用 Python 和 fast.ai 做图像深度迁移学习?
说得对!我要感谢你对我专栏的持续关注。我确实讲过深度学习做图像分类,以及迁移学习这两项内容。
王树义
2018/11/29
5810
如何用 Python 和 fast.ai 做图像深度迁移学习?
计算机视觉之ResNet50图像分类
图像分类是计算机视觉应用中最基础的一种,属于有监督学习类别。它的任务是给定一张图像,判断图像所属的类别,比如猫、狗、飞机、汽车等等。本章将介绍使用ResNet50网络对CIFAR-10数据集进行分类。
查拉图斯特拉说
2024/07/11
1.7K0
计算机视觉之ResNet50图像分类
基于python+ResNet50算法实现一个图像识别系统
在本文中将介绍使用Python语言,基于TensorFlow搭建ResNet50卷积神经网络对四种动物图像数据集进行训练,观察其模型训练效果。
子午Python
2023/07/18
1.5K0
测试运行 - 使用 CNTK 的 DNN 图像分类简介
图像分类涉及到决定哪些输入的图像所属的类别,例如识别照片作为一个包含"apples"或"oranges"或"香蕉。" 图像分类的两种最常见方法是使用标准的深度神经网络 (DNN),或使用卷积神经网络 (CNN)。在本文中我将介绍 DNN 方法中,使用 CNTK 库。
AI.NET 极客圈
2020/05/18
1K0
PyTorch +ResNet34实现 图像分类
ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域里得到广泛的应用。它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思,下面是这个resnet的网络结构:
大数据技术与机器学习
2022/03/29
5.3K0
PyTorch +ResNet34实现 图像分类
在 fast.ai 课堂上,我总结的 8 个深度学习最佳实践
翻译 | 付腾 林立宏 整理 | 凡江 在 2017 年我感到最开心的事情就是,我更多地通过实践来参与最新 AI 的发展,学到了很多的数学知识。这很有趣,但是却没有接触什么实践项目。因此,也没有什么东西能体现我付出的努力。 为了弥补这点,在四月份,我在 AI Grant(https://aigrant.org/ )网站上申请了一个 AI 项目,目标是用 FastText(https://fasttext.cc/ ) 的 skip-gram 模型来为肯尼亚语建模。我获得了初选的决赛资格,但是,却没
AI研习社
2018/03/16
1.4K0
在 fast.ai 课堂上,我总结的 8 个深度学习最佳实践
【技术综述】你真的了解图像分类吗?
图像分类是计算机视觉中最基础的任务,基本上深度学习模型的发展史就是图像分类任务提升的发展历史,不过图像分类并不是那么简单,也没有被完全解决。
abs_zero
2018/12/13
6920
【干货】PyTorch实例:用ResNet进行交通标志分类
【导读】本文是机器学习工程师Pavel Surmenok撰写的一篇技术博客,用Pytorch实现ResNet网络,并用德国交通标志识别基准数据集进行实验。文中分别介绍了数据集、实验方法、代码、准备工作
WZEARW
2018/04/08
3.3K0
【干货】PyTorch实例:用ResNet进行交通标志分类
从零开始,半小时学会PyTorch快速图片分类
这是一篇长文教程,建议大家读不完的话一定要收藏,利用闲暇时光将其读完!更加欢迎将本文转发给同学、朋友、同事等。
新智元
2019/07/12
1.5K0
从零开始,半小时学会PyTorch快速图片分类
使用深度学习进行图像分类
解决任何真实问题的重要一步是获取数据。Kaggle提供了大量不同数据科学问题的竞赛。我们将挑选一个2014年提出的问题,然后使用这个问题测试本章的深度学习算法,并在第5章中进行改进,我们将基于卷积神经网络(CNN)和一些可以使用的高级技术来改善图像识别模型的性能。大家可以从https://www.kaggle.com/c/dogs-vs-cats/data下载数据。数据集包含25,000张猫和狗的图片。在实现算法前,预处理数据,并对训练、验证和测试数据集进行划分是需要执行的重要步骤。数据下载完成后,可以看到对应数据文件夹包含了如图3.6所示的图片。
用户9881348
2022/07/07
9590
基于卷积神经网络的垃圾图像分类算法
垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带 来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于 卷积神经网络的垃圾图像分类模型 (Garbage Classification Network, GCNet). 通过构建注意力机制, 模型完成局部 和全局的特征提取, 能够获取到更加完善、有效的特征信息; 同时, 通过特征融合机制, 将不同层级、尺寸的特征进 行融合, 更加有效地利用特征, 避免梯度消失现象. 实验结果证明, GCNet 在相关垃圾分类数据集上取得了优异的 结果, 能够有效地提高垃圾识别精度.
小白学视觉
2022/02/14
1.1K0
基于卷积神经网络的垃圾图像分类算法
精读 AlexNet 并使用 PyTorch 实现图像分类器
在深度学习的历史上,AlexNet 可谓是一座里程碑。2012 年,这款由 Alex Krizhevsky 等人提出的卷积神经网络在 ImageNet 图像识别大赛中以绝对优势震撼了整个计算机视觉界,开启了深度学习的黄金时代。尽管 AlexNet 这篇论文今天被很多大佬拉出来“鞭尸”,但对于我这样的初学者小白来说,还是一篇值得阅读的论文。
繁依Fanyi
2025/03/20
1500
推荐阅读
相关推荐
图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档