二阶段的分类:二步法的第一步在分类时,正负样本是极不平衡的,致使分类器训练比较困难,这也是一步法效果不如二步法的缘由之一,也是focal loss的motivation。而第二步在分类时,因为第一步滤掉了绝大部分的负样本,送给第二步分类的proposal中,正负样本比例已经比较平衡了,因此第二步分类中不存在正负样本极度不平衡的问题。即二步法能够在很大程度上,缓和正负样本极度不平衡的分类问题
二阶段的回归:二步法中,第一步会先对初始候选框进行校订,而后把校订过的候选框送给第二步,做为第二步校订的初始候选框,再让第二步进一步校订
二阶段的特征:在二步法中,第一步和第二步法,除了共享的特征外,他们都有本身独有的特征,专一于自身的任务。具体来讲,这两个步骤独有的特征,分别处理着不一样难度的任务,如第一步中的特征,专一于处理二分类任务(区分前景和背景)和粗略的回归问题;第二步的特征,专一于处理多分类任务和精确的回归问题
特征校准:在二步法中,有一个很重要的RoIPooling扣特征的操做,它把候选区域对应的特征抠出来,达到了特征校准的目的,而一步法中,特征是对不齐的算法
发表于CVPR2018,题目是single-shot refinement neural network for object detection网络
附上一篇很好的论文解读博客:RefineDet算法笔记框架
网络框架以下,因为和SSD、FPN的思想一脉相承,很好理解因此我很少介绍了,直接贴做者的描述:性能
这个是RefineDet的检测框架。该框架由两个模块组成,即上面的Anchor Refinement Module(ARM)和下面的Object Detection Module(ODM),它俩是由Transfer Connection Block(TCB)链接。 优化
• 在这个框架中,ARM模块专一于二分类任务,为后续ODM模块过滤掉大量简单的负样本;同时进行初级的边框校订,为后续的ODM模块提供更好的边框回归起点。ARM模块模拟的是二步法中第一个步骤,如Faster R-CNN的RPN。 spa
•ODM模块把ARM优化过的anchor做为输入,专一于多分类任务和进一步的边框校订。它模拟的是二步法中的第二个步骤,如Faster R-CNN的Fast R-CNN。 .net
• 其中ODM模块没有使用相似逐候选区域RoIPooling的耗时操做,而是直接经过TCB链接,转换ARM的特征,并融合高层的特征,以获得感觉野丰富、细节充足、内容抽象的特征,用于进一步的分类和回归。所以RefineDet属于一步法,可是具有了二步法的二阶段分类、二阶段回归、二阶段特征这3个优点。3d
做者以为two stage方法的第二步(逐区域检测)因为并行不少inference的缘由,效率很低,因此对其进行了改进。做者认为他们是对one stage方法的改进,我却是以为这个更接近two stage的方法,对此做者也有解释(做者准备真充分……):orm
当时RefineDet提出来的时候,有很多人说,RefineDet不属于一步法,毕竟有两阶段的分类和回归。咱们认为,二步法之因此精度比较高,是由于它有一个逐区域操做的第二步,这个操做很是有效果,但也比较耗时,而RefineDet在没有用逐区域操做的状况下,得到了同等的效果。所以咱们认为,区分一步法和二步法的关键点:是否有逐区域的操做。视频
速度和SSD相近,精度明显更高,精度更高没什么好说的,速度在多了下面一部分卷积层和反卷积层的状况下没有明显降低,做者分析有两点缘由,anchors较少以及基础网络后的附加网路层数少、特征选取层更少(4个,我记得SSD有5个),做者原文:
1. 咱们使用了较少的anchor,如512尺度下,咱们总共有1.6W个框,而SSD有2.5W个框。咱们使用较少anchor也能达到高精度的缘由是二阶段回归。虽然咱们总共预设了4个尺度(32,,64,128,256,)和3个比例(0.5,1,2),可是通过第一阶段的回归后,预设的anchor被极大的丰富了,所以用于第二阶段回归的anchor,具有着丰富的尺度和比例。
2. 第2个缘由是,因为显存限制,咱们只在基础网络的基础上,新加了不多的卷积层,并只选了4个卷积层做为检测层。若是增长更多卷积层,并选择更多检测层,效果应该还能获得进一步提高。
做者有关训练的总结:
Ø 首先输入尺度越大效果越好,在小目标多的任务上体现的更明显
Ø 小batch会影响BN层的稳定
有关BN层和batch的事咱们多提一句,因为目标检测输入图尺寸大、网络尺寸大(如ResNet),一个batch可能就一、2张图片,因此目标检测任务的BN层基本都是不开放训练的,优化思路通常是:多卡BN同步(旷世论文MegDet),使用固定的BN参数(参考某个数据集得出),或者干脆是提出其余的BN层变种(如何凯明的group normalization之类),做者提到何凯明论文Rethinking ImageNet Pre-training 有讲到或者应用这三种方法。
这是做者后续的文章,继续上篇文章进行了探讨,不过这几篇文章是人脸检测领域
Shifeng Zhang, Xiangyu Zhu, Zhen Lei, Hailin Shi, Xiaobo Wang, Stan Z. Li, S3FD: Single Shot Scale-invariant Face Detector, ICCV, 2017
Shifeng Zhang, Longyin Wen, Hailin Shi, Zhen Lei, Siwei Lyu, Stan Z. Li, Single-Shot Scale-Aware Network for Real-Time Face Detection, IJCV
网络设置以下,注意P五、P6和P7之间的关系:C2->C5是backbone,P5->P2是反向backbone,而C六、C七、P六、P7都是在backbone后面额外添加的3*3卷积层。
按照做者的说法,他将第二阶段的分类、回归操做进行了解耦:
a. Conduct the two-step classification only on the lower pyramid levels (P2, P3, P4)
b. Perform the two-step regression only on the higher pyramid levels (P5, P6, P7)
缘由以下:若是实际去计算一下,能够发现anchors选取的过程当中,浅层的占比要远大于深层的占比(空间分辨率大),这致使大量的负样本集中在浅层,因此对其进行预分类是必要的;而深层感觉野自己很大,分类相比之下很容易,不必进行两次分类。
这篇论文是人脸分类的文章,其具体流程原文说的也不甚详细,个人理解是C2->C4仅进行分类,C5->C7仅进行回归,而P系列则彻底和RefineDet一致。
以前提到了one stage相较于two stage的四个劣势,refine解决了前三个,最后的特征校准遗留了下来,这里做者把它补上了(又成了一篇文章233),因为原理很简单没什么好说的,贴张图本身理解一下吧:
更快的速度更高的准确率 a. 小物体检测:人脸检测的主要难题就是小物体检测 b. 遮挡问题: 行人检测的主要问题就是遮挡去除多任务 例如检测+分割(最终目标:实例分割、全景分割)视频目标检测 利用视频的连续性:精度提高 利用视频的冗余性:速度提高