基于机器学习的垃圾分类

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.mfbz.cn/a/435887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3+ts项目创建 使用npm create vue@latest

npm create vuelatest相关创建代码:

[Spring Boot] 集成Nacos

文章目录 Spring Boot 集成nacosSpring Boot版本pom配置引入bootstrap.yml 增加配置启动项目 版本对应关系2022.x 分支2021.x 分支2.2.x 分支 组件版本关系 Spring Boot 集成nacos Spring Boot版本 本文采用 2.6.13 其他版本可见文末版本对应 <parent><groupId>o…

Tomcat介绍在IDEA中创建JavaWeb工程

文章目录 一、WEB服务器服务器概述使用Java代码手写web服务器 二、服务器软件Web服务器服务器软件的使用步骤 三、TomcatTomcat的下载Tomcat的安装与卸载Tomcat的启动与关闭常见问题 四、新建Java Web项目并将项目部署到tomcat中新建Java Web项目将项目部署到Tomcat中出现的问题…

1.3 数据库系统的结构

目录 1.3.1 数据库系统模式的概念 1.3.2 数据库系统的三级模式结构 1. 模式 2. 外模式 3.内模式&#xff08;也称存储模式&#xff09; 1.3.3 数据库的二级映像功能与数据独立性 1.外模式&#xff0f;模式映像 2.模式&#xff0f;内模式映像 1.3.4 总结 模式 内模式…

Linux——线程同步互斥(线程安全)

线程互斥 进程线程间的互斥相关背景概念 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&…

K倍区间 刷题笔记

法一 前缀和暴力搜索 &#xff08;数据大会超时&#xff09; #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; const int N100010; int a[N],s[N]; int n,k; int main(){ cin>>n>>…

第3部分 原理篇3可验证凭证(VC)(1)

3.3. 可验证凭证 3.3.1. 本节内容概述 本聪老师&#xff1a;今天开始去中心化身份中另一个最重要的概念可验证凭证&#xff08;verifiable credential&#xff09;的学习。凭证&#xff0c;也就是证件&#xff0c;在人类生活中不可或缺。可验证凭证实现了凭证的机器可读、加密…

微信小程序(五十一)页面背景(全屏)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.页面背景的基本写法 2.去除默认上标题实习全屏背景 3. 背景适配细节 源码&#xff1a; index.wxss page{/* 背景链接 */background-image: url(https://pic3.zhimg.com/v2-a76bafdecdacebcc89b5d4f351a53e6a_…

嵌入式开发的常用软件、学习资源网站推荐

1、软件推荐 1.1、文本编辑软件 ——Notepad 1、适合编写和查看文本文件&#xff0c;也可以安装插件来查看二进制文件、对比文件 2、参考博客&#xff1a;《Notepad实用小技巧》&#xff1b; 1.2、PDF文件阅读软件——福昕PDF阅读器 福昕PDF阅读器&#xff0c;在官网就可以下载…

部署YOLOv8模型的实用常见场景

可以的话&#xff0c;GitHub上点个小心心&#xff0c;翻不了墙的xdm&#xff0c;csdn也可以点个赞&#xff0c;谢谢啦 车流量检测&#xff08;开源代码github&#xff09;&#xff1a; test3 meiqisheng/YOLOv8-DeepSORT-Object-Tracking (github.com) 车牌检测&#xff0…

Docker前后端项目部署

目录 一、搭建项目部署的局域网 二、redis安装 三、MySQL安装 四、若依后端项目搭建 4.1 使用Dockerfile自定义镜像 五、若依前端项目搭建 一、介绍前后端项目 二、搭建项目部署的局域网 搭建net-ry局域网&#xff0c;用于部署若依项目 docker network create net-ry -…

node模块分类

模块 分类 在node种有很多模块&#xff0c;有我们自己写的javascript文件&#xff0c;也会有javascript自带的&#xff0c;还有我们可以下载别人写好的javascript。主要分为三大类。 1. 内置模块 在安装node的时候就自带的模块&#xff0c;比如说http、fs、path等。内置模块一…

如何远程访问电脑文件?

远程访问电脑文件是当今数字化时代中十分常见且实用的技术。它允许我们从任何地方的计算机或移动设备访问和操作我们的电脑中的文件。无论是远程工作、远程学习、远程协作还是方便地获得自己计算机上的重要文件&#xff0c;远程访问电脑文件都为我们提供了巨大的便利。 在远程访…

Netty架构

Netty逻辑架构 Netty 的逻辑处理架构为典型网络分层架构设计&#xff0c;网络通信层、事件调度层、服务编排层。 一、 网络通信层 网络通信层的职责是执行网络 I/O 的操作。它支持多种网络协议和 I/O 模型的连接操作。当网络数据读取到内核缓冲区后&#xff0c;会触发网络事件…

为什么猫咪主食冻干价格相差那么大?性价比高的主食冻干分享

养猫知识的不断普及&#xff0c;让主食冻干喂养逐渐受到铲屎官的青睐。但价格仍是部分铲屎官的顾虑。像我这样的资深猫友&#xff0c;早已开始尝试主食冻干喂养。虽然价格稍高&#xff0c;但其为猫咪带来的实际好处是远超其价格的。 作为一个多猫家庭的铲屎官&#xff0c;纯主食…

贝叶斯树定义与构建的寻行数墨

Title: 贝叶斯树定义与构建的寻行数墨 —— Notes for “The Bayes Tree: An Algorithmic Foundation for Probabilistic Robot Mapping” 文章目录 I. 前言II. 贝叶斯树的定义1. 贝叶斯树的背景2. 贝叶斯树的特点3. 贝叶斯树的定义 III. 贝叶斯树的构建1. 贝叶斯树的构建算法2…

springboot源码解析之Model和Map参数解析

springboot源码解析之Model和Map参数解析 标签:源码:springboot 测试代码 Controller public class HelloController {RequestMapping("/helloModelAndMap")public String helloModelAndMap(HttpServletRequest request, Model model, Map<String, Object> …

鸿蒙文章专题-2021年鸿蒙相关的文章废弃

#原因 至于为什么说2021年我的鸿蒙专栏的文章废弃了&#xff0c;只是说没有了参考意义&#xff0c;是因为鸿蒙4.0以前的版本语言从以Java为主过渡为以ArkTS为主。以前的Java版本的工程已经无法再使用了&#xff0c;后续的开发都必须以ArkTS开发语言为主。 其中而且整个项目结构…

Vue深度教程

一、Vue简介 1.简介 2.快速上手 二、基础 1.创建一个Vue应用 2.模板语法 3.响应式基础 4.计算属性 5.Class与 Style绑定 6.条件渲染 7.列表渲染 8.事件处理 9.表单输入绑定 10.生命周期钩子 11.侦听器 12.模板引用 13.组件基础 三、深入组件 1.组件注册 2.Props 3.组件事件 …

vue ui Starting GUI 图形化配置web新项目

前言&#xff1a;在vue框架里面&#xff0c; 以往大家都是习惯用命令行 vue create 、vue init webpack创建新前端项目&#xff0c;而vue ui是一个可视化的图形界面&#xff0c;对于新手来说更加友好了&#xff0c;不但可以创建、管理、还可以更新vue项目&#xff0c;也可以下载…