RefineDet算法笔记
---恢复内容开始---
一、创新点
针对two-stage的速度慢以及one-stage精度不足提出的方法,refinedet 包括三个核心部分:使用TCB来转换ARM的特征,送入ODM中进行检测;
两步级连回归;过滤较多的负样本(容易分类的,类似于ohem)。
(1)anchor refine module 和object detect module。前者类似于rpn,用于剔除过多的负样本和粗略调整anchor位置和尺寸(都是二分类);后者
将refine过的anchor进行进一步的微调(感觉跟two stage很像,为什么能快呢?答案是没有像two-stage那样使用耗时的roi-pooling,该框架为全卷积网络)。整体结构如下图
图1
(2)在两个部分之间,设计了一个transfor connection block(TCB),如下图。TCB包括两个功能,一是转换ARM的特征,另一个是转换不同层的特征, 使用deconv来扩大特征,
用于后续特征的 element sum 。这一部分更新是FPN,融合多层特征。
图2
---恢复内容结束---
(3)ODM
两步级连回归,有利于小物体检测。先使用ARM生成refined anchors boxes,再将其输入ODM再次回归和分类。此外还包括负样本过滤:当负样本的置信值超过阈值时直接丢弃。
总的来看, 该网络融合了one-stage 和 two-stage的特点,在ARM阶段生成先refined anchor box(类似于RPN), 在ODM,一方面输入refined anchor,另一方面融合多层特征(类似FPN)。
(4) loss
损失函数包括ARM loss 和 ODM loss,对于ARM,包括cross-entropy(二分类)和smoth-L1。对于ODM,则是softmax-loss和smoth-L1
(5)实验
结果还是挺不错的,在精度上,即使是320×320, mAP也能上80;速度很有优势,在500*500这一级别上,仅次于yolov2。
参考:https://blog.csdn.net/u014380165/article/details/79502308
(7)网络结构
以vgg16 320*320为例,主干网络的conv4_3(512*40*40),conv5_3 (512*20*20), fc7(1024*10*10), conv6_2(512*5*5)分别对应图1的主干网络四个特征图,用这四个特征图
1、每个特征图分别生成mbox_loc、mbox_conf、mbox_priorbox, 并通过concat操作,得到ARM相关的arm_priorbox、arm_loc、arm_conf
2、