卷积神经网络(CNN)

一、CNN简介

​ 卷积神经网络(CNN)是一种常见的深度学习架构,受生物自然视觉认知机制启发而来,20世纪 90 年代,LeCun et al. 等人发表论文,确立了CNN的现代结构。

​ 人类识别图像的过程:瞳孔摄入像素;大脑皮层某些细胞初步处理,发现形状边缘、方向;抽象判定形状(如圆形、方形);进一步抽象判定(如判断物体是气球)

CNN模仿人类识别图像的多层过程:

二、CNN网络结构

CNN流程图:

​ 主要是通过卷积、池化进行特征提取

(1)卷积层

​ 卷积是CNN的核心,是用卷积核扫描图像,得到相应的特征。卷积核可以理解成过滤器(或图像扫描器、特征扫描器、局部感受野)。

四个超参数:Stride (S) Filter size(F) Filter number(K) Padding§

计算过程:

Output size的计算:

Input volume size (W) = 6 Stride (S) = 1 Filter(F) = 4 Padding§ = 0 --> output size = 3

Input volume size (W) = 6 Stride (S) = 2 Filter(F) = 4 Padding§ = 2 --> output size = 4

​ 如果模型的参数越多,模型越复杂,容易过拟合。针对这个问题,卷积层可以通过参数共享和稀疏连接进行优化。

卷积层的特点:参数共享,稀疏连接

a. 参数共享:

e.g.

W=227, F=11, S=4, P=0, K=96

输出数据: output size: 555596

参数不共享: 有555596*(11113)=290400*364=105705600个参数。

参数共享后: 共有96x11x11x3=34,848个不同的权重,或34,944个参数(+96个偏差)。

b. 稀疏连接:


​ 关注局部信息,减少模型的存储需求,减少计算量。

​ 例如,当处理一张图像时,输入的图像可能包含成千上万个像素点,但是我们可以通过只占用几十到上百个像素点的核来检测一些小的有意义的特征,例如图像的边缘。这意味着我们需要存储的参数更少,不仅减少了模型的存储需求,而且提高了它的统计效率。这也意味着为了得到输出我们只需要更少的计算量。这些效率上的提高往往是很显著的。

(2)激活函数:

​ 把卷积层输出结果做非线性映射

​ 常用的非线性激活函数有sigmoid、tanh、relu等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。

​ 对于输入的负值,输出全为0,对于正值,原样输出

(3)池化层

​ 对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。

常用的池化方法:最大池化、平均池化


W2=(W1−F)/S+1W2=(W1-F)/S+1 W2=(W1−F)/S+1
注意:在池化层中很少使用零填充。

池化层特点:降采样、平移不变性

a. 降采样

b. 平移的不变性:即当输入做出少量平移时,经过池化函数后的大多数输出并不会发生改变

​ 池化层负责对输入数据的空间维度进行降采,但可能会造成数据丢失。

(4)全连接层

​ 将输出的特征图进行Flatten扁平化,将二维矩阵变为一维,再乘以权重,最后将输出值传给分类器(如softmax分类器)

​ 使用全连接层可能带来的缺点:过拟合、Flatten造成空间结构的缺失、参数巨大、对输入有固定要求

(5)其他:

  • 正则化:DropOut等
  • 优化:初始化权重、随机梯度下降、批量标准化等​
  • 卷积神经网络的优缺点
    • 优点

      • 共享卷积核,对高维数据处理无压力
      • 无需手动选取特征,训练好权重,即得特征
      • 分类效果好
    • 缺点
    • 需要调参,需要大样本量,训练最好要用GPU
    • 黑盒,物理含义不明确,可解释性较差

三、CNN经典架构与常用框架

(1)经典架构

  • LeNet-5:1998年由Yann LeCun等人提出,在手写数字识别上低于1%的错误率
  • AlexNet:2012年,Alex Krizhevsky提出AlexNet网络,一举夺得ImageNet图像分类大赛冠军,CNN的新生
  • ZF Net:2013 ILSVRC比赛冠军
  • GoogLeNet:2014 ILSVRC比赛冠军
  • VGGNet: 2014 ILSVRC比赛中的模型,图像识别略差于GoogLeNet,但是在很多图像转化学习问题(比如object detection)上效果奇好。
  • ResNe:2015年被提出,在ImageNet比赛classification任务上获得第一名

