基于机器学习的垃圾分类

1绪论

1.1问题背景

垃圾分类有减少环境污染、节省土地资源、再生资源的利用、提高民众价值观念等的好处,在倡导绿色生活,注重环境保护的今天,正确的垃圾分类和处理对我们的生态环境显得尤为重要。

在国外很多国家,经过了几十年的不断改进发展,已经有了一套很严格规范的垃圾分类政策,民众也形成了很强的垃圾分类意识,并且在人工智能广泛应用的今天,也有很多公司将人工智能与自动垃圾分类相结合。前几年波兰创业公司Bin-e公司开发了一种全新的人工智能垃圾桶,用户只需要在垃圾桶前扫描一下垃圾,舱门便会打开。这个人工智能垃圾桶是通过传感器、摄像头、AI图像识别算法来自动进行垃圾分类,而且回收公司也可以通过APP来随时检查垃圾桶的剩余空间等。印度尼西亚一家创业公司Gringgo也曾使用谷歌的机器学习平台TensorFlow研发图像识别工具,目标是让环卫工人更好地对垃圾进行分析和分类,并量化它们的价值。[1]

对于国内的垃圾分类政策,在近几年才开始逐步严格实施:2019年6月,中华人民共和国住房和城乡建设部在内的9部门印发《关于在全国地级及以上城市全面开展生活垃圾分类工作的通知》。其中要求:到2020年,46个重点城市基本建成生活垃圾分类处理系统;其他地级城市实现公共机构生活垃圾分类全覆盖,至少有1个街道基本建成生活垃圾分类示范片区。目前,中国已在北京和上海已经开始严格实施生活垃圾管理条例,并计划在定点城市先行的基础上,在全国全面推广实施垃圾分类,由此可见垃圾分类将会逐渐变成中国的常态。[2][3][4][5]

我们的项目以我们更为熟悉的北京的垃圾分类标准来研究,其中的一大类则是厨余垃圾,其处理与利用更是备受关注。根据英国机械工程学院(IME)的研究,2013年全球有一半的食物被浪费掉,浪费与损耗发生在食品供应链的所有阶段。[6]在低所得国家,大部分的耗损是在生产阶段发生的;而在发达国家,最多的浪费发生在消费食物的阶段——平均每年每人会浪费100公斤左右的食物。[7]厨余垃圾为一种生物降解垃圾,属生物质,可作为堆肥、发电、生物气体或合成气原料等,有很多利用价值。可见,如果正确处理厨余垃圾不仅可以很好地保护生态环境,而且还能带来不错的经济效益。但是如果厨余垃圾处理不当,比如混入其他塑料垃圾,有害垃圾,效果会适得其反。因此需要格外注意厨余垃圾的分类正确率。但是如今国内刚实行垃圾分类政策不久,大多数民众的垃圾分类意识不强,导致厨余垃圾的纯度不够,因此在北京很多小区中都有专门的监管人员在回收站点旁对居民是否正确投放厨余垃圾的情况进行监督。但在监督过程中若一直采用纯人工的方式则会出现工作量大、效率不高、成本较高的问题,同时也避免不了监控人员有时也分类出错的情况。

1.2研究的目的和意义

如今越来越多的地方开始实行垃圾分类政策。而有些小区每天对于厨余垃圾的投放时间有限制,只能在一个固定的时间段投放厨余垃圾垃圾,为了避免一些人不按规定投放垃圾,提高厨余垃圾的纯度,一般在垃圾投放点都有专人监督。而我们想的是能不能实现机器自动监督,为此我们可以运用人工智能,机器学习的方法,依托Python平台开发一个自动监控系统,具有垃圾分类提示,识别厨余垃圾中是否掺杂非厨余垃圾,错误投放垃圾(错误时间段投放,垃圾分类错误)警示等的功能。

为了减轻人工工作成本和提高厨余垃圾分类的准确度,国内近几年也有很多关于自动监控垃圾分类的研究。有研究人员通过提取监控视频中垃圾投放人员和垃圾箱的图像信息,将其传送给监控人员判断来进行监控[8];或者在投放垃圾时,通过刷卡、刷脸、扫二维码等获取垃圾投放人员的信息,并对垃圾进行拍照和监控[9]。在软件核心上,利用MATLAB或OpenCV等进行图像的采集和处理,再利用卷积神经网络实现最终判断分类。但这些算法对同一类垃圾处于不同外在形式或物理形态时是否能有高正确率的判断的研究较少,并且它们所基于的垃圾分类标准彼此都有一些差别,与各个城市实际的垃圾分类标准也不同,有的数据集还比较单一。[10][11][12][13]因此,根据北京地区垃圾分类的标准,设计出符合北京政策要求的垃圾分类自动监控系统,提高厨余垃圾的正确分类率是具有实际意义的。

