Single-Shot Refinement Neural Network for Object Detection

CVPV18 RefineDet

这篇文章和focal loss那篇目的是一样的,试图在维持one-stage 方法速度的同时, 提升精度, 赶上甚至超过two-stage。

还是分析造成one-stage和two-stage精度差距的原因。 换句话说, two-stage相较于前者的机制上有哪些优点?

(1) two-stage RPN结构对class imbalance问题解决的不错, 过滤了很多easy negtive examples;

(2) two-stage级联结构, 有coarse-to-fine的作用;

(3)使用two-stage的特征去描述物体。

这篇文章基于上述思考, 设计一个新的网络框架, 核心是通过one-stage网络模拟two-stage的功能。 核心模块有三个:ARM, ODM和TCB。

ARM起到类似RPN的作用, 粗略的进行分类和回归,将Anchor调整到一个更好的位置,再作为ODM模块的初始anchor。

当然ARM还干了一件事:Negative Anchor Filtering。 也就是设定一个阈值,如0.99, 如果ARM后, 某个anchor的negtive confidence大于这个阈值, 我们就不把它送进ODM进行refine了, 这就是一个解决class imbalace的过程。当然这个过滤还不够, 模仿SSD, 文章还使用了Hard Negative Mining, 也就是保持进入ODM的正负样本比例为(1:3)。

TCB是连接ARM和ODM的模块, 把ARM的各层特征组合传递给ODM对应层, ODM和ARM最终用于检测的特征大小是一样的。

TCB内部结构如下:

其实这种连接方式就类似FPN, 只不过把上采样变成了Deconv。

ODM模块就是一个refine的模块, 类似SSD等后面的结构。

为什么速度不受影响呢?因为ARM得到过滤后的anchor后, 并没有像two-stage那样在feature map上做RoiPooling,而是整个特征图传递,还是one-stage的流程, 只不过anchors的初始状态更好了而已。

总的来说,用one-stage来模拟two-stage的想法还算有趣。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值