版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/weixin_44474718/article/details/89414127
仅作为个人笔记:如有不对,欢迎指出…
回过头来,发现写的都是什么东西。决定重新完善,重点在于红色字体-(个人认为比较重要的),其余的是否修改视情况而定——2019.08.30
预热(缺啥补啥…):
mAP指标的通俗解释:
- P(准确率)=TP/(TP+FP),预测为正例的那些数据里预测正确的个数(你给出的结果有多少是正确的)
- R(召回率) =TP/P, 实际为正例的那些数据里预测正确的个数(正确的结果有多少被你给出了)
- AP(平均精确度):不同召回率上的正确率的平均值。
- mAP: 所有类别的平均精度(AP)求和除以所有类别。
- P—R曲线:P-R曲线,顾名思义,就是P-R的关系曲线图,表示了召回率和准确率之间的关系;我们可以在坐标系上做以 precision 作为 纵和 recall 作为 横轴坐标 的二维曲线。
Bounding Box(bbox):
- bbox是包含物体的最小矩形,该物体应在最小矩形内部,物体检测中关于物体位置的信息输出是一组(x,y,w,h)数据,其中x,y代表着bbox的左上角(或者其他固定点,可自定义),对应的w,h表示bbox的宽和高.一组(x,y,w,h)可以唯一的确定一个定位框。
Intersection over Union(IoU):
非极大值抑制(Non-Maximum Suppression又称NMS):
- 用到NMS来选取那些邻域里分数最高(是目标的概率最大),并且抑制那些分数低的窗口。
one stage的解释:
- 位置框和物体的类是在同一个特征提取层来做回归和分类预测
【分割线】 |
????(2013.11-CVPR)R-CNN【论文原文】【参考文章】
????步骤:
- 1.获取输入图像
- 2.提取约2000个候选区域(未进行卷积操作)
- 3.将候选区域分别输入CNN网络(这里需要将候选图片进行缩放统一大小,满足CNN的输入要求)
- 4.将CNN的输出输入SVM中进行类别的判定
● OverFeat(2014)
主要特征:集成的处理识别(Recognition)、定位(Localization)、检测(Detection)三个问题,做到一个网络解决所有问题。并且通过一个卷积网络,实现对输入支持多尺度(multiscale)、滑动窗口的变换。学习FCN、offset pooling,然后把它们结合起来。over feat就是说我们得到了不同尺寸的feature map,并且在feature map上遍历。
OverFeat说的简单一点就是特征提取算子,就相当于SIFT,HOG等这些算子一样。
MultiBox(2014)
主要特征:这是Szegedy等人开发的边界框回归技术的名称。最后,MultiBox只保留最小化定位(LOC)和置信度(CONF)损失的前K个预测。
????(2014.06-IEEE)SPP-Net【论文原文】【参考文章1、参考2】
????contributions:
- 只需要将完整的图片进行一次卷积操作,得到特征图(feature map);
- 提出了Spatial Pyramid Pooling,可以将任意size的feature map池化成固定大小,对输入图像大小无尺寸要求
下图所示:将SPP层加在最后一个卷积层后面,然后再送入FC网络
下图的空间金字塔池化层是SPPNet的核心,其主要目的是对于任意尺寸的输入产生固定大小的输出。思路是对于任意大小的feature map首先分成16、4、1个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。
解释一下为什么经过SPP池化层维度就一致:因为不管输入的特征图多大,经过最大池化之后,得到的结果长度都是1、4、16。即,输出结果与输入无关。
MR-CNN(2015)
主要特征:通过提取多个区域的特征来丰富目标的特征,达到提高目标检测的效果。
DeepBox(2015)
主要特征:论文主要干了一件事:用一个卷积网,对于bottom-up方法(主要是EdgeBox)产生的proposal重新打分(re-rank)。也就是用EdgeBox等方法产生的proposal区域进行重新排序,把准确的区域赋予更高的objectness score。更直白一点:EdgeBox产生的每个propsal都有得分,得分有高有低,但有时候最准的box得分并不高,得分高的box并不准,用一个卷积网将这个score进行纠正。。
????(2015.04-ICCV)Fast R-CNN【论文原文】【参考文章1、参考2(透彻)】
????contributions:
- 基本上算是end-to-end模型(候选区域是使用selective search算法先提取出来的);
- 使用softmax代替SVM分类器(直接显存读取);
- 将SPP换成了ROI Poling(单尺度SPP),将卷积层特征还分为H*W个块,然后在每个块上进行最大池化。
- 将特征向量经由各自的全连接层由SVD分解实现(加速全连接层计算),分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;
- 引入了多任务损失函数,用于同时计算bbox回归和分类的损失。
注:原图中的区域建议框只是用来映射到特征图中用于ROI 池化,并没有进行卷积操作
DeepProposal(2015)
主要特征:构建了一个反向级联,从CNN的最终卷积层到最初的卷积层,选择最有希望的对象位置并以粗到精的方式细化它们的边框。???。
????(2015.06-NIPS)Faster R-CNN【论文原文】【参考文章:优秀!】
????contributions:
- end-to-end模型;
- 提出Region Proposal Network(RPN) 代替了Selective Search(time:2s -> 0.01s)(通过NMS之后每张图给出大概2000个候选框);
- 提出anchor,三种尺寸,小(蓝128)中(红256)大(绿512),三个比例分别是1:1,1:2,2:1;
##### 注:每一个像素点都有一个anchor点,每个anchor点有9个anchor框。一张WxH的原图=(H/16)× (W/16)×9(大概20000个框)
????(2015.06-CVPR)YOLOv1【论文原文】【参考文章】
????contributions:
- one-stage的鼻祖;
- 只做一次边框回归和打分。
- YOLOv1的网络框架:24层卷积层(6组)、两层全连接。
步骤:
- 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。
如下公式所示,confidence代表了所预测的box中含有object的置信度(有object取1,否则取0)和这个box预测的有多准两重信息:
注:S x Sx(B*5+C)解释:
- S x S:图片划为S x S个网格(cell);
- B:每个网格要预测B个bounding box(4个位置信息+1个置信度),B就类似于anchor中的框(右图的黄色框2个);
- C:每个网格要预测C个categories。
缺点:
- 只利用conv5特征图进行回归分类来目标检测。导致小目标丢失,位置信息有丢失
????(2015.06-ICCV)AttentionNet:Aggregating Weak Directions for Accurate Object Detection 【论文原文】
????contributions:
- 引入attention机制…
● G-CNN(2016):
主要特征:G-CNN,一种基于卷积神经网络的,不依赖于候选框生成算法(proposal algorithms-费时)的目标检测算法。G-CNN从一固定的多尺度网格边框开始,此后训练一回归器迭代地移动和缩放对象网格。意即G-CNN将对象检测问题建模为寻找从固定网格到致密对象框的路径。Fast R-CNN由候选框生成算法生成近2K个边框(候选框),G-CNN仅从180个固定网格开始,然性能与之相当。这种策略去掉候选框生成阶段,减少需要处理的候选框,使得对象检测更快。(注:one-step regression不能处理这个非线性的过程,因此采用迭代)
● AZNet( Adjacency and Zoom Prediction,2016):小目标检测
主要特征:通过zoom缩放来确定候选区域,因此,锚点区域集的生成取决于图像内容。对于只有少量小对象的图像,大多数区域在搜索的早期被修剪,在对象附近留下一些小的锚区域。对于只包含大型实例的图像,我们的方法优雅地回到依赖于少量大型锚区域的现有方法。通过这种方式,我们的算法自适应地将其计算资源定向到可能包含对象的区域。==对于一个包含小目标的区域,算法能够持续进行细化分割区域,以便实现最终的检测。==小目标的检测在两步网络的主要问题是第一步的区域建议可能存在问题。
参考:https://blog.csdn.net/fine_0007/article/details/88305658
● Inside-OutsideNet(ION,2016):
主要特征:所谓 Outside 是指 ROI 区域之外,也就是目标周围的 上下文(Contextual)信息,通过添加了两个 RNN 层(修改后的 IRNN)实现上下文特征提取。上下文信息对于目标遮挡有比较好的适应。所谓 Inside 是指在 ROI 区域之内,通过连接不同 Scale 下的 Feature Map,实现多尺度特征融合。这里采用的是 Skip-Pooling,从 conv3-4-5-context 分别提取特征。 多尺度特征能够提升对小目标的检测精度。
● HyperNet(2016):
主要特征:Faster-RCNN的变种。HyperNet主要改进在于集合了多层的特征图,得到多尺度的超特征(Hyper Feature),相比与Faster-RCNN,HyperNet更擅长处理小物体,在高IOU时更有优势,mAP提高3.1%。但多尺度也必然降低速度。其快速模型HyperNet-SP速度与Faster-RCNN相同,VOC上mAP仅提高1.6%。但注意到其应用的跳层特征(skip layer feature)在处理小物体检测中已经在ION等多次被用到,成为了一种常用的有效手段。
CRAFT(2016):
主要特征:用于一般物体检测,遵循“分而治之”的理念。 通过精心设计的卷积神经网络级联,它改善了候选区域的生成和分类任务。 对于候选区域任务,CRAFT输出更紧凑和更好的本地化对象候选区域。R-CNN 系列算法的第一阶段是生成目标 proposals,第二阶段是对目标 proposals 进行分类,2016 年中科院自动化所提出的 CRAFT 算法分别对 Faster R-CNN 中的这两个阶段进行了一定的改进。对于生成目标 proposals 阶段,在 RPN 的后面加了一个二值的 Fast R-CNN 分类器来对 RPN 生成的 proposals 进行进一步的筛选,留下一些高质量的 proposals;对于第二阶段的目标 proposals 分类,在原来的分类器后又级联了 N 个类别(不包含背景类)的二值分类器以进行更精细的目标检测。
● MultiPathNet(MPN,2016):
主要特征:MultiPathNet目的是提高物体检测性能,包括定位的精确度和解决一些尺度、遮挡、集群的问题。网络的起点是Fast R-CNN,基本上,MultiPathNet就是把Fast R-CNN与DeepMask/SharpMask一起使用,但是做了一些特殊的改造,例如:skip connections、foveal regions和integral loss function。这一识别管道中的最后一步,研究院使用了一个特殊的卷积网络,称为MultiPathNet,为图片中检测到的物体添加标签。也就是说Facebook研究院的物体检测系统遵循一个三阶段的过程:(1)DeepMask生成初始物体mask(2)SharpMask优化这些mask(3)MutiPathNet识别每个mask框定的物体。
deep mask:整体来讲,给定一个image patch作为输入,DeepMask会输出一个与类别无关的mask和一个相关的score估计这个patch完全包含一个物体的概率。它最大的特点是不依赖于边缘、超像素或者其他任何形式的low-level分割,是首个直接从原始图像数据学习产生分割候选的工作。还有一个与其他分割工作巨大的不同是,DeepMask输出的是segmentation masks而不是bounding box。【masks其实就是每个像素都要标定这个像素属不属于一个物体,bounding box是比较粗略的】
Sharp mask:从名字就能看出来,主要为了是refine DeepMask的输出。DeepMask的问题在于它用了一个非常简单的前向网络产生粗略的object mask,但不是像素级别准确的分割。显然因为DeepMask采用了双线性上采样以达到和输入图像相同大小这一机制,使得物体边缘是粗略估计出来的,不准确。SharpMask的insight来自,物体精确地边缘信息可以从low-level图像中得到,与网络高层的物体信息结合,应该能够得到比较精确的边缘。因此主要的思路是,首先用DeepMask生成粗略的mask,然后把这个粗略的mask通过贯穿网络的很多refinement模块,生成最终的精细mask。
????(2015.12-ECCV)SSD【论文原文】【参考文章1、参考2】
????contributions:
- 融合多尺度特征图(SSD300的m=6,分别是conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2 共6个)
- 先验框大小数量根据不同特征图的大小选取(8732),高层特征适合分类(大目标),底层特征适合定位(小目标)。
- 再打分过程中会计算每个类别的分数;
- SSD的分类和坐标回归都是全卷积的,不需要roipooling
SSD的先验框(以像素点为单位):
- 正方形:每个cell都有一大一小的两个先验框;
- 长方形:多个,不同层数量不一样,
SSD网络以VGG16的前5层卷积网络作为第1个stage,然后将VGG16中的fc6和fc7两个全连接层转化为两个卷积层Conv6和Conv7作为网络的第2、第3个stage。接着在此基础上,SSD网络继续增加了Conv8、Conv9、Conv10和Conv11四层网络,用来提取更高层次的语义信息。如下图3.1所示就是SSD的网络结构。在每个stage操作中,网络包含了多个卷积层操作,每个卷积层操作基本上都是小卷积。共融合了六个特征层。
????(2016.02-ICLR)SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size【论文原文】【参考文章】
????contributions:
- 开拓模型压缩的先河;
- SqueezeNet的核心模块是Fire模块,其由Squeeze部分和Expand部分组成;
- 将3 x3 卷积替换成 1 x1卷积,减少3x3卷积的通道数;
- 使用same卷积,卷积没有使用降采样,使用池化进行降采样
GBDNet(2016):
主要特征:????,
CPF(2016):
主要特征:???,
● MS-CNN(2016):
主要特征:解决多尺度同时存在时的检索问题,类似于FCNT跟踪方法,该MS-CNN也是根据观察到了卷积网络不同层得到的特征特点的不同,**对不同层的特征采用不同的利用方式。**比如conv-3的低网络层,有更小的感受野,可以进行小目标的检测;而高层如conv-5,对于大目标的检测更加准确。对于不同的输出层设计不同尺度的目标检测器,完成多尺度下的检测问题。
????(2016.04-CVPR)OHEM:Training Region-based Object Detectors with Online Hard Example Mining【论文原文】【参考文章】
????contributions:
- 基于Fast R-CNN改进,认为之前选择roi的方法效率低而且不是最优的(正负样本比:1:3);
- 构建两个ROI模块,一个只读(只做前向计算,为了得到hard example),一个可读可写,权重共享;
- 通过选择hard example的方式来训练,对简单样本和一些小数量样本进行抑制,
????(2016.05-NIPS)R-FCN: Object Detection via Region-based Fully Convolutional Networks【论文原文】【参考文章1、参考2(优秀)】
平移可变性与平移不变性的解释:
- 平移不变性:无论猫怎么扭曲、平移,最终识别出来的都是猫,输入怎么变形输出都不变;
- 平移可变性:一只猫从图片左侧移到了右侧,检测出的猫的坐标会发生变化。
????contributions:
- 提出位置敏感得分图position-sensitive score map;
- 解决了目标检测网络的位置敏感性(平移可变性)与物体分类网络的位置不敏感性(平移不变性)的矛盾;
- 全卷积网络,具有更深的共享卷积网络层,这样可以获得更加抽象的特征;
- 在提升精度的同时利用“位置敏感得分图提升检测速度(比Faster-RCNN快2.5-20倍)。
位置敏感得分图(position-sensitive score map)解释:
- 在共享卷积层的最后再接上一层卷积层,该卷积层就是“位置敏感得分图position-sensitive score map,但是其通道为k x k(C+1),C为类别,也就是每个类别有k x k个score map。
- RoI必须是k x k 个子区域都含有该物体的相应部位,才能判断该RoI属于该物体;
和Faster RCNN中用的ResNet(前91层共享,插入ROI pooling,后10层不共享)策略不同,R-FCN把所有的101层都放在了前面共享的subnetwork,最后用来prediction的卷积只有1层,大大减少了计算量。
● PVANet(2016):
主要特征:改进Faster CNN的特征提取网络,也就是用PVANet来提取特征作为Faster RCNN网络中RPN部分和RoI Pooling部分的输入,改进以后的Faster RCNN可以在基本不影响准确率的前提下减少运行时间。PVANET网络的总体设计原则是:less channels with more layers,深层网络的训练问题可以通过residual(残差网络)结构来解决。(该网络使用了C.ReLU、Inception、HyperNet以及residual模块等技巧)
● DeeplD-Net(2016):
主要特征:人脸识别???,
NoC(2016):
主要特征:???,
● PGAN(2017):小目标检测
主要特征:基于生成对抗网络的目标检测算法,由于卷积神经网络的本质就是对目标特征的提取,因此小目标未能被有效识别的原因就是RPN无法有效识别小目标的特征或者说小目标和大目标之间的特征存在一定的偏差,基于此情况出现了PGAN算法。该算法中采用GAN网络模拟大目标与小目标之间特征的差,训练至一定程度后,将网络训练的结果与直接提取的特征进行求和即可得到新的特征,在保证大目标特征基本不变的前提下提升了小目标的有效被识别。PGAN的效果要优于AZ-NET,,,论文不公布源码,经不起推敲?
????(2016.08-CVPR)DenseNet:Densely Connected Convolutional Networks【论文原文】【参考文章、参考2】
????contributions:
- 改进ResNet(dense net参数和计算成本更少性能更优),引入密连模块代替残差模块。主要特征:密连模块内部允许任意两个非相连层之间进行跨层连接。优点:缓和梯度消失、加强特征传播、促进特征重用和减少参数数量。
- 每一层与前面所有层在channel(resnet 是逐像数)上连接在一起(各层的特征图大小一致),实现特征复用;
TDM(2017):
主要特征:时间差分模型(TDM)强化学习???,
????(2016.12-CVPR)YOLO V2:YOLO9000: Better, Faster, Stronger【论文原文】【参考文章、参考2】
????contributions(在V1上的改进):
- 每个卷积层后面都添加了Batch Normalization层,并且不再使用droput(mAP提升:2.4%);
- 增加了在ImageNet数据集上使用 448 x 448 (高分辨率)的输入来finetune分类网络这一中间过程(10 epochs),(mAP提升:4%);
- 移除了YOLOv1中的全连接层而采用了卷积和anchor boxes来预测边界框;(训练图片大小:448 x 448 ,测试:416 x 416)
- 采用k-means聚类方法对训练集中的边界框尺度做了聚类分析(5个聚类中心);
- 采用了一个新的基础模型(特征提取器),称为Darknet-19,计算量减少约33%
- 利用sigmoid函数约束预测边框的位置,使得模型更容易学习,且预测更为稳定
- 提出了一种passthrough层来利用更精细的特征图
- Multi-Scale Training:在训练过程中每间隔一定的iterations之后改变模型的输入图片大小
- 提出了一种目标分类与检测的联合训练方法,同时在COCO和ImageNet数据集中进行训练得到YOLO9000,实现9000多种物体的实时检测。(这才是YOLO V2最大的贡献吧)
下图为passthrough原理示例(1个4x4拆成4个2x2):
????(2016.12-CVPR)FPN:Feature Pyramid Networks for Object Detection【论文原文】【参考文章】
????contributions:
- 特征feature金字塔;
- 融合低层特征高分辨率和高层特征的高语义信息,预测是在每个融合后的特征层上单独进行
- a):图像image金字塔,最不科学;
- b):使用Single feature map的包括R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、YOLOv1以及R-FCN系列;
- c):SSD,作者认为SSD没有用到足够底层的特征,而越底层的特征对检测小物体越有利。SSD用的最底层的特征是
conv4_3
。 - d):FPN:predict=左的1x1 conv + 上 的2x up(下图所示)。
● RON(Reverse Connection with Objectness Prior Networks,2017):
主要特征:将基于区域和不基于区域的方法的优点联系起来。给定一张输入图像,网络首先计算骨干网络的特征。然后,(a)添加反向连接;(b)生成 objectness prior;(c)在相应的 CNN 尺度和位置上检测物体。(一般般感觉)
????(2017.01-arXiv)DSSD : Deconvolutional Single Shot Detector【论文原文】【参考文章】
????contributions:
- 基于SSD的改进;
- 提出基于top down的网络结构,用反卷积(低层特征和高层特征的融合)代替传统的双线性插值上采样;
- 在预测阶段引入残差单元;
- 采用两阶段训练方法;
- 特征融合采用product代替sum(精度提高,但是速度变慢);
- BN操作放在卷积层和**层之间;
- 高层特征图的通道数将会被舍弃,在反卷积模型中,所有卷积和反卷积操作,卷积个数都依赖于输入的低层特征图的通道数
- 使用K-means 方法 setting prior box aspect ratio
????(2017.03-ICCV)Mask R-CNN【论文原文】【参考文章–优秀】
????contributions:
- 特征提取采用ResNet-FPN的架构;
- 提出了RoIAlign(双线性插值+池化)的方法来取代ROI pooling;
- 加了一个Mask预测分支(在ROIAlign后面加卷积层)
● DCN(deformable convolution,2017):
主要特征:1) 引入了可以自调节感受野大小的deformable convolution和deformable RoI 模块。该模块通过额外学习一组采样偏移量来决定卷积操作和RoI pooling操作的采样位置, 通过这种方式, 网络模型可以根据输入的图谱自动调节感受野的大小的分布。2) 上面的两种deformable模块均可以无痛的添加到现有模型中。由于deformable convolution和deformable RoI 模块并不会改变原始的输入输出大小, 因此可以很轻易的替换到现有网络中, 并且可以有其他多种提升精度的trick想叠加, 在多个视觉任务上(检测, 分割)都表现出色。
● DeNet(2017):
主要特征:针对候选区域提取这个步骤进行加速: 使用角点提取来初步过滤大部分候选区域,
● CoupleNet(2017):
主要特征:针对 R-FCN 算法没有考虑到 region proposal 的全局信息和语义信息的问题,2017 年中科院自动化所提出 CoupleNet 算法,其在原来 R-FCN 的基础上引入了 proposal 的全局和语义信息,通过结合局部、全局以及语义的信息,提高了检测的精度。
????(2017.08-CVPR)RetinaNet:Focal Loss for Dense Object Detection【论文原文】【参考文章】
????contributions:
- Resnet + FPN + FCN 的组合应用;
- 改进交叉熵(cross-entropy, CE) loss,提出Focal loss,解决了正负样本区域极不平衡而目标检测loss易被大批量负样本所左右的问题。
● DSOD(Deeply Supervised Object Detectors,2017):一阶
主要特征:基于单次检测(SSD)框架开发DSOD。由于深度学习需要大量的训练数据,而针对特定任务需求的训练样本往往是有限的,通常情况下,目标检测算法会先使用在海量数据(如ImageNet数据集)上训练好的分类模型对需要训练的网络参数进行初始化(pre-train,预训练),然后使用训练样本对网络参数进行微调(fine-tune)。
但这种预训练结合微调的方法存在以下几点问题:(1)对于目标检测任务而言,由于其损失函数和目标类别分布与分类模型存在差异,其搜索/优化空间是不同的,所以使用预训练模型容易求得局部而非全局最优解。虽然利用训练数据对网络进行微调可以在一定程度上缓解这种现象,但仍然不能从本质上解决问题。(2)预训练模型一般是基于RGB图像训练得到的,对于差异较大的问题域,如针对深度图像、多光谱图像和医学影像的目标检测,要从预训练的分类模型迁移学习为目标检测模型难度非常大。(3)预训练的分类模型通常具有**较为复杂的网络结构,不仅参数规模大,其特定的网络结构也限制了目标检测模型的设计空间,难以对模型的结构进行灵活地调整。
因此,DSOD提出了一种无需预训练,直接基于训练样本来训练目标检测模型**的方法。
只有不基于region proposal的方法,才可以不使用预训练模型直接训练网络。
SMN(Spatial Memory Network,2017):
主要特征:Memory Network是深度学习的一个小分支–记忆网络(如(RNN、LSTM、GRU等)),
????(2017.11-CVPR)SNIP:An Analysis of Scale Invariance in Object Detection -SNIP 【论文原文】【参考文章】
????contributions:
- 引入MST(Multi-Scale Training)思想的同时,在梯度回传时只将和预训练模型所基于的训练数据尺寸相对应的ROI的梯度进行回传(为了减少domain-shift);
- 引入图像金字塔来处理数据集中不同尺寸的数据(在测试中,建立大小不同的Image Pyramid,在每张图上都运行这样一个detector,同样只保留那些大小在指定范围之内的输出结果,最终在一起NMS)。
- 缺点:三个RPN(太慢)
invalid anchor的定义是:和invalid ground truth的IOU大于0.3的anchor就是invalid anchor,如上图中左边的黑色框所示。
????(2017.11-ECCV)RFBNet:Receptive Field Block Net for Accurate and Fast Object Detection【论文原文】【参考文章】【代码】
????contributions:
- 提出RFB模块;
- 基于SSD300的改进,
- 改进的inception模块(加入空洞卷积);
????(2017.12-CVPR)Cascade R-CNN: Delving into High Quality Object Detection【论文原文】【参考文章】
动机:
- R-CNN系列中存在mismatch问题:在inference阶段的输入proposals质量相对较差(没有被采样过,可能包括很多IoU<threshold的)
- IoU指训练过程中positive和negative的判定处。
????contributions:
- 出了muti-stage的结构,每个stage都有一个不同的IoU阈值;
- 用一个R-CNN stage的输出去训练下一个R-CNN stage,共是4个stages:1个RPN+3个detector(IoU阈值设定分别为0.5,0.6,0.7)
- 解决了提高IoU时候带来的过拟合问题(IoU高>正样本少>过拟合);
- 解决了不同IoU阈值导致的不匹配问题;
????(2018.01-CVPR)RefineDet:Single-Shot Refinement Neural Network for Object Detection【论文原文】【参考文章】
????contributions:
- 基于ssd的改进算法:ARM(anchor refinement module),即bottom up(上部分)为常规ssd多尺度预测阶段(bottom up用来解决正负样本框数目不平衡问题);
- 将ARM预测的结果通过TCB(transfer connection block)传递给OBM,TCB单元实质上就是top down结构;作用就是使得多尺度特征图的信道融合以此来丰富特征。
- 通过加入ODM(object detection module),即top down(下部分) 的方法变成two stage模型(解决正负样本框数目不平衡问题);
- 在bottom up回归粗略位置与分类,在top down回归精细位置与分类,
RefineDet与RetinaNet的区别:
- 都解决了train过程中正负anchor不平衡的问题;
- RefineDet采用negative anchor过滤的方法,RetinaNet通过Focal Loss解决。
ARM和RPN的区别:
- ARM由多层不同尺度的特征输出,而RPN只有一个;
????(2018.04-Arxiv)YOLO v3: An Incremental Improvement【论文原文】【源码】【参考文章】
????contributions:
- 引入残差结构=,网络由Darknet-19变为Darknet-53;
- 多尺度预测:输出3层,每层 S × S个网格,分别为 13×13 ,26 ×26 ,52×52(类似于FPN的相邻层的特征融合);
- anchor box一共有9个,由k-means聚类得到。特征图越大上面的anchor box框越小(尺度越大,感受野越小,对小物体越敏感,所以选择小的anchor box);
- 用sigmoid取代之前版本的softmax(V 2不也是sigmoid?)预测边框,
- 损失函数将V2中的Softmax loss变成Logistic loss。
????(2018.04-ECCV)DetNet: A Backbone network for Object Detection【论文原文】【参考文章】
????contributions:
- A子图在原始ResNet-50的bottleneck(c图)结构上,把中间3x3卷积换成了带洞3x3卷积;
- B子图是在A的基础上把identity通路替换成1x1的卷积;
- stage5,6分辨率保持在16x(跟stage4一致,14x14大小)(可以保持大物体位置信息的完整,小物体信息在深层网络完全不可见的可能性减少)
????(2018.05-arXiv)SNIPER: Efficient Multi-Scale Training【论文原文】【参考文章】【代码】
????contributions:
- 引入chips:chips是某个图片的某个scale上的一系列固定大小的(比如KxK个像素)的以恒定间隔(比如d个像素)排布的小窗(window) ,每个window都可能包含一个或几个objects;
- 每个scale都会生成这些chips,而且chip的大小是固定的,变化的是图片的尺寸(与anchor相反);
- 用于训练的是这些chip(包含若干个目标)。
SIN(Structure Inference Net,2018):
主要特征:SIN提出了结合场景信息和物体之间联系的检测方法。为了更加有效地利用这些信息,提出了结构推理网络。实验表明,在与场景高度相关的类别上检测效果很好。针对物体之间关系的实例级对物体的定位检测发挥了很重要的作用。
● STDN(Scale-Transferrable Object Detection,2018):
主要特征:通过尺度变换模块(scale-transfer module )去解决物体检测中不同目标检测时的尺度问题,基础网络采用的是DenseNet-169,DenseNet通过多层连接的方式整合低层和高层信息,其特征提取能力较强。
● MLKP(Multi-scale Location-aware Kernel,2018):
主要特征:尝试利用对象检测中的高阶统计量,最近对具有挑战性的细粒度视觉分类的研究表明,与一阶分类相比,高阶统计表示可以捕获更多的判别信息同时获得更好的提升。尝试在目标检测中利用高阶统计信息,为生成更多的能判别表示的候选框从而提高目标检测器性能。。
● Relation-Net(2018):
主要特征:基于Faster RCNN系列算法,希望在检测过程中可以通过利用图像中object之间的相互关系或者叫图像内容(context)来优化检测效果,这种关系既包括相对位置关系也包括图像特征关系。
????(2018.08-ECCV)CornerNet: Detecting Objects as Paired Keypoints【论文原文】【参考文章】
????contributions:
- 将目标边界框检测为一对关键点(即边界框的左上角和右下角)(左图);
- 引入了corner pooling(右图,对每个channel,分别提取特征图的水平和垂直方向的最大值,然后求和),这是一种新型的池化层,可以帮助网络更好地定位边界框的角点;
- 堆叠两个hourglass架构(训练慢,检测也慢),使用focal loss的变体训练神经网络;
● PFPNet(Parallel Feature Pyramid Network,2018):可以试试
主要特征:借鉴了SPP的思想并通过MSCA(multi-scale context aggregation)模块进行特征融合,
。PFPNet整体上还是one stage类型的目标检测算法,思想借鉴了SSD,速度上有保证,效果上因为引入SPP思想构造特征金字塔,相当于加宽了网络,同时MSCA模块做类似FPN的特征融合操作,最后基于多层融合特征进行预测,因此效果也是很不错的。
● Pelee(2018):
主要特征:基于DesNet的变种版本,适用于移动端的轻量级网络。
● HKRM(Hybrid Knowledge Routed Modules ,2018):
主要特征:用于大规模目标检测的混合知识路由模块???,
● R-DAD(Region Decomposition and Assembly,2019):
主要特征:解决检测错误经常由于目标遮挡造成的问题,
● M2Det(Multi-Level Feature Pyramid,2019):可以试试
主要特征:提出多级特征金字塔网络MLFPN。基于提出的MLFPN,结合SSD,提出一种新的Single-shot目标检测模型M2Det。
参考:https://blog.csdn.net/sinat_37532065/article/details/87385302
????(2019.01-ICCV)TridentNet:Scale-Aware Trident Networks for Object Detection【论文原文】【代码】【参考文章、参考2】
????contributions:
- 解决scale variation的问题;
- 构造了不同receptive field的parallel multi-branch;
- 对于trident block中每一个branch的weight是share的;
- 对于每个branch,训练和测试都只负责一定尺度范围内的样本,也就是所谓的scale-aware。
- 训练时3个branch,测试时只用一个branch。
????(2019.03-CVPR)FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection【论文原文】【参考文章】
动机:
- anchor在分配到的特征图不是最优的,并不知道一个确切的 ground-truth 分配到哪一层上去学习是最合适的。:
????contributions:
- 提出FSAF,为了使得每一个ground truth box匹配到最佳的特征层(采用focal loss 和IoUloss来确定);
- 在RetinaNet上加上anchor-free分支,使用anchor-based和anchor-free进行联合训练得到最终的FSAF模型;
????(2019.04-arXiv)Objects as Points【论文原文】【代码】【参考文章】
????contributions:
- 通过目标中心点来找到目标(下图左),然后在中心点位置回归出目标的一些属性,例如:size, dimension, 3D extent, orientation, pose。
- 采用的是热力图。
????(2019.04-arXiv)CenterNet: Keypoint Triplets for Object Detection【论文原文】【源码】【参考文章】
动机:
- 如果目标框是准确的,那么在其中心区域能够检测到目标中心点的概率就会很高,反之亦然。
????contributions:
- 利用关键点三元组即中心点、左上角点和右下角点三个关键点来确定一个目标;
- 提出 center pooling 来提取中心点的特征;
- 提出 cascade corner pooling 来提取角点的特征;
- 提出了一种新的衡量指标:FD (false discovery) rate=1-AP
左图控制中心点区域的大小,右图(a):center pooling 来丰富中心点特征;右图(b):corner pooling 来丰富角点特征
????(2019.04-CVPR)NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection【论文原文】【代码】【参考文章】
????contributions:
- 通过网络搜素得到新的特征金字塔NAS-FPN(图f:包含自上而下和自下而上的连接),
- NAS-FPN对构建目标架构有很大的灵活性(性能更好);
- 基于RetinaNet框架(与之结合达到目前最优模型),
- NAS 利用强化学习训练控制器在给定的搜索空间中选择最优的模型架构
????(2019.04-arXiv)CornerNet-Lite: Efficient Keypoint Based Object Detection【论文原文】【源码】【参考文章】
????contributions:
- 使用注意机制消除了对图像的所有像素进行彻底处理的需要;
- 引入新的紧凑骨干架构的 CornerNet-Squeeze:Hourglass-54(含3个hourglass模块,深度为54),原CornerNet中使用的是 Hourglass-104(含2个hourglass模块,深度为54)
- 使用fire module代替residual block;
- 使用3x3深度分离卷积代替3x3标准卷积
CornerNet-Saccade 和CornerNet-Squeeze 的区别:
- CornerNet-Saccade:
是追求高准确率(mAP)的同时,尽可能提高速度(FPS),即准确率优先,其对标于CornerNet等算法。创新点:引入Saccade思想。(类似于加了注意力机制?) - CornerNet-Squeeze:
是追求高实时性(FPS)的同时,尽可能提高准确率(mAP),即速度优先,其对标于YOLOv3等算法。创新点:引入SqueezeNet优化思想。
????(2019.04-ICCV)FCOS: Fully Convolutional One-Stage Object Detection【论文原文】【代码】【参考文章】
????contributions:
- 全卷积的one-stage目标检测算法(FCOS),采用语义分割的思想进行目标检测(逐像素预测,但是速度变慢);
- 不需要anchor等操作,最终通过NMS后处理实现检测;
- 网络结构:【Backbone】 + 【特征金字塔(Feature Pyramid)】+ 【Classification + Center-ness + Regression】
- Center-ness用来抑制检测到的低质量边界框(保证预测的边界框尽可能的靠近中心);
- 如果大尺度和小尺度的重叠,直接简单的使用最小区域作为回归目标。
????(2019.04-ICCV)RepPoints: Point Set Representation for Object Detection【论文原文】【代码】【参考文章】
动机:
- 从边界框的规则单元格中提取的特征可能会受到背景内容或前景区域的无效信息的严重影响。这可能导致特征质量降低,从而降低了目标检测的分类性能。
????contributions:
- deformable convolution的使用;
- 采用n个点来代替规则的目标框,表示物体的几何形态,并且将这些点作为deformable卷积的offset(其实也可以看作是物体的语义特征),
- 通过定位和分类的直接监督来学习可形变卷积的偏移量,使得偏移量具有可解释性;
- 可以通过采样点来直接生成伪框 (pseudo box),不需要另外学习边界框,并且分类和定位有联系。
????(2019.06-arXiv)Cascade R-CNN: High Quality Object Detection and Instance Segmentation【论文原文】【代码】
????contributions:
- 将其应用与实例分割;
- 提出了muti-stage的结构,每个stage都有一个不同的IoU阈值;
- 用一个R-CNN stage的输出去训练下一个R-CNN stage,共是4个stages:1个RPN+3个detector(IoU阈值设定分别为0.5,0.6,0.7)
- 解决了提高IoU时候带来的过拟合问题(IoU高>正样本少>过拟合);
- 解决了不同IoU阈值导致的不匹配问题;
● (2019.06-arXiv)Learning Data Augmentation Strategies for Object Detection【论文原文】【代码】【参考文章】
????contributions:
- 共计从色彩变换、图像几何变换、bbox内变换三个角度设计了22种不同的变换方式。每种变换方式定义三个参数:(变换标识符,概率,强度)
- 用到了NAS。
● Res2Net(2019):论文原文
通过在一个单个残差块内构造分层的残差类连接,为CNN提出了一种新的构建模块,即Res2Net。Res2Net 以更细粒度(granular level)表示多尺度特征,并增加每个网络层的感受野(receptive fields)范围。
相对于ResNet来说:在残差单元(residual block)中插入更多带层级的残差连接结构(hierarchical residual-like connections)。
● RandWire-WS(2019):论文原文
NAS 的改进:通过随机神经网络连接的方式探索了比此前神经架构搜索更为广泛的连接形式,并实现了很好的效果。
● FoveaBox(2019):论文原文
FoveaBox是在RetinaNet目标检测网络基础上做的改进。
FoveaBox的动机来自人眼的中央凹:视野中心(物体)具有最高的视力。对于可能存在目标的每个输出空间位置,FoveaBox直接预测所有目标类别存在的置信度和边界框。
????(2019.08-arXiv)AlignDet:Revisiting Feature Alignment for One-stage Object Detection【论文原文】【参考文章】
动机:
- 对齐特征与ROI
????contributions:
- 基于RefineDet改进,解决feature和与RoI不对齐的问题;
- 用了cascade-rcnn变iou判据的思路;
- 7x7 RoIConv (AlignDet) vs. 3x3 “RoIConv” (RepPoints table1 baseline);
- 用了multi-scale training;
可以看到上图主要分为两个步骤,首先DPM会回归一次anchor,并且对应anchor,每个anchor有四个坐标,所以输出大小为H x W x 4,然后根据stride可以计算对应的偏移,在特征上做一个RoIConv,得到对齐的特征后,再做一次回归。
注意此处,借鉴了cascade RCNN的思路,两次回归中,正样本的IoU阈值并不相同。
????(2019.08-arXiv)Matrix Nets: A New Deep Architecture for Object Detection【论文原文】
????contributions:
- 提出 xNet 加强基于关键点的目标检测;
- 能够同时解决目标尺度和宽高比不同的问题;
- 将右上角和左下角的进行剪枝操作(目标出现概率低);
- 相对于CornerNet来说,不需要corner pooling操作。
步骤:
- (a-b) 步骤使用了 xNet 主干(左图);
- ( c ) 步骤使用了共享输出子网络,而针对每个矩阵层,他们预测了左上角和右下角的热图和偏移量,并在目标层内对它们进行中心点预测;
- ( d )步骤利用中心点预测匹配同一层中的角,然后将所有层的输出与 soft 非极大值抑制结合,从而得到最终输出。
二、Anchor-Free时代:
早期探索:
● DenseBox:
主要特征:1.证明单个FCN可以检测出遮挡严重、不同尺度的目标。2.通过多任务引入landmark localization,能进一步提升性能。
● YOLO:
主要特征:1.速度快,2.通过整幅图进行推理得到预测结果,3.能学到目标的一般特征。
DenseBox和YOLO的区别:
1.DenseBox应用于人脸检测,相当于只有两类,而YOLO是通用检测,通常大于两类。
2.DenseBox是密集预测,对每个pixel进行预测,而YOLO先将图片进行网格化,对每个grid cell进行预测。
3.DenseBox的gt通过bbox中心圆形区域确定的,而YOLO的gt由bbox中心点落入的grid cell确定的。
基于关键点:
● CornerNet:
主要特征:1.通过检测bbox的一对角点来检测出目标。2.提出corner pooling,来更好的定位bbox的角点。
● ExtremeNet:
主要特征:1.将关键点定义为极值点。2.根据几何结构对关键点进行分组。
CornerNet和ExtremeNet的区别:
1.CornerNet通过预测角点来检测目标的,而ExtremeNet通过预测极值点和中心点来检测目标的。
2.CornerNet通过角点embedding之间的距离来判断是否为同一组关键点,而ExtremeNet通过暴力枚举极值点、经过中心点判断4个极值点是否为一组。
密集预测:
● FSAF(Feature Selective Anchor-Free,2019):原文
以RetinaNet为主要结构,添加一个FSAF分支和原来的classification subnet、regression subnet并行。
主要特征:让每个实例选择最好的特征层来优化网络,因此不需要anchor来限制特征的选择。
● FCOS(Fully Convolutional One-Stage,2019 ):原文
主要特征:1.将检测和其他使用FCN的任务统一起来,容易重用这些任务的思想。2.proposal free和anchor free,减少了超参的设计。3.不使用trick,达到了单阶段检测的最佳性能。4.经过小的修改,可以立即拓展到其他视觉任务上。
● FoveaBox
主要特征:人类眼睛的中央凹:视野(物体)的中心具有最高的视觉敏锐度。FoveaBox联合预测对象中心区域可能存在的位置以及每个有效位置的边界框。由于特征金字塔的特征表示,不同尺度的目标可以从多个特征层中检测到。
FSAF、FCOS、FoveaBox的异同点:
1.都利用FPN来进行多尺度目标检测。
2.都将分类和回归解耦成2个子网络来处理。
3.都是通过密集预测进行分类和回归的。
4.FSAF和FCOS的回归预测的是到4个边界的距离,而FoveaBox的回归预测的是一个坐标转换。
5.FSAF通过在线特征选择的方式,选择更加合适的特征来提升性能,FCOS通过center-ness分支剔除掉低质量bbox来提升性能,FoveaBox通过只预测目标中心区域来提升性能。
(DenseBox、YOLO)和(FSAF、FCOS、FoveaBox)的异同点:
1.都是通过密集预测进行分类和回归的。
2.(FSAF、FCOS、FoveaBox)利用FPN进行多尺度目标检测,而(DenseBox、YOLO)只有单尺度目标检测。
3.(FSAF、FCOS、FoveaBox)将分类和回归解耦成2个子网络来得到,而(DenseBox、YOLO)分类和定位统一得到。
总结:
1.各种方法的关键在于gt如何定义
2.主要是基于关键点检测的方法和密集预测的方法来做Anchor-Free
3.本质上是将基于anchor转换成了基于point/region
anchor-free 的方法能够在精度上媲美 anchor-based 的方法,最大的功劳我觉得应该归于 FPN,其次归于 Focal Loss。(RetinaNet 赛高)。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补,FocalLoss 则是对中心区域的预测有很大帮助。当然把方法调 work 并不是这么容易的事情,相信有些细节会有很大影响,例如对重叠区域的处理,对回归范围的限制,如何将 target assign 给不同的 FPN level,head 是否 share 参数等等。
????(2019.09-ECCV)目标检测算法【论文原文】【参考文章】
????contributions:
- 一直更新中…
待续。。。
参考:https://github.com/hoya012/deep_learning_object_detection
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:目标检测-深度学习算法总结(从R-CNN到……最新……….) - Python技术站