2.项目方案

2.1科学性

如今AI,机器学习、图像处理变得越来越热门,这些技术在越来越多的部门和领域得到了广泛且深刻的应用,并取得了十分不错的成果。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。何谓 “机器学习”,学界尚未有统一的定义。Tom Mitchell 教授是这样解释机器学习的:对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E中学习。让没有生命的机器自己学习本就是一件有趣事情,而且计算机很擅长做重复且大量的计算。目前的机器学习主要分为两大类:监督学习和无监督学习,无监督学习(Unsupervised learning)就是聚类,事先不知道样本的类别,通过某种办法,把相似的样本放在一起归位一类;而监督型学习(Supervised learning)就是有训练样本,带有属性标签,也可以理解成样本有输入有输出。而本项目要实现的功能主要使用监督学习,监督学习算法主要有:决策树,朴素贝叶斯分类,逻辑回归,支持向量机(Support Vector Machines),神经网络等。

2.2 创新性

如今人们保护环境的意识愈发强烈,在国家的号召下垃圾分类在越来越多的城市开始实行,人们每天要花大量的时间对垃圾进行分类,而对厨余垃圾的管理更加严格,人们只能在每天的某段时间内投放厨余垃圾,时间久了垃圾会发臭,影响人们的生活环境。而且厨余垃圾之后一般是要送到专门的处理机构处理成肥料或家禽饲料,如果分类疏忽使厨余垃圾里含有塑料、电池、重金属等的垃圾后果不堪设想,受到伤害的永远是食物链顶端的人类,所以一般都有专门人员在垃圾投放点进行管理。为此,本项目将创新性地将AI机器学习这项技术应用到如今的垃圾分类领域中,对在错误时间段投放垃圾的行为进行警示和判断投放厨余垃圾里是否含有其他垃圾,以达到提升垃圾分类准确度,减轻垃圾管理人员劳动强度的目的。

2.3 技术可行性

如流程图所示,本项目对错误投放厨余垃圾的行为可以是先判断站在厨余垃圾桶前的人是否有倾倒垃圾的行为,若有,则接着判断是否在规定时间内投放垃圾以及垃圾投放是否正确。而这些可以用相关图像处理算法来完成,OpenCV和MATLAB等的平台都是不错的选择。对判断厨余垃圾里是否有其他垃圾的研究其本质是一个分类问题,通过向已经训练好的模型输入垃圾的特征参数,输出的就是本模型对该垃圾的类型的判断,而垃圾的特征参数可以是垃圾的颜色,大小,形状等,也可以是一张垃圾的图片,抽象点来说就是一多维数组。而现在的各种机器学习包和库发展得也比较好,如TensorFlow、PyTorch、Scikit-learn等都是基于Python的开源机器学习库,这些机器学习库大多可以使用电脑的GPU进行加速,比传统的CPU计算快了好几倍,而且可以比较方便地调用各种机器学习算法框架来构建自己的模型。为此我们要先制作各种垃圾的数据集,并标上标签,这可以通过爬取百度图片等的图片网站的各种垃圾图片然后加上标签。之后这些图片将会被分为训练集和测试集,训练集用以训练模型,优化相关参数,测试集用以检验模型的准确度;之后我们将使用Python及其相关机器学习包来搭建模型并对其进行训练以及优化一些参数;如果项目进展顺利的话我们可以将模型移植到相关硬件上,比如K210。K210这款芯片是基于RISC-V架构进行研发设计的,该芯片基于自主研发的神经网络加速器KPU,可完成基于神经网络的图像分类任务,进行人脸识别与检测,以及实时获取被检测目标的分类。芯片搭载FPIOA现场可编程IO阵列,支持TensorFlow、Keras、Darknet、Paddle和Caffe等主流AI编程框架。

img

图2-1系统监控流程图

3. 基于机器学习的垃圾监控系统

