文章目录

  • 图像分类
    • AlexNet(2012)
    • VGG (2014)
    • GoogLeNet(2014)
    • ResNet(2015)
  • 目标检测
    • R-CNN(2014)
    • Faster R-CNN(2015)
    • Faster R-CNN(2016)
    • YOLO
      • V1(2016)
      • V2(2016)
      • V3(2017)
    • SSD(2016)

图像分类

AlexNet(2012)

  • 是深度学习在计算机视觉领域的影响力较大的论文,获得了2012年ImageNet冠军。
  • 深度为7层,基本结构如下图。准确率达到57.1%,top 1-5 达到80.2%。
  • 使用ReLU,计算简便,缓解Sigmoid中梯度消失的问题。但当学习率较大时易出现dead神经元(落入负半区则永远无法激活),因此学习率设置不能过大。或者可以使用Leaky ReLU替代。
  • 使用LRN,对输出的参数进行归一化。此方法在后续的网络中被认为效果不明显,因此基本弃用。
  • 使用dropout,在全连接层随机使用一般的神经元,属于正则化方法。在使用BN层后可以去掉。
  • 数据增强(Data Argument),使用随机裁剪(256中取224),水平翻转,颜色增强等方法,增加样本数量,减少过拟合。
  • 训练:batch size=128,SGD+momentum方法,learning rate=0.01,weight_decay=0.0005,momentum=0.9。使用0均值、方差为0.01的高斯分布初始化卷积核权值,偏置项为1保证网络输入为正。
  • 预测:输入大小固定为224224,使用256256的四角加中心与其水平翻转共10张图片求平均结果。

VGG (2014)

  • 16-19层网络。重点阐述了深度对于网络效果的影响,后续常作为特征提取基础网络用于其他网络结构。
  • 使用多个小卷积核代替大卷积核,如两个33卷积核的感受野相当于55卷积核。优势包括a)增加网络深度,引入更多非线性层(ReLU)提高网络判别性;b)减少参数数量,减少过拟合。
  • 基本网络结构如下图
  • 训练:batch size=256,SGD+momentum方法,learning rate=0.01,weight_decay=0.0005,momentum=0.9。前两个FC层使用dropout为0.5。初始化权重取样于高斯分布N(0,0.01),偏置项初始化为0。 裁剪图片时,原始图片的最小边如果过小相当于覆盖了整个图片,失去了裁剪的意义。但也不宜过大,否则得到的图片只含有目标的一小部分,影响判断。
     使用如下方法:
    (1) 固定最小遍的尺寸为256
    (2) 随机从[256,512]的确定范围内进行抽样,这样原始图片尺寸不一,有利于训练,这个方法叫做尺度抖动scale jittering,有利于训练集增强。
    实验证明尺度抖动scale jittering效果较好。
  • 预测:输入大小不固定,且不需要裁剪。将网络最后三层FC层转换为卷积层,第一层转换为
    7x7卷积核大小(当输入为224时最后一层的feature map大小),后两层为1x1卷积核,论文称之为dense evaluation。这让全连接层应用到整个未裁剪的整个原始图像上,得到一个不同位置的得分图,取其中最大者作为最后分类结果。

GoogLeNet(2014)

  • 22层网络。基本结构如下图。
    -
  • 核心思想为Inception,基本结构如下图。主要特点有两个,一是用1x1卷积升降维,二是用不同大小的卷积核提取特征后合并。

    1x1卷积核作用a)增加网络深度和非线性;b)降低特征维度,减少计算复杂性。
    多尺度卷积核融合作用a)不同大小的卷积核可以提取不同大小的特征,使特征更丰富;b)利用稀疏矩阵分解为密集矩阵的特点加快收敛速度。
  • 去掉了FC层,替换为Global Average Pooling(GAP)层。具体方法就是对每一个feature上的所有点做平均,有n个feature就输出n个平均值作为最后的softmax的输入。好处a)对数据在整个feature上作正则化,防止了过拟合;b)不再需要全连接层,减少了整个结构参数的数目(一般全连接层是整个结构中参数最多的层),过拟合的可能性降低;c)不用再关注输入图像的尺寸。相当于将图片的不同部分裁剪结果做平均。
  • 在某些层级上加了分支分类器,输出的loss乘以个系数再加到总的loss上,作者认为可以防止梯度消失问题。但实际作用较小。
  • 注意网络中使用了LRN结构。
  • 训练:
    参考资料:深入理解GoogLeNet结构

ResNet(2015)

  • 当网络层数加深时会发生退化现象。论文提出残差网络克服这个问题。