(2)常用框架

  • Caffe:源于Berkeley的主流CV工具包,支持C++、python、matlab,Model Zoo中有大量预训练好的模型供使用
  • TensorFlow:Google的深度学习框架,TensorBoard可视化很方便,数据和模型并行化好,速度快
  • Torch:Facebook用的卷积神经网络工具包,通过时域卷积的本地接口,使用非常直观,定义新网络层简单

四、CNN应用

​ 图像分类、物体检测、物体追踪、姿态预估、文本检测识别、视觉 saliency 检测、行动识别、场景标记

卷积神经网络(CNN)相关推荐

  1. 卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)

    卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习) 分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算. 以AlexNet网络为例,以下是该网络的参数结构图. A ...

  2. 卷积神经网络(CNN,ConvNet)

    卷积神经网络(CNN,ConvNet) 卷积神经网络(CNN,有时被称为 ConvNet)是很吸引人的.在短时间内,变成了一种颠覆性的技术,打破了从文本.视频到语音等多个领域所有最先进的算法,远远超出 ...

  3. 卷积神经网络(CNN)的简单实现(MNIST)

    卷积神经网络(CNN)的基础介绍见http://blog.csdn.net/fengbingchun/article/details/50529500,这里主要以代码实现为主. CNN是一个多层的神经 ...

  4. 卷积神经网络(CNN)实现CIFAR100类别分类

    卷积神经网络(CNN)实现CIFAR100类别分类 1. CIFAR100数据集介绍 这个数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像.,每类各有500个训练图像和100个测 ...

  5. 卷积神经网络(CNN)简介

    卷积神经网络(CNN)简介 多层的线性网络和单层的线性网络没有区别,而且线性模型的能够解决的问题也是有限的 1. 更复杂抽象的数据 一个单隐含层有更多的神经元,就能捕捉更多的特征.而且有更多隐层,意味 ...

  6. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  7. 卷积神经网络(CNN)反向传播算法

    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...

  8. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  9. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  10. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

最新文章

  1. 这可能是今年最硬核的AI交流会,李飞飞、图灵奖得主Pearl等共同探讨AI未来
  2. 周长相等的正方形面积一定相等_习题创编——周长相等的长方形面积(20200108)...
  3. 别再说“我已经努力了”,你的“努力”一文不值!
  4. 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
  5. 使用python完成冒泡排序_python 冒泡排序优化,用递归实现冒泡排序
  6. display:none和visibility:hidden两者的区别
  7. 如图所示是一种轧钢计算机控制系统,高速线材厂轧钢工艺培训(活套)
  8. c#中的socket(tcp)
  9. 支持向量机——深度AI科普团队
  10. mysql 局域网存储_MySQL 存储过程
  11. python 实现对象去重
  12. MySQL卸载与安装
  13. 【阅读分享】红楼梦第一回-甄士隐的故事
  14. LM317的直流可调稳压电源Multisim仿真设计(附仿真+论文+参考资料)
  15. 7.基础查询(select from)
  16. 突然集体涨价的背后 共享充电宝未来会走向何方?
  17. HYSBZ - 2818 Gcd —— 莫比乌斯反演
  18. python动态仪表图_matplotlib仪表动态更新
  19. 怎么调试S12X微控制器的XGATE上的软件
  20. 沪深交易所level2行情

热门文章

  1. linux ls什么意思,linux – 你如何确定bash ls的颜色是什么意思?
  2. Zabbix的客户端安装教程
  3. Java设计模式(二十一):备忘录设计模式
  4. 安装启动gui卡住_为什么Windows 10升级安装卡住了,原因在这
  5. Win2003 安全设置大全
  6. python学习笔记(二)python基础知识(list,tuple,dict,set)
  7. 在java的内存分配中存在下面一些内存划分
  8. Nginx +uwsgi+django配置
  9. 函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事
  10. android edittext 限制文本框输入的长度和提示信息