3.1 问题描述

(1).大量垃圾图片数据集的搜集与整理;

(2). 对一些城市的小区垃圾分类具体政策和垃圾分类标准的了解

(3).监控市民是否在规定时间投放厨余垃圾,防止厨余垃圾长时间无人处理而影响环境。采集投放点的视频图像,利用自然场景理解与识别算法,判断是否有人进行投放。若有市民未在规定时间投放厨余垃圾则自动警报。

(4).根据垃圾图像识别分出垃圾类型,基于机器学习的理念,收集大量不同状态的垃圾图像数据集,对数据集的图片进行图像处理,在此基础上利用深度学习卷积神经网络(ConvolutionalNeuralNetwork,CNN)提供的模型进行不断地训练优化,学习图像分类识别所需的大量特征,用于垃圾的分类识别。

(5).在厨余垃圾中检测其他垃圾,防止其他垃圾对厨余垃圾后续处理过程造成影响。采集投放进厨余垃圾点的垃圾图像,智能识别出图像中的其他垃圾并标记,当有其他垃圾误投进厨余垃圾点时,系统自动警报。

提出解决方案:对国内各大城市的垃圾分类政策流程进行分析与研究,找到最优化的厨余垃圾处理方案。

基于机器学习的智能分类:收集大量不同种类、不同形态的垃圾图片,通过网络爬虫等方法创建数据集并标注数据集,基于现有的机器学习方法,用keras包和Tensorflow等后端来建立模型,并对该模型进行优化调参,对已有的算法模型进行优化调参,以得到厨余垃圾的图像特征,实现从厨余垃圾中识别出非厨余垃圾。

图像处理:对于收集来的数据集图像和摄像头捕捉到的自然场景图像,利用OpenCV和其他计算机软件对其进行处理。基于自然场景的理解与分析算法,判别出是否有人投放垃圾,实现对垃圾投放人员进行监控。

3.2 基本算法模型

对收集垃圾图片进行test和train数据集划分,并利用OpenCV进行模板匹配并找出阈值,将该阈值用于test数据集进行测试

img

图3-1系统流程图

img

图3-2算法流程图

3.3 实验及分析

1、收集的用于train和test的数据集,命名1为不含非厨余垃圾,即合格;0为含非厨余垃圾即不合格,以方便后期程序设计。

img

图3-3数据集

2、Train的代码:对train数据集进行训练,寻找阈值。train数据集中含50张合格厨余垃圾图片,50张不合格垃圾图片。

image-20240306100959372

图3-4train代码

3、使用matplotlib库画图以便阈值寻找,如下图,阈值为0.39比较好。

img

图3-5阈值寻找

4、Test的代码:对test数据集进行判断,判断是否含非厨余垃圾以及判断是否正确。test数据集中含15张合格厨余垃圾图片,15张不合格垃圾图片。

img

图3-6 test代码

对于二分类来说,一般平衡点即查准率等于查全率时模型的性能比较高,此时漏检率等于误检率,而且误检率和漏检率越低越好以塑料模板为例,我们利用模板匹配算法,得出三种匹配方式下的匹配度散点图。可以看出,标准相关性系数匹配方法要优于标准相关性匹配和标准平方差匹配,因此我们在后面的测试集中将选用标准相关系数匹配方法。

用训练集得出的阈值对测试集进行测试的结果,测试样本总共有60张,其中正确分类有50张,错误分类的有10张,正确率83%,查准率和查全率均为83%。说明我们训练得出的阈值能在测试集中有比较好的表现,能够兼顾查准率和查全率对

4. 结论

对收集合格和不合格的垃圾图片进行训练集和测试集的划分并开始进行编程实验,取得一个较好的泛化阈值对测试集进行测试,得到的垃圾识别判断正确率为83.3%。在实验过程中出现了以下问题:各种情况的厨余垃圾图片数据的收集量不足;对不同模板的阈值寻找混在一起了,导致因为图片标记的问题而无法找到合适的阈值(合格与不合格的分界线不明显);训练集的算法较简单,测试集正确率已达到瓶颈,模型泛化能力不太能达到很好的预期要求。

参考文献

参考文献:

[1] AI垃圾分类市场风口爆发,究竟是“市场”还是“大坑”.电子工程世界.2019-08-16 [2020-07-03]. http://news.eeworld.com.cn/qrs/ic471393.html.

