1.1卷积神经网络的发展历史
     1940年神经网络的概念被提出,1960年感知机的概念被提出,但一直没得到实践应用,直到1989年用于手写字符识别的LeNet模型被LeCun等人提出,该模型在部分领域受到广泛应用,但在此之后神经网络的发展再次陷入瓶颈。直到2006年的深度自动编码网络被Hinton等人提出,随之的一种深度神经网络的训练策略推动了非监督学习的发展。2010年之后由于硬件资源的巨大进步,GPU之类的计算设备大大加快了神经网络的计算速度,训练和推理速度被大大缩短;公开数据集不断扩充,大规模公开数据集的使用使得深度神经网络的训练不易出现过拟合问题,这也推动了网络的研究发展。综上两方面的主要原因,深度神经网络几十年来的寒冬被打破,得到巨大的突破,受到广大科研人员的关注。2011年语音识别领域的突破——基于深度神经网络的语音识别技术被微软提出,2012年第一个在ImageNet竞赛上利用深度学习获得冠军、为后续网络模型研究带来显著影响的卷积神经网络AlexNet被提出,2013年之后VGG、GoogLeNet、ResNet等经典模型不断被提出,网络越来越深越来越宽。

1.2卷积神经网络的核心概念
1.2.1 卷积层
     在卷积神经网络中卷积层被大量使用,卷积层是用来提取图像特征的,其中卷积层的输入数据被称为输入特征图,而卷积层的输出数据被称为输出特征图。卷积层对输入数据进行的处理被叫做卷积运算(实际上是互相关运算,但由于权重都是学出来的,所以无论使用卷积运算还是互相关运算都不影响输出结果),其中实现卷积运算的一个重要工具就是滤波器。以图1为例,图一中的输入数据是一个三维特征图(CxHxW),其中通道数C为2,特征图的高为3,宽为3,无填充,滤波器移动步幅为1。其中填充是指在输入特征图的高和宽周围再增加数据,一般为0,从而使原特征图的高、宽增加以至于滤波器对原特征图的边缘数据的采用增多以免丢掉图像边缘位置的许多信息,同时可以调整输出大小,避免每做一次卷积操作图像高宽大幅度缩小以至于网络无法过深的缺点;步幅是指滤波器在输入特征图上移动的间隔。图一中滤波器大小为2x2x2,2x2窗口大小以间隔1在输入特征图上上下滑动,将各个位置上的滤波器元素和输入的对应元素相乘,然后再求和,最后将结果保存到输出特征图的对应位置,将如此操作在滤波器滑到的输入特征图的各个位置都重复一遍,最终得到一个2x2的输出特征图(这里滤波器只有1个,故输出特征图只有1个通道)。

         图1 含两个通道的三维卷积运算
    具体的计算过程可以表示为:
     (1)
其中K表示N个3维滤波器(dxdxC),dxd表示滤波器窗口大小,C表示输入通道数,N表示滤波器个数,也是输出通道数;I是指输入特征图(HxWxC);O代表输出特征图(H’x W’x N);式子(1)中的卷积运算假定无填充,步幅为1,忽略偏置。
    卷积层的两个主要优势在于参数共享和稀疏连接,滤波器可以共用于图片的各个区域,同时输入特征图与输出特征图之间不是密集连接的而是通过卷积窗口稀疏连接的,卷积神经网络通过这两种机制来减少参数,以便我们用更小的训练集来训练它,同时可以预防过拟合。

1.2.2池化层
    我们可以观察到在卷积层后面常常会跟着一个池化层,它的目的是为了缓解卷积层对位置的敏感性。池化是缩小高、宽方向的运算,它也有一个窗口,一般默认无填充,步幅大小为窗口大小。池化层可以分为最大池化(MaxPooling)、平均池化(AveragePooling)等,其中最常用的就是最大池化。以图2为例,输入是一个二维3x3特征图,池化窗口为2x2,此处在特征图上以步幅1滑动窗口,在特征图的每个窗口位置2x2取该区域的最大值输出到输出特征图的对应位置得到最终的输出特征图(2x2)。而对于平均池化层则是取该区域的平均值作为输出元素。
    池化层有三个特征:第一,池化层无要学习的参数;第二,池化前后输入特征图和输出特征图的通道数始终一致,即通道数不变;第三,对微小的位置变化具有鲁棒性[9],即输入特征图的数据发生微小变化,输出特征图的数据有可能不变。
    
        图2 窗口大小为2x2的最大池化运算

