深度学习计算机视觉发展简述

  1995年诞生的LeNet5网络是最早的卷积神经网络之一,也是现在很多深度神经网络架构的起点。LeNet5利用卷积、参数共享、池化等操作提取图像特征,再利用全连接神经网络进行分类。受限于当时计算机算力不足的问题,卷积神经网络无法发挥出其强大的威力。
  2012年Alex等人提出AlexNet网络在ImageNet大赛上以15.3%的错误率绝对优势夺得当年的冠军。利用深度卷积神经网络进行图片分类成为了最受欢迎的技术。和LeNet相比,AlexNet使用了更深的网络层次,使用层叠的卷积层来提取特征,使得网络的特征提取能力进一步增强,并使用Dropout和数据增强的方法来抑制过拟合。网络一共包含了8个带权重的层,前5层是卷积层,剩下的三层为全连接层。

  2014年Oxford的Visual Geometry Group提出了VGG网络模型。VGG网络与AlexNet网络相比,其采用了连续的几个3X3卷积核来代替AlexNet网络中的11X11和5X5的卷积层。对于给定的感受野,采用堆积的小卷积核效果要优于较大的卷积核,这是因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且还能一定程度降低训练的代价。VGG网络采用了不同的网络深度来验证通过不断加深网络结构可以提升性能。

  然而无限制地加深网络结构,并不都能提升网络模型的性能,当网络深度达到一定程度的时候,模型的效果反而会下降,这种现象称为退化现象。2015年提出的ResNet模型在一定程度上解决了网络退化问题。ResNet主要设计了一种使用skip connection结构的残差网络,使网络拥有更强的恒等映射能力,从而在不断加深网络结构的同时能够不断提升网络的性能。ResNet也因此夺得了当年ImageNet大赛的冠军。
  受到深度卷积神经网络在图片分类中取得很好效果的启发,研究人员开始尝试将深度卷积神经网络应用到目标检测领域中去。2014年提出的R-CNN方法,是一种利用候选区域结合CNN做目标检测的方法。给定一张图片,使用选择性搜索(selective search)算法从中提取2000个类别独立的候选区域,然后对于每个区域利用CNN抽取一个固定长度的特征向量,再对每个区域使用SVM进行分类,并产生分数。由于候选区域数量高达2000个,所以很多区域有重叠,针对每个类,通过IoU指标,采取非极大性抑制,以最高分的区域作为基础,剔除掉那些重叠的区域。

  R-CNN方法虽然在目标检测任务中表现很好,但是其缺点也很明显。一个缺点是R-CNN对于输入CNN的图片尺寸要求一致,这就需要对原图片进行剪裁和变形,然而剪裁会导致原图信息的丢失,变形会导致位置信息的扭曲,这势必会影响识别的精度。另一个缺点是R-CNN对每一张图中的上千个候选区域都用CNN网络提取特征,而且这些候选区域之间存在大量重叠的部分,这造成特征提取操作浪费了大量的计算资源,并且识别速度很慢。
  针对R-CNN的第一个缺点,何恺明提出的SppNet模型使用了一种名为空间金字塔池化(spatial pyramid pooling)的网络结构来解决这一问题。卷积层可以接受任意尺寸的图片,生成任意尺寸的feature map,然后将任意尺寸的feature map用三个尺寸的金字塔层分别池化,将池化后的结果拼接出固定长度的特征向量,从而解决深度神经网络的输入必须要求固定图像尺寸的问题。
  针对R-CNN的第二个缺点,Ross Girshick提出的Fast R-CNN模型在特征提取上借鉴了SppNet模型的思想。和R-CNN方法一样,首先使用选择性搜索算法得到2000个候选区域的坐标信息,同时将图片送入卷积层中提取feature map,然后RoI池化层结合之前得到的坐标信息通过映射关系找到各个候选区域,再对各个候选框对应的region feature map采用空间金字塔池化,提取出固定长度的特征向量,送入全连接层。另一方面,Fast R-CNN将候选框目标分类与bbox regression并列放入全连接层,构成一个mutil-task模型。

  2016年提出的Faster R-CNN模型将特征提取、候选区域提取、边界框回归、目标区域分类整合到一个网络中去。Faster R-CNN首先使用一组基础的CNN提取图像的feature map用于后续的RPN(Region Proposal Network)层和全连接层。RPN网络是Faster R-CNN的核心模块,该层首先经过3X3卷积,再分别生成前景锚点框(foreground anchors)与边界框回归(bounding box regression)的偏移系数,然后挑选出最可能是目标框的候选框。RoI Pooling层则利用RPN网络生成的proposals从feature map中提取proposal feature送入后续全连接层和softmax层作目标分类和更精细的边界框回归。

  由于Faster R-CNN中,训练时会选取一定比例的正负样本,其中正样本为与gt的IoU值大于阈值的proposals,作为送入到全连接层进行分类和边框回归。然而测试的时候,由于不知道gt,所以只能将所有的proposals都作为正样本。这样就会导致训练阶段输入的proposals质量更高,测试阶段输入的proposals质量相对较差的mismatch问题,造成模型的性能表现不佳。2018年提出的Cascade R-CNN模型设计了一个muti-stage结构,通过逐stage提高proposal的IoU值,使得前一个stage重采样过的proposals能够适应下一个更高阈值的stage。
  由于在提取图像特征的过程中需要不断地进行下采样操作,得到的特征图相比于原图片的尺寸要小很多,例如VGG16网络提取出的特征图尺寸会比原图像尺寸小16倍。这样一来,在卷积的过程中,一些小目标的特征就会被忽略掉,造成网络监测小目标的性能急剧下降。为了解决这一问题,2017年Facebook AI Research提出的FPN网络(Feature Pyramid Networks)设计了一种形状类似金字塔的特征提取结构,主要解决的是目标检测中的多尺度问题,通过简单的改变网络连接,在基本不增加现有模型计算量的情况下,大幅度提升了小物体检测的性能。FPN首先是自底向上通过卷积层提取特征,得到的特征图分辨率会越来越小。然后再自上而下把高语义信息、低分辨率的高层特征和低语义信息、高分辨率的低层特征通过侧边连接,将上采样的结果和自底向上生成的相同大小的特征图进行融合。
  2019年由微软亚洲研究院和中科大提出的HRNet(High-Resolution Net)网络模型通过在高分辨率特征图主干网络上并行加入低分辨率的特征图分支网络,各个并行的网络相互连接,相互交换信息,实现多尺度特征融合与提取。HRNet最大的特点就是在整个过程中都保持了特征图的高分辨率,而在这之前的多尺度特征提取网络都是通过将高分辨率特征图下采样到低分辨率特征图,然后再从低分辨率特征图恢复至高分辨率特征图的。

  上述所讲的AlexNet、 VGGNet、 ResNet以及HRNet等,都是特征提取的主干网络(backbone),Fast R-CNN、Faster R-CNN以及Cascade R-CNN等都是双阶段目标检测算法模型,每一个目标检测算法模型可以根据具体的应用场景选择不同的backbone。除了双阶段算法以外,还有单阶段目标检测算法,单阶段算法在识别速度上有优势。单阶段算法主要有YOLO和SSD。
  YOLO(You Only Look Once)算法与双阶段的目标检测算法不同,它不需要先通过启发式方法(selective search)或者卷积神经网络(RPN)获取候选框,而是通过卷积神经网络直接输出边界框的位置和所属的类别。YOLO首先将输入的图片分成NN个小格子,每一个格子负责检查中心点落在该格子上的物体。对于每一个格子,YOLO会预测出B个边界框,即预测出5个值,分别为边界框的位置以及置信度。综上所述,YOLO图片进过卷积网络之后输出一个NN*(B*5+C)的张量,其中C是类别数目。最后再通过非极大性抑制剔除重叠的预测框,得到最终的预测框。
  SSD(Single Shot MultiBox Detector)算法与YOLO算法一样属于单阶段算法,都是只采用一个卷积神经网络来进行检测。与YOLO不同的是SSD采用了多尺度的特征图,在对输入图片进行卷积提取特征的过程中,经过卷积或者池化后,特征图分辨率会不断地减小,而SSD则在这些不同尺寸的特征图上的每个格子都设置了预选框。这样一来,分辨率较大的、包含高层语义信息的特征图上的预选框可以预测较小的目标。分辨率较小的,包含低层语义信息的特征图上的预选框可以预测较大的目标。因此SSD对于小目标的预测性能要比YOLO好一些。

  与目标检测任务紧密相连的另一项任务是实例分割。Berkeley团队提出的FCN(Fully Convolutional Networks)网络将图像级别的分类扩展到像素级别的分类。FCN将传统卷积网络后面的全连接层换成了卷积层,可以适应任意尺寸的输入,这样网络的输出不再是类别而是heat map。同时为了解决因为卷积和池化对图像尺寸的影响,加入了反卷积层还原尺寸,使之能够输出精细的结果,同时结合不同深度的卷积层输出的跳级结构,保证鲁棒性和精确性。
  目前主流的实例分割算法是Mask R-CNN算法。Mask R-CNN在Faster R-CNN的基础上添加了语义分割分支,对于Faster R-CNN中的每一个Proposal都要使用FCN进行语义分割,实现了mask和class预测的解耦,分割任务与分类、定位任务同时进行。Mask R-CNN引入了RoI Align代替Faster R-CNN中的RoI Pooling,RoI Align不再进行取整操作,而是使用双线性插值法来更精确地找到每个块对应的特征,解决了输入像素和输出像素无法一一对应的问题,使得Mask的精确度从10%提升到了50%。