理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

  • shortcut connection如下图。

    具体又分为两种连接方式

    右侧连接方式被称为bottleneck design,主要用于网络较深时减少参数和运算,出于实用的目的。
    对于经过pooling层后维度和特征图大小不相同的问题,如下图所示(虚线连接处),使用1x1卷积核进行维度变换和特征图大小变换。
  • 典型结构——ResNet-50和ResNet-101
    具体结构如下图
  • 在每个卷积层后激活层前使用了BN层。
  • 训练:数据使用了随机裁剪和颜色增强,MSRA方法初始化权值,batch-size=256,learning rate=0.1,weight_decay=0.0005,momentum=0.9。未使用dropout,使用类似VGG的scale jittering。
  • 预测:使用类似AlexNet的10张图片求平均方法和输入不同尺寸图片平均方法。
    参考资料:残差网络ResNet笔记
    ResNet解析

目标检测

R-CNN(2014)

  • two-stage方法,基本检测流程如下图
  • 先根据图像提出预测框,即Region Proposal。比较常用的Region Proposal方法有:SelectiveSearch(SS,选择性搜索)、Edge Boxes(EB)。R-CNN中使用SS方法提取2000个候选框。
  • 基础CNN网络选用VGG-16,使用预训练好的分类网络权重进行微调。在微调CNN时,正样本定义为IOU>0.5的样本,其余定义为负样本。
  • 为每一类训练一个SVM分类器进行分类,使用Hard negative mining,选取正负样本比例为1:3。。训练SVM时,只取GT为正样本,负样本定义为IOU<0.3的样本。
  • 使用边框回归(Bouding Box Regression)对RegionProposal进行微调,目的是让结果窗口与目标窗口(Ground Truth)更加吻合,提高mAP。预测长宽方向的平移和放缩共四个参数,用于调整预测框。使用λ=1000\lambda =1000λ=1000的岭回归进行训练,只对IOU>0.6的样本进行回归。
  • 训练:训练SVM时学习率0.001,每一个batch包含32个正样本(属于20类)和96个背景共128个样本。

Faster R-CNN(2015)

  • 在R-CNN基础上的改进,在检测效果相近的前提下大幅提升了速度。
  • 主要改进
  1. 将全图送入CNN网络提取特征,在特征层内取Region Proposal的框进行后处理,避免了大量的重复计算,从而降低了时间和空间需求。
  2. 将类别判断和边框回归放入网络中同时训练,达到端到端训练的结构,不需要额外储存。
  • 将RP后的不同预测框对应的特征图部分分为MxN部分,每部分进行max pooling,形成相同大小特征输入下一层。基础网络结构如下图。
  • 将特征图输入multi-task层,基本结构如下图。cls和bbox为两个全连接层。
  • 训练:使用预训练的分类网络权重初始化对应层,其余随机初始化。每个mini-batch由N张完整图片和R个候选框,实际使用N=2,R=128。候选框正负样本比例为1:3,正样本定义为IOU>0.5的候选框,负样本定义为0.1<IOU<0.5的样本。这里同样为Hard negative mining方法。
    参考资料:Fast RCNN算法详解

Faster R-CNN(2016)

  • 使用RPN(Region Proposal Network)代替SS方法,可以理解为RPN+Fast R-CNN的结构。基本结构如下图。
  • 三个重要尺度:在整个Faster R-CNN算法中,有三种尺度:
  1. 原图尺度:原始输入的大小。不受任何限制,不影响性能。
  2. 归一化尺度:输入特征提取网络的大小,在测试时设置,源码中opts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
  3. 网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224。
  • RPN为全卷积网络,具体实现如下图。

    在CNN最后一层特征图中使用3x3卷积核将每个位置的特征转为256-d(ZF-Net)或512-d(VGG-16)向量,送入cls和reg层,分别预测k个锚点对应的预测框是否属于前景(2k个结果)和预测框的微调参数(4k个结果)。锚点包括3个尺寸(128,256,512)和3中长宽比(1:2,1:1,2:1)共9个。
  • 训练RPN
    每一个mini-batch包含从一张图像中随机提取的256个anchor(注意,不是所有的anchor都用来训练),前景样本和背景样本均取128个,达到正负比例为1:1。如果一个图像中的正样本数小于128,则多用一些负样本以满足有256个Proposal可以用于训练。训练时弃用边界超过图像边界的ancher box。一幅6001000的图像经过VGG16后大约为4060,则此时的anchor数为40609,约为20k个anchor boxes,再去除与边界相交的anchor boxes后,剩下约为6k个anchor boxes。使用非极大值抑制法(NMS,non-maximum suppression)将IoU>0.7的区域全部合并,最后就剩下约2k个anchor boxes。NMS不会影响最终的检测准确率,但是大幅地减少了建议框的数量。NMS之后,我们用建议区域中的top-N个来检测(即排过序后取N个)。学习率=0.001
  • 交替训练使RPN与R-CNN共享权值
  1. 训练RPN,预训练的模型初始化,并端到端微调用于区域建议任务。
  2. 利用第一步的RPN生成的建议框,由Fast R-CNN训练一个单独的检测网络,这个检测网络同样是由ImageNet预训练的模型初始化的,这时候两个网络还没有共享卷积层。
  3. 用检测网络初始化RPN训练,但固定共享的卷积层只微调RPN独有的层,使两个网络共享卷积层了。
  4. 保持共享的卷积层固定,微调Fast R-CNN的fc层。这样,两个网络共享相同的卷积层,构成一个统一的网络。
    参考资料:RCNN系列超详细解析
    R-CNN、Fast R-CNN、Faster R-CNN区别
