首页 > 编程知识 正文

简单利用cnn做像分类,CNN 像 视觉

时间:2023-05-06 14:18:27 阅读:249827 作者:187

本文将大致介绍经典的卷积神经网络。包含LeNet5、AlexNet、VGG、GoogLeNet、

卷积神经网络概述:

相比于传统特征提取方法,卷积不需要人工进行特征提取。受启发于生物神经元,激活函数用于仿真,当生物电信号超过了某一阈值,就被传递给下一个神经元;损失函数用于指导网络学习到被期望学习的东西。

CNN的优点:(1)局部连接。每个神经元只和前一层部分神经元连接,这可以加快网络收敛和减少参数。这个优点是和全连接网络比较的,全连接层一般会拥有大量的参数,这会使模型过于庞大、优化速度慢、计算量大、过拟合等。(2)权重共享。一组连接可以共享相同的权重。实际上卷积也存在着权重共享,比如使用一个卷积核对前一层的n个通道进行卷积计算,这相当于是通道共享和图共享了卷积。(3)下采样减少维度。池化层通过提取某个区域内最重要的信息(最大值或平均值)来减少数据量。

CNN的主要结构:

(1)输入层。CNN的输入一般是二维向量,可以有高度,比如,RGB图像。
(2)卷积层。卷积层是CNN的核心,层的参数由一组可学习的滤波器(filter)或内核(kernels)组成,它们具有小的感受野,延伸到输入容积的整个深度。卷积层的作用是对输入层进行卷积,提取更高层次的特征。
(3)池化层。池化层(又称为下采样),它的作用是减小数据处理量同时保留有用信息,池化层的作用可以描述为模糊图像,丢掉了一些不是那么重要的特征。池化层一般包括均值池化、最大池化、高斯池化、可训练池化等。
(4)激活层。激活层主要是把卷积层输出结果做非线性映射,常用的激励函数有ReLU、sigmoid、tanh、LeakyReLU等。CNN采用的激励函数一般为ReLU(The Rectified Linear Unit,修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。(5)(5)连接层。全连接层是一个常规的神经网络,它的作用是对经过多次卷积层和多次池化层所得出来的高级特征进行全连接(全连接就是常规神经网络的性质),算出最后的预测值。
(6)输出层。输出层输出对结果的预测值,一般会加一个softmax层。

经典的CNN模型:

1. LeNet-5:

被用于手写字符识别。共有7层,2个卷积层,2个池化层,3个全连接层。

LeNet5网络虽然很小,但是包含了深度学习的基本模块:卷积层、池化层、全连接层。LeNet5共有七层,不包含输入,每层都包含可训练参数,每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每Feature Map有多个神经元。
输入: 32∗32
32∗32的手写字体图片,这些手写字体包含0-9数字,也就是相当于10个类别的图片。
输出: 分类结果,0-9之间的一个数(softmax)

2. AlexNet

AlexNet获得了2012年ImageNet竞赛的冠军。共有8层,包括5个卷积层和3个全连接层。主要创新:

(1)使用ReLU作为激活函数。ReLU及其常见变体

(2)使用了Dropout。

(3)用最大池化替代了平均池化。

(4)使用LRN做normalization,提高模型泛化性。

(5)使用双GPU训练组卷积。

(6)数据增广。

3. VGG

Vgg包含了一系列的网络。作者证明了增加网络深度可以提高最终性能。主要创新:

(1)移除了LRN层

(2)使用3x3卷积核替代了5x5卷积。因为两个3x3卷积可以达到和一个5x5相等的感知域,然而参数量更少。

4. GoogLeNet

GoogLeNet通过堆叠多个Inception模块实现了参数更少、效果更好的网络(相比于vgg和Alexnet)。

解决的问题:

(1)参数太多,如果训练数据集有限,很容易产生过拟合;

(2)网络越大、参数越多,计算复杂度越大,难以应用;

(3)网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。

解决这些问题的方法当然就是在增加网络深度和宽度的同时减少参数,为了减少参数,自然就想到将全连接变成稀疏连接。但是在实现上,全连接变成稀疏连接后实际计算量并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是计算所消耗的时间却很难减少。

那么,有没有一种方法既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。大量的文献表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,就如人类的大脑是可以看做是神经元的重复堆积,因此,GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,来搭建一个稀疏性、高计算性能的网络结构。

创新:

(1)GoogLeNet采用了模块化的结构(Inception结构),方便增添和修改;
(2)网络最后采用了average pooling(平均池化)来代替全连接层,该想法来自NIN(Network in Network),事实证明这样可以将准确率提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便对输出进行灵活调整;
(3)虽然移除了全连接,但是网络中依然使用了Dropout ; 
(4)为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度(辅助分类器)。辅助分类器是将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中,这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个网络的训练很有裨益。而在实际测试的时候,这两个额外的softmax会被去掉。

5.ResNet

深层的网络一般能比浅层网络性能更好。但是网络太深会带来梯度消失和梯度爆炸的问题。VGG网络达到19层后再增加层数就开始导致分类性能的下降。

ResNets要解决的是深度神经网络的“退化”问题。对浅层网络逐渐叠加layers,模型在训练集和测试集上的性能会变好,因为模型复杂度更高了,表达能力更强了,可以对潜在的映射关系拟合得更好。而“退化”指的是,给网络叠加更多的层后,性能却快速下降的情况。有两种解决思路,一种是调整求解方法,比如更好的初始化、更好的梯度下降算法等;另一种是调整模型结构,让模型更易于优化——改变模型结构实际上是改变了error surface的形态。

ResNet设计网络为H(x) = F(x) + x,即直接把恒等映射作为网络的一部分。就可以把问题转化为学习一个残差函数F(x) = H(x) - x.只要F(x)=0,就构成了一个恒等映射H(x) = x。 而且,拟合残差至少比拟合恒等映射容易得多。

 

未完

 

 

 

 

 

参考:

20200409_A Survey of Convolutional Neural Network.

https://blog.csdn.net/mmm_jsw/article/details/88185491

https://my.oschina.net/u/876354/blog/1637819

https://www.cnblogs.com/shine-lee/p/12363488.html

tiktok0播放怎么办-tiktok播放量低怎么办Javaweb的知识点有哪些Apache Kafka 分区重分配的实现原理解析C语言数据结构链表的实例(十九种操作)tiktok培训中的那些坑!视频短信是什么?外卖语音通知-语音通知价格isRef

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。