[2] 我国自2019年起在全国地级及以上城市全面启动生活垃圾分类. 新华社. 2019-06-06 [2020-07-03].

[3] 吴娇颖.9部门:今年起全国地级及以上城市全面启动生活垃圾分类. 新京报. 2019-06-06 [2020-07-03].

[4] 住房和城乡建设部等部门关于在全国地级及以上城市全面开展生活垃圾分类工作的通知.中国政府网.2019-06-11 [2019-07-02].

[5] 逯海涛.做好垃圾分类,贵有恒心.浙江日报.2019-07-01 [2020-07-03].

[6] Food Waste: Half Of All Food Ends Up Thrown Away. Huffington Post.10 January 2013 [2020-07-03].

[7] Gustavsson, J, Cederberg, C & Sonesson, U, 2011, Global Food Losses and Food Waste, Food And Agriculture Organization Of The United Nations, Gothenburg Sweden.

[8] 深兰科技(上海)有限公司.一种监控垃圾分类投放的方法、装置以及系统:中国, CN201910796973.3[P]. 2019-12-03.

[9] 夏策联.一种垃圾分类投放的监控方法及系统:中国, CN201910642657.0[P].2019-09-06.

[10] 谢堂,吴居豪,温泉河.基于机器学习的智能垃圾分类箱[J].现代计算机,2020,(12).

[11] 吴健,陈豪,方武.基于计算机视觉的废物垃圾分析与识别研究[J].信息技术与信息化,2016,(10).

[12] 张方超,董振,张栋,武涛,李卫国.基于图像视觉的垃圾分类机器人识别控制系统算法设计[J].电子测量技术,2019,42(20).

[13] 祝朝坤,魏伦胜.基于TensorFlow的智能垃圾分类系统的研究与设计[J].电子产品世界,2020,(6).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VTK的编译和部署,配合c++和visual studio2022,VTK开发环境的配置

1.下载 在官网选择最新的版本 Download | VTK 下载之后进行解压,然后再里面创建build目录,方便后面使用cmake进行编译 2.对源码进行编译 打卡Cmake,如图操作 可以看到点击configure之后,cmake对我们的代码在进行处理 处理完成之…

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(二)

学习后端CRUD操作 书接上文,我们学习了前后端分离项目的基础环境配置和用户管理模块的前后端基础搭建,以下链接是上一节教程内容详细步骤,友友们可以跟着步骤实操。本节课程我们在前面项目的基础上接着学习后端CRUD操作,真正打通数…

阿里云一键登录(号码认证服务)