使用方法 缺点 改进
R-CNN 1、SS提取RP;2、CNN提取特征;3、SVM分类;4、BB盒回归。 1、 训练步骤繁琐(微调网络+训练SVM+训练bbox);2、 训练、测试均速度慢 ;3、 训练占空间 1、 从DPM HSC的34.3%直接提升到了66%(mAP);2、 引入RP+CNN
Fast R-CNN 1、SS提取RP;2、CNN提取特征;3、softmax分类;4、多任务损失函数边框回归。 1、 依旧用SS提取RP(耗时2-3s,特征提取耗时0.32s);2、 无法满足实时应用,没有真正实现端到端训练测试;3、 利用了GPU,但是区域建议方法是在CPU上实现的。 1、 由66.9%提升到70%;2、 每张图像耗时约为3s。
Faster R-CNN 1、RPN提取RP;2、CNN提取特征;3、softmax分类;4、多任务损失函数边框回归。 1、 还是无法达到实时检测目标;2、 获取region proposal,再对每个proposal分类计算量还是比较大。 1、提高了检测精度和速度;2、 真正实现端到端的目标检测框架;3、 生成建议框仅需约10ms。

YOLO

V1(2016)

  • 是一种one-stage检测方法,将目标检测速度推进到实时检测(>30FPS)。
  • 核心思想是把目标检测看做回归问题,直接从图像中预测种类和位置。具体操作为将输入图像划分为SxS个网(论文中S=7),在每个网格内预测K个anchers,每个包含4个位置参数(xy方向的位置和大小)和1个置信度参数(表示网格内是否有目标),此外预测C类类别置信度,即每个网格预测5K+C个参数。若S=7,K=2,C=20,则共有7x7x(5x2+20)个预测参数。在每个网格预测出结果后根据阈值过滤较低的网格,将剩下的网格经过NMS得到最终结果。

注:由于输出层为全连接层,因此在检测时,YOLO 训练模型只支持与训练图像相同的输入分辨率,即448x448。
虽然每个格子可以预测 B 个 bounding box,但是最终只选择只选择 IOU 最高的 bounding box 作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。这是 YOLO 方法的一个缺陷。

  • 网络结构如下图,借鉴了GoogLeNet分类网络结构。但未使用inception,而是使用1x1卷积层(此处1x1卷积层的存在是为了跨通道信息整合)+3x3卷积层简单替代。
  • 激活函数使用Leaky ReLU
  • 最终损失函数如下:
  • 主要问题
  1. 每个网格只预测两个同类型框,对于靠的很近的物体,还有很小的群体检测效果不好。
  2. 同一类物体出现的新的不常见的长宽比和其他情况时,泛化能力偏弱。
  3. 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。

