基于MATLAB的实现垃圾分类Matlab源码

⼀、垃圾分类

如何通过垃圾分类管理,最⼤限度地实现垃圾资源利⽤,减少垃圾处置量,改善⽣存环境质量,是当前世界各国共同关注的迫切问题之⼀。根据国家制定的统⼀标准,现在⽣活垃圾被⼴泛分为四类,分别是可回收物、餐厨垃圾、有害垃圾和其他垃圾。可回收物表⽰适宜回收和资源利⽤的垃圾,主要包括废纸、塑料、玻璃、⾦属和布料五⼤类,⽤蓝⾊垃圾容器收集,通过综合处理回收利⽤。餐厨垃圾包括剩菜剩饭、⾻头、菜根菜叶、果⽪等⾷品类废物,⽤绿⾊垃圾容器收集等等。但是随着深度学习技术的发展,为了简单⾼效地对⽣活垃圾进⾏识别分类,本篇⽂章将实现⼀种基于卷积神经⽹络的垃圾分类识别⽅法。该⽅法只需要对图像进⾏简单的预处理,CNN模型便能够⾃动提取图像特征且池化过程能够减少参数数量,降低计算的复杂度,实验结果表明卷积神经⽹络,能克服传统图像分类算法的诸多缺点,当然更为复杂的模型等待⼤家去实验研究。但是⽬前认为采⽤VGG或者global 池化⽅式可能效果更好⼀点。

⼆、卷积神经⽹络CNN

卷积神经⽹络(Convolutional Neural Networks / CNNs / ConvNets)与普通神经⽹络⾮常相似,它们都由具有可学习的权重和偏置常量(biases)的神经元组成。每个神经元都接收⼀些输⼊,并做⼀些点积计算,输出是每个分类的分数,普通神经⽹络⾥的⼀些计算技巧到这⾥依旧适⽤。

所以哪⾥不同呢?卷积神经⽹络默认输⼊是图像,可以让我们把特定的性质编码⼊⽹络结构,使是我们的前馈函数更加有效率,并减少了⼤量参数。

具有三维体积的神经元(3D volumes of neurons)

卷积神经⽹络利⽤输⼊是图⽚的特点,把神经元设计成三个维度 : width, height, depth(注意这个depth不是神经⽹络的深度,⽽是⽤来描述神经元的) 。⽐如输⼊的图⽚⼤⼩是 32 × 32 × 3 (rgb),那么输⼊神经元就也具有 32×32×3 的维度。下⾯是图解:

传统神经⽹络

卷积神经⽹络

⼀个卷积神经⽹络由很多层组成,它们的输⼊是三维的,输出也是三维的,有的层有参数,有的层不需要参数。

Layers used to build ConvNets

卷积神经⽹络通常包含以下⼏种层:

卷积层(Convolutional layer),卷积神经⽹路中每层卷积层由若⼲卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的⽬的是提取输⼊的不同特征,第⼀层卷积层可能只能提取⼀些低级的特征如边缘、线条和⾓等层级,更多层的⽹络能从低级特征中迭代提取更复杂的特征。

线性整流层(Rectified Linear Units layer, ReLU layer),这⼀层神经的活性化函数(Activation function)使⽤线性整流(Rectified Linear Units, ReLU)。

池化层(Pooling layer),通常在卷积层之后会得到维度很⼤的特征,将特征切成⼏个区域,取其最⼤值或平均值,得到新的、维度较⼩的特征。

全连接层( Fully-Connected layer), 把所有局部特征结合变成全局特征,⽤来计算最后每⼀类的得分。

⼀个卷积神经⽹络各层应⽤:

相关推荐
4***149014 小时前
高并发时代的“确定性”挑战——为何稳定性正在成为 JVM 的下一场核心竞争?
java·开发语言·jvm
fegggye14 小时前
创建一个rust写的python库[signatures和错误处理]
开发语言·python·rust
hahjee14 小时前
Go编写的ANSI终端颜色和样式控制库在OpenHarmony PC上的完整适配实战
开发语言·后端·鸿蒙
拉姆哥的小屋14 小时前
从400维向量到160000维矩阵:基于深度学习的火焰参数预测系统全解析
开发语言·人工智能·python·深度学习·线性代数·算法·矩阵
雨落在了我的手上14 小时前
C语言入门(二十八):动态内存管理(2)
c语言·开发语言
矢鱼14 小时前
python中对应c++容器的结构
开发语言·c++·python·算法
Doris89314 小时前
【JS】JS进阶--编程思想、面向对象构造函数、原型、深浅拷贝、异常处理、this处理、防抖节流
开发语言·javascript·ecmascript
Clarence Liu14 小时前
golang 剖析 sync包
开发语言·golang
柒儿吖14 小时前
Perl在鸿蒙PC上的使用方法
开发语言·harmonyos·perl
m5655bj14 小时前
使用 C# 设置 Word 段落对齐样式
开发语言·c#·word