前言 用户登录原来的登录方式如下 1. 手机号验证码 2. 账号密码 运营觉得操作过于复杂, 因此想引入阿里自动登录的逻辑, 也就是号码认证服务,所以才有了这篇问文章 注: 本文只是记录Java端的实现, app端的请自行查询文档实现 官方资料 文档 : 什么是号码认证服务_号码认证服务(…

SpringBoot中集成LiteFlow(轻量、快速、稳定可编排的组件式规则引擎)实现复杂业务解耦、动态编排、高可扩展

场景 在业务开发中,经常遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。 使用策略和模板模式的结合可以解决这个问题,但是使用编码的方式会使得文件太多, 在业务的部分环节可以这样操作,在项目角度就无法一眼洞…

【洛谷 P9240】[蓝桥杯 2023 省 B] 冶炼金属 题解(二分答案)

[蓝桥杯 2023 省 B] 冶炼金属 题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V V V, V V V 是一个正整数,这意味着消耗 V V V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普…

产业园区如何实现数字化运营管理?

​在数字化浪潮席卷全球的今天,产业园区正经历着前所未有的变革,数字化运营管理成为各个园区转型升级的发力方向,它不仅能够提升园区的运营管理效率,还能够帮助园区提高服务效能、实现精准招商、增强决策效率,从而全面…

Redis实战—商户查询缓存

本博客为个人学习笔记,学习网站:黑马程序员Redis入门到实战 实战篇之商户查询缓存 目录 什么是缓存 添加Redis缓存 缓存更新策略 数据库缓存不一致解决方案 案例:给查询商铺的缓存添加超时剔除和主动更新策略 缓存穿透 案例&#xff1…

奇富科技:大数据任务从诊断到自愈的实践之路

一、为什么要做诊断引擎 毓数平台是奇富科技公司自主研发的一站式大数据管理、开发、分析平台,覆盖大数据资产管理、数据开发及任务调度、自助分析及可视化、统一指标管理等多个数据生命周期流程,让用户使用数据的同时,挖掘数据最大的价值。…

打造高效、安全的交易平台:开发流程与关键要素解析

在数字化时代,大宗商品交易平台开发/搭建已成为连接买家与卖家的桥梁,为无数企业和个人提供了便捷、高效的交易机会。然而,随着市场的竞争日益激烈,如何打造一个既符合用户需求又具备竞争力的交易平台,成为了众多开发者…

文件上传{session文件包含以及条件竞争、图片文件渲染绕过(gif、png、jpg)}

session文件包含以及条件竞争 条件: 知道session文件存储在哪里 一般的默认位置: /var/lib/php/sess_PHPSESSID /var/lib/php/sessions/sess_PHPSESSID /tmp/sess_PHPSESSID /tmp/sessions/sess_PHPSESSID ####在没做过设置的情况下一般都是存储在/var…

解决WordPress更新插件或者更新版本报WordPress 需要访问您网页服务器的权限的问题

文章目录 前言一、原因二、解决步骤总结 前言 当对WordPress的插件或者版本进行更新时报错:要执行请求的操作,WordPress 需要访问您网页服务器的权限。 请输入您的 FTP 登录凭据以继续。 如果您忘记了您的登录凭据(如用户名、密码&#xff09…

光线追踪7 - 抗锯齿(Antialiasing)

目前为止,如果你放大渲染出的图像,可能会注意到图像边缘的明显“阶梯状”效果。这种阶梯效果通常被称为“走样”或“锯齿”。当真实相机拍摄图片时,边缘通常没有锯齿,因为边缘像素是一些前景和一些背景的混合。请考虑,…

5. 链接和加载(linker and loader)

链接和加载(linker and loader): linker即链接器,它负责将多个.c编译生成的.o文件,链接成一个可执行文件或者是库文件; loader即加载器,它原本的功能很单一只是将可执行文件的段拷贝到编译确定的内存地址即可&#x…

英福康INFICON残余气体RGA General Chinese中文培训PPT课件

英福康INFICON残余气体RGA General Chinese中文培训PPT课件

【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目

作者推荐 视频算法专题 本文涉及知识点 树上倍增 树 图论 并集查找 换根法 深度优先 割点 LeetCode3067. 在带权树网络中统计可连接服务器对数目 给你一棵无根带权树,树中总共有 n 个节点,分别表示 n 个服务器,服务器从 0 到 n - 1 编号…

Java | 在消息对话框中显示文本

首先需要导入JOptionPane类,JOptionPane类属于Swing组件中的一种,其导入方式如下: import javax.swing.JOptionPane;可以使用JOptionPane的showMessageDialog方法显示消息文本。 参数格式: JOptionPane.showMessageDialog(paren…

【C语言】指针详细解读2

1.const 修饰指针 1.1 const修饰变量 变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。 但是如果我们希望⼀个变量加上⼀些限制,不能被修改,怎么做呢?这就是const的作⽤。 …

RK3568平台开发系列讲解(基础篇)注册字符设备

🚀返回专栏总目录 文章目录 一、字符设备初始化二、字符设备的注册和注销三、实验代码沉淀、分享、成长,让自己和他人都能有所收获!😄 注册字符设备可以分为两个步骤: 字符设备初始化字符设备的添加一、字符设备初始化 字符设备初始化所用到的函数为 cdev_init(…),在对…

解决QMYSQL driver not loaded问题

前言 之前都是在Qt5.51上开发,连接mysql数据库一直没有问题,换到5.15.2后一直报错 一查才发现\5.15.2\msvc2019_64\plugins\sqldrivers目录下没有qsqlmysql了,5.5.1是有的,5.15.2是要自己编译的。。。 下载源码 安装qt的时候没…

查看kafka消息消费堆积情况

查看主题命令 展示topic列表 ./kafka-topics.sh --list --zookeeper zookeeper_ip:2181描述topic ./kafka-topics.sh --describe --zookeeper zookeeper_ip:2181 --topic topic_name查看topic某分区偏移量最大(小)值 ./kafka-run-class.sh kafka.too…