V2(2016)

  • V2相较于V1的改进及效果
  • 使用BN层,去掉dropout。
  • 由于使用了较高分辨率的输入图片,先在预训练的分类网络基础上微调10个epoch,然后再用于检测网络。
  • 引入Ancher方法。去掉全连接层和一个pooling层,将输入图片大小从448改为416,这样经过x32的下采样得到13x13的特征图,目的是让特征图有中间网格。因为较大的物体通常位于图像中间,故使用一个单独的cell预测。使用ancher,使预测框数量大大增大,例如v1中共有7x7x2=98个预测框,而v2中有13x13x9=1521个。从而提高了召回率,而准确率下降很小。
  • 维度聚类(Dimension Clusters)
    将之前手动选择的9个ancher(参考Faster R-CNN)使用k-means方法进行聚类,得到更精简的5个ancher,为后续提供了便利。
  • 直接位置预测(Direct location prediction)
    预测偏移值无范围限制,会导致初始训练模型不稳定,因此改为预测相对于网格位置的偏移量。将预测值使用Sigmoid函数限定为0-1区间,保证网格预测结果在网格附近。具体方法如下。
  • 细粒度特征(Fine-Grained Features)
    为提升小物体检测性能,将上一特征层26x26连接到底层特征层(类似ResNet的方法)。26x26x512,特征隔行隔列采样可得到13x13x2048个特征图,然后拼接在原13x13特征图后。
  • 多尺度训练(Multi-Scale Training)
    每训练一定次数(论文为10epoch)后随机在{320,352,…,608}(32的倍数)中选取一个尺寸作为输入尺寸。
  • 在预测时通过调整输入尺寸大小可以在速度和精度之间做平衡。
  • 训练过程:构建了新的网络结构darknet-19,比VGG更轻便,计算量小,精度损失不大。作者使用Darknet-19在标准1000类的ImageNet上训练了160次,用的随机梯度下降法,starting learning rate 为0.1,polynomial rate decay 为4,weight decay为0.0005 ,momentum 为0.9。训练的时候仍然使用了很多常见的数据扩充方法(data augmentation)。初始的224x224训练后,作者把分辨率上调到了448 x 448,然后又训练了10次,学习率调整到了0.001。高分辨率下训练的分类网络在top-1准确率76.5%,top-5准确率93.3%。分类网络训练完后,就该训练检测网络了,作者去掉了原网络最后一个卷积层,转而增加了三个3x3x1024的卷积层(可参考darknet中cfg文件),并且在每一个上述卷积层后面跟一个1x1的卷积层,输出维度是检测所需的数量。对于VOC数据集,预测5种boxes大小,每个box包含5个坐标值和20个类别,所以总共是5x(5+20)= 125个输出维度。同时也添加了转移层(passthrough layer ),从最后那个3x3x512的卷积层连到倒数第二层,使模型有了细粒度特征。作者的检测模型以0.001的初始学习率训练了160次,在60次和90次的时候,学习率减为原来的十分之一。其他的方面,weight decay为0.0005,momentum为0.9,依然使用了类似于Faster-RCNN和SSD的数据扩充(data augmentation)策略。
  • 网络结构改进:v2提出了一种新的分类模型Darknet-19。借鉴了很多其它网络的设计概念.主要使用3x3卷积并在pooling之后channel数加倍(VGG);global average pooling替代全连接做预测分类,并在3x3卷积之间使用1x1卷积压缩特征表示(Network in Network);使用 batch normalization 来提高稳定性,加速收敛,对模型正则化。

参考资料:YOLOv2 论文笔记
从YOLOv1到YOLOv3,目标检测的进化之路

V3(2017)

  • 改进之处:
    多尺度预测 (类FPN)
    更好的基础分类网络(类ResNet)和分类器
  • 分类器-类别预测:
    v3不使用Softmax对每个框进行分类,主要考虑因素有两个:
  1. Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。
  2. Softmax可被独立的多个logistic分类器替代,且准确率不会下降。
    分类损失采用binary cross-entropy loss.
  • 多尺度预测
    每种尺度预测3个box, anchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3个尺度.
    尺度1: 在基础网络之后添加一些卷积层再输出box信息.
    尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍.
    尺度3: 与尺度2类似,使用了32x32大小的特征图.
  • 基础网络 Darknet-53
    仿ResNet, 与ResNet-101或ResNet-152准确率接近,但速度更快.

参考资料:目标检测网络之 YOLOv3

SSD(2016)

  • one-stage方法,结合YOLO和Faster R-CNN优点。在实时检测网络中效果最好(当时)。
  • 基础网络为VGG-16,在其后添加一些卷积层进行下采样缩小特征图大小。网络结构如下图。
  • 在不同大小的特征图上使用default box进行预测,并将结果汇总进行NMS处理,最终得到检测结果。思路类似FPN。每一个新添加的层,可以使用一系列的卷积核进行预测。对于一个大小为mxn、p通道的特征层,使用3x3的卷积核进行预测,在某个位置上预测出一个值,该值可以是某一类别的得分,也可以是相对于default bounding boxes的偏移量,并且在图像的每个位置都将产生一个值。最终产生8732个预测框。
  • 数据增强
    SSD训练过程中使用的数据增强对网络性能影响很大,大约有6.7%的mAP提升。(1) 随机剪裁:采样一个片段,使剪裁部分与目标重叠分别为0.1, 0.3, 0.5, 0.7, 0.9,剪裁完resize到固定尺寸。(2) 以0.5的概率随机水平翻转。