1.2.3全连接层
    全连接层是不同于卷积层,它的输入和输出之间是密集连接的,由此产生巨大数量的权重。我们设某一全连接层的权重为W(hxd,h表示下层神经元数量,d表示上层神经元数量),输入特征矩阵为X(dxb,b表示批量大小),输出矩阵为Z(hxb),则全连接层的核心计算公式(忽略偏置)为:
         (2)
    一般卷积神经网络采用全连接层作为最后的分类器,目前经典的网络全连接层数量较少,一般1~3个,有的网络甚至无全连接层,用了全局平均池化代替了它,一个原因就是全连接层带来的巨大参数负担。

1.2.4激活函数
    我们目前常用的激活函数是ReLu函数(又称线性修正单元),但也有Sigmoid函数、Tanh函数等可选用于适合的模型。激活函数的目的是为了引入非线性变换,增加网络的非线性。

1.3经典模型
    卷积神经网络的经典模型有LeNet、AlexNet、VGG、NiN、GoogLeNet、ResNet、DenseNet等,我们就挑选两个经典模型AlexNet和ResNet来简述一下,其余的在此不再赘述。

1.3.1AlexNet
    我们前面提到AlexNet是第一个在ImageNet竞赛上利用深度学习取得冠军的卷积神经网络。该模型由5个卷积层和2个全连接隐藏层以及1个全连接输出层组成。由于ImageNet数据集的图片普遍比MNist数据集的大,为了捕获到合适的特征,AlexNet的第一层使用了11x11大小的滤波器窗口,之后的第二层卷积层由于图片大小的减小,使用了5x5的滤波器窗口,而之后的第三、四、五层则全用了3x3的窗口大小。还有该模型相比于LeNet使用了ReLU激活函数使模型训练更简单,一定程度避免了梯度消失。另外在第一、二、五卷积层后面使用了步幅为2、窗口大小为3x3的最大池化层来缓解卷积层对位置的敏感性,同时在全连接层使用了丢弃法(Dropout层)来减少过拟合。并且模型训练使用了GPU,由于资源受限而参数过多,将其参数分在多个GPU上并行运算,但现在我们大可不必。还有AlexNet训练使用了图像增广操作进一步增加数据数量,提高准确率,减少过拟合。

1.3.2ResNet
    ResNet模型在ImageNet竞赛中得到的精度首次超过人类的能力。它通过跨层连接操作克服了深度模型训练过程梯度消失的问题,使得网络可以不断地加深,同时精度还不错。ResNet的核心部件也就是创新之处就是残差块,每个残差块引入了跨层连接模块(包括恒等连接等),该模块学习残差映射(即W(x)=H(x)-F(x)),并不是直接学习残差块主模块的函数F(x)。ResNet的残差块如下图3所示:

                图3 ResNet的残差块
    ResNet模型使用大量小滤波器如1x1、3x3等来代替大滤波器从而减少参数数量,还在卷积层大量使用批量归一化层来稳定深度神经网络中间的输出值,从而使深层网络训练更容易,加快训练且取得搞更高的精度。

参考资料:
[1]斋藤康毅.深度学习入门——基于Python的理论与实现
[2]飞桨领航团图像分类零基础训练营:https://aistudio.baidu.com/aistudio/course/introduce/11939?directly=1&shared=1
[3]动手学深度学习(Pytorch版)
[4]纪荣嵘,林绍辉,晁飞,吴永坚,黄飞跃. 深度神经网络压缩与加速综述[J]. 计算机研究与发展, 2018, 55(9): 1871-1888.

