RefineDet模型总结
论文名称:Single-Shot Refinement Neural Network for Object Detection
论文地址:传送门
Introduction
我们知道,two-stage detector 精度高,但速度慢,one-stage detector速度快,但精度低。如果能将两者的优点结合起来,那就十分美好了。
One-stage 与 two-stage的最大差别在于是否有region proposal的过程。
有了region proposal的过程,可以在stage one中提取有效的anchor box,过滤无效的box,从而有效地解决class imbalance问题,然后在stage-two中对anchor box进行classification和精确的localization,但是显然two-stage会降低运行速度。
而one-stage则没有region proposal的过程,直接预设$1k \rightarrow 100k$左右的anchor box,本质上是一个dense prediction,按理说这么多box,肯定会十分准确地预测,但是由于这些anchor中大多数都是易于区分的negatives,并不利于模型的训练,导致严重的imbalance问题。
RefineDet则将两者的有点结合了起来:其stage-one用于提取region proposal,stage-two用于分类和精确定位,但最关键的是,其stage-one和stage-two近乎是共享feature maps的,从而大大减少了计算量,同时其采用了FPN的bottom-up,top-down的策略,实现了high-level feature与low-level feature的融合。
在MS COCO数据集上,其达到了41.8%的AP,同时可以达到24.1的FPS。
RefineDet
RefineDet包含两个模块:Anchor Refinement Module(ARM),Object Detection Module(ODM)。还有一个Transfer Connection Block(TCB)用于连接两个模块。
其基本结构是:
- ARM中类似于SSD,在backbone network中抽取四个feature layers,只不过将SSD中Multi-class Classification改为Binary Classification(Object or not)。
- TCB模块则将ARM与ODM连接起来,即将高层的feature传l下层,并与下层concat,重构一个SSD的网络。对于ODM,其简直与SSD一模一样:多层的Multi-class classification和regression。
- 最创新的其实是中间连接的部分,stage-one的anchor box,可以Hard Example Mining(HEM),过滤掉那些easy examples,保留hard negatives,这样就解决了class imbalance问题。
TCB
TCB模块即采用Deconv将上层与下层的feature相结合。
Two-Step Cascade Regression
这让我不禁想起了同时CVPR 18的Cascade R-CNN。同样的套路,RefineDet将SSD改成two-stage,而Cascade R-CNN将R-CNN改成two-stage。
这里的two-step cascade regression主要是bounding box的回归。在ARM中,预测出一个大致的box,然后经过样本的过滤后,在ODM中进一步的regression。
Summary
好的工作总是相通的,级联的方式来解决检测的精度确实是很不错的主意,相比于Cascade R-CNN,RefineDet的检测速度更胜一筹,只不过 Cascade R-CNN里的解释与分析更加详细。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!