深度学习计算机视觉发展简述相关推荐

  1. 深入浅出深度学习(一)深度学习的发展

    人工智能.机器学习.深度学习的关系 1. 人工智能--机器推理 利用计算机构建具有人类智力特征的复杂机器,即为通用人工智能或强人工智能,即让机器拥有人类的所有感觉.所有理智.像人类一样思考.要实现真正 ...

  2. 虎牙AI基础技术部招聘深度学习/计算机视觉实习生

    01 公司简介 虎牙公司是一家以游戏直播为核心业务.致力于打造全球领先直播平台的技术驱动型内容公司,旗下产品包括知名游戏直播平台虎牙直播.风靡东南亚和南美的游戏直播平台NimoTV等,产品覆盖PC.W ...

  3. 深度学习的发展与挑战

    本文介绍深度神经网络在不同的分类问题和接近人类水平性能的应用领域上的显著成果.讨论深度学习作为未来科学的各种疑问,揭示深度神经网络在机器执行任务方面的隐藏能力. 简介 智能系统的要求: 1.识别和处理 ...

  4. 深度学习+计算机视觉(CV)_第0章_课程介绍

    深度学习+计算机视觉(CV)_第0章_课程介绍 文章目录 深度学习+计算机视觉(CV)_第0章_课程介绍 深度学习 1.什么是深度学习 2 发展历史(了解) 计算机视觉 1.计算机视觉定义 2.常见任 ...

  5. 深度学习计算机视觉理论基础(PyTorch)

    深度学习计算机视觉理论基础(PyTorch) 1 神经网络与cv 1.1 经典的人工神经元模型:M-P 模型 1.2 感知机(Perceptron)的诞生 1.3 计算机视觉 2 深度神经网络基础 2 ...

  6. 深度学习的发展可能已达极限!

    [编者按]回首 2018 年,身处技术圈的你是否曾反思过些什么--科技与非科技企业界限的日益模糊.技术的发展现状和前景.科技发展的正向助推到负面效应,乃至个人心态上的变化.人文.生态.社会--玩技术的 ...

  7. 深度学习计算机视觉常见的29道面试题及解析

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 作者丨我要鼓励娜扎@知乎 来源丨https://zhuanlan.zhihu.com/p/89 ...

  8. AI:一个20年程序猿的学习资料大全—人工智能之AI/机器学习/深度学习/计算机视觉/Matlab大赛——只有你不想要的,没有你找不到的

    AI:一个20年程序猿的学习资料大全-人工智能之AI/机器学习/深度学习/计算机视觉/Matlab大赛--只有你不想要的,没有你找不到的 目录 (有偿提供,替朋友转载,扫描下方二维码提问,或者向博主扫 ...

  9. 【百家稷学】深度学习计算机视觉生产实习(山西农业大学暑期实训)

    继续咱们百家稷学专题,本次是有三AI在山西农业大学开设的为期10天的正式暑期专业课程.百家稷学专题的目标,是走进100所高校和企业进行学习与分享. 本次主题 本次实训是在山西农业大学进行,主题是< ...

最新文章

  1. JAVA框架之Hibernate【配置文件详解】
  2. Android应用实例收藏管理
  3. 阿里云新一代关系型数据库 PolarDB 剖析
  4. 一句话评论设计模式六大原则--转
  5. chapter 15 运算符详解
  6. CG CTF WEB 层层递进
  7. rmmod无法卸载驱动_笔记:linux驱动开发(1、了解内核模块)
  8. mysql的每隔1分钟定时_mysql定时任务
  9. react新生命周期
  10. vivo NEX 3探索5G手机极致新形态:99.6%瀑布屏让左右无界 未来无限
  11. 【算法】剑指 Offer 03. 数组中重复的数字
  12. 整理 .NET 平台下一些强大的开源控件和类库
  13. 认识以及安装redis
  14. web下拉菜单代码html,简单的单级下拉菜单实现_html/css_WEB-ITnose
  15. php养老院管理系统论文,养老院一卡通管理
  16. 八大数据结构-数组 栈 队列 链表 树 散列表 堆 图
  17. 模拟实现ATM系统——Java
  18. 【眼见为实】数据库并发问题 封锁协议 隔离级别
  19. 拒绝B站邀约,从月薪3k到年薪47W,我的经验值得每一个测试人借鉴
  20. html5 扇形导航效果图,js+css实现扇形导航效果

热门文章

  1. 省市县街道村五级联动
  2. 11月书讯(上)| 拿下这些新书,赢在起跑线
  3. Word通配符选项表大全--Word如何匹配不同字符
  4. nodeJS入门例子一—插件(Addons)
  5. python蟒蛇绘制文字_【Python】蟒蛇绘制
  6. 分享一个毕业实习体会
  7. 基于C语言开发的双人回合制拳皇游戏(Turn-Based KOF)
  8. maven下载依赖失败
  9. 开发-测试-产品直接的恩怨情仇
  10. SEO学习笔记五(SEO实战密码读书笔记)