图像分类之卷积神经网络的基础知识相关推荐

  1. 卷积神经网络(CNN)基础知识

    文章目录 卷积神经网络基础知识 卷积与互相关 卷积 一维卷积 二维卷积 互相关 填充与步幅 填充 步幅 卷积神经网络结构和原理详解(见下节) 卷积神经网络基础知识 卷积神经网络(Convolution ...

  2. 卷积神经网络入门基础知识

    一.卷积神经网络(CNN)定义 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络.卷积网络是指那些至少在网络的一层 ...

  3. 一维卷积神经网络、卷积神经网络的基础知识

    https://blog.csdn.net/weixin_39526651/article/details/110814023

  4. 目标检测——卷积神经网路基础知识

    目标检测--卷积神经网路基础知识 卷积神经网络 LeCun的LeNet(1998)网络结构 卷积神经网络发展历史 卷积神经网络可以做什么 全连接层 介绍 BP神经网络 通过BP神经网络做车牌数字识别 ...

  5. 卷积神经网络 CNN 基础介绍

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 本文是对卷积神经网 ...

  6. 卷积神经网络(CNN)基础介绍

    本文是对卷积神经网络的基础进行介绍,主要内容包括卷积神经网络概念.卷积神经网络结构.卷积神经网络求解.卷积神经网络LeNet-5结构分析.卷积神经网络注意事项. 一.卷积神经网络概念 上世纪60年代, ...

  7. 神经网络入门基础知识 neural networks basics

    神经网络入门基础知识 neural networks basics 也许现在提到深度学习(deep learning)连非计算机专业的人都听说过,尤其是最近"人机大战"更是掀起了人 ...

  8. 图像分类经典卷积神经网络—ResNet论文翻译(中英文对照版)—Deep Residual Learning for Image Recognition(深度残差学习的图像识别)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[ResNet纯中文版] Deep Residual Learning for Image ...

  9. 图像分类经典卷积神经网络—GoogLeNet论文翻译(中英文对照版)—Going Deeper with Convolutions(走向更深的卷积神经网络)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[GoogLeNet纯中文版] Going Deeper with Convolution ...

最新文章

  1. How to add and configure jetty server in maven pom.xml
  2. 监督学习 | 朴素贝叶斯原理及Python实现
  3. 在 Linux 命令行发送邮件的 5 种方法
  4. 【操作系统/OS笔记01】课程概要、什么是操作系统
  5. Microsoft JDBC Driver 4.0 for SQL Server
  6. Web UI设计师的CSS优化工具 25+
  7. JavaScript 邮件正则练习
  8. Atitit ..Net Framework sdk 3.0 3.5 4.04.5 4.6 4.7  .net core版本新特性 v2 s22 1. 新特性来源于 down ms 官方网站 1
  9. 查看dll库导出库的函数接口
  10. 2021年金属非金属矿山(露天矿山)安全管理人员考试报名及金属非金属矿山(露天矿山)安全管理人员证考试
  11. eplan zw9文件_eplan 中ZW0格式是什么文件啊?
  12. 如何制作小游戏(c++教程)(新手版)(1)
  13. 163邮箱每天可以无限制的发邮件么?
  14. Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
  15. C++学习目标、体系、计划
  16. IP地址后面跟/(斜线)+数字含义
  17. ESP8266/ESP32 基础篇: 时间同步 SNTP 介绍和使用
  18. 用LU分解法来解矩阵方程
  19. Codeforces 844A
  20. 网络测试软件多少算快,手机怎么测网速多少兆 用手机测网速准吗

热门文章

  1. 医疗系统 java_基于Java的医疗管理系统
  2. modbus TCP 连接使用modbus4j 进行连接 示例
  3. oracle 录制响应文件格式_ORACLE 11G 数据文件头格式
  4. SteamVR 2.x 手柄射线与3D物体交互(9)
  5. sips 命令(iMac 下系统自带)
  6. 13台根服务器位置,根服务器13台地址
  7. 华为6面,测试岗报价11k,HR说我不尊重华为,他们没有那么低薪资岗位?
  8. Burpsuite CA证书下载安装输入http://burp打不开
  9. 主板有电无法启动_主板通电但启动不了是什么原因
  10. Python从C盘到D盘