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

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

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38600065/article/details/108611690
今日推荐