基本图像分类与目标检测网络要点总结相关推荐

  1. 2021-01-24过去十年十大AI研究热点,分别为深度神经网络、特征抽取、图像分类、目标检测、语义分割、表示学习、生成对抗网络、语义网络、协同过滤和机器翻译。

    专利申请量全球第一!清华人工智能发展报告:国内215所高校成立相关本科专业 发布时间:01-2415:20万象大会年度获奖创作者,东方财富网官方帐号 1月20日,清华大学人工智能研究院.清华-中国工程 ...

  2. 沐神点赞!同济子豪兄精读AI经典论文,包括图像分类、目标检测、生成对抗网络、轻量化卷积神经网络等领域...

    读研/读博的你,是不是符合: 毕设/研一/博一科研小白刚进课题组,不知道如何写开题报告和综述? 前沿顶会.期刊论文.综述文献浩如烟海,不知道学习路径,无从下手? 导师放养,既不懂也不管,师兄各忙各的, ...

  3. 一种投影法的点云目标检测网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文来源于早期的一篇基于投影法的三维目标检测文章<An Euler-Region-Pr ...

  4. 丢弃Transformer!旷视和西安交大提出基于FCN的端到端目标检测网络

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:王剑锋  | 编辑:Amusi https://zhuanlan.zhihu.com ...

  5. 计算机视觉算法——目标检测网络总结

    计算机视觉算法--目标检测网络总结 计算机视觉算法--目标检测网络总结 1. RCNN系列 1.1 RCNN 1.1.1 关键知识点--网络结构及特点 1.1.2 关键知识点--RCNN存在的问题 1 ...

  6. retinanet 部署_RetinaNet: Focal loss在目标检测网络中的应用

    介绍 RetinaNet是2018年Facebook AI团队在目标检测领域新的贡献.它的重要作者名单中Ross Girshick与Kaiming He赫然在列.来自Microsoft的Sun Jia ...

  7. 图像分类和目标检测技术有什么区别?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 图像分类和目标检测技术是计算机视觉领域的重要研究方法.这些技术帮助 ...

  8. 计算机视觉、图像分类、目标检测、人脸比对、人脸识别、语义分割、实例分割、图像搜索

    计算机视觉.图像分类.目标检测.人脸比对.人脸识别.语义分割.实例分割.图像搜索 目录

  9. 两阶段3D目标检测网络 SIENet: Spatial Information Enhancement Network for 3D Object Detection from Point Cloud

    本文介绍一篇两阶段的3D目标检测网络:SIENet. 这里重点是理解本文提出的 Hybrid-Paradigm Region Proposal Network 和 Spatial Informatio ...

  10. 详解两阶段3D目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection

    本文介绍一篇两阶段的3D目标检测网络:Voxel R-CNN,论文已收录于AAAI 2021. 这里重点是理解本文提出的 Voxel RoI pooling. 论文链接为:https://arxiv. ...

最新文章

  1. sklearn使用FeatureHasher处理字符串特征: AttributeError: ‘str‘ object has no attribute ‘items‘
  2. 自定义模板类(循环队列)
  3. n^n的末位数字(快速幂)
  4. 腾讯云 wdcp ip:8080打不开,wdcp phpmyadmin打不开
  5. java 图片压缩100k_如何将图片压缩到100K以内,教你几种免费方法
  6. 贪心算法的python实现
  7. TCP三次握手与DDOS***原理
  8. aref无效 lisp_Common Lisp专题4:数组
  9. 在.NET 对XML的一些基本操作
  10. 值得一看的50条从商之道
  11. 7 ida pro 网盘_7月上市新车汇总 日产轩逸领衔 自主高端红旗HS7最具潜力
  12. android TextView属性汇总
  13. %3cul%3e标签 php_php中lt
  14. Json数据的序列化与反序列化的三种常用方法介绍
  15. android手机存储大小设置在哪里看,安卓手机怎么设置增加虚拟内存
  16. 显卡报价,一夜闪崩 35%
  17. 卫生部拟规定就业入学等常规体检不再查乙肝
  18. Rife算法的一种Matlab实现
  19. 提高企业内网安全的十大策略
  20. CurrentHashMap的实现原理

热门文章

  1. IIC详解之AT24C08
  2. android 融云数据库路径,Android开发规范
  3. Euraka的搭建和使用
  4. UI设计师必备|Web设计尺寸规范
  5. 三菱PLC源型漏型输入输出
  6. Excel VBA 设计调查问卷
  7. Nginx设置跨域配置
  8. 南邮通院考研的一些经验
  9. CTF古典密码:移位密码
  10. 基于C语言的移位密码和仿射密码