一、简介
1、RefineDet综合了one-stage和two-stage的优点从而能够提高检测效果。主要包括two-stage算法对box由粗到细的回归思想和FPN中的特征融合思想来提升小物体的检测效果。
2、可以看做是SSD算法、RPN网络和FPN算法的结合。
二、参考
2018CVPR: Single-Shot Refinement Neural Network for Object Detection
论文:https://arxiv.org/abs/1711.06897
代码:https://github.com/sfzhang15/RefineDet
三、网络结构
主要由三部分组成,分别是anchor refinement module (ARM) 、object detection module (ODM)、transfer connection block (TCB)
1、ARM
类似于RPN网络,用来初步得到bbox,同时去除一些负样本。采用多层特征输入,分两路进行损失函数的计算,分类和边界回归,这一层主要是进行粗略的筛选(具体的细节未知,与精细的筛选有什么区别未知)
2、TCB
将ARM输出的特征图转成ODM的输入(为什么要转未知),中间进行了多层特征的融合。
3、ODM
相当于是SSD(需要复习一下),不同点是输入anchors是ARM模块得到的,且在SSD的基础上添加了FPN中的特征融合思想,对小物体的检测更加准确。
这里和SSD最主要区别就在于SSD是直接在default box的基础上进行回归的,而RefineDet是通过ARM得到的anchors来进行回归的,这相当于就是把two-stage模型的优点整合到了one-stage模型中。
四、损失函数
损失函数较为简单,分为ARM和ODM两个部分的分类和边界回归损失,与SSD的损失函数大体相同,这里采用end-to-end的训练模式。
五、模型效果
六、总结
1、结合了one-stage和two-stage的检测模型,检测效果得到提升
2、是对SSD的改进,增加了对SSD中default box的优化,变为了由ARM模块得到refined anchors来进行检测。