基于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), 把所有局部特征结合变成全局特征,⽤来计算最后每⼀类的得分。

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

相关推荐
blammmp16 分钟前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧28 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵34 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong39 分钟前
Java反射
java·开发语言·反射
Troc_wangpeng40 分钟前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的42 分钟前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ1 小时前
C#语言:从入门到精通
开发语言·c#
童先生1 小时前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚2 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea