论文:https://arxiv.org/abs/1711.06897
代码:https://github.com/sfzhang15/RefineDet
RefineDet是CVPR2018的一篇论文,之前主流的目标检测算法主要分为single-stage和two-stage两种,single-stage模型的优势在于速度较快,two-stage模型的优势在于准确率更高,当下很多工作都是围绕着提高single-stage的准确率(如之前该公众号谈到的
focal loss
,解决single-stage的样本不均衡问题),或者降低two-stage模型的时耗(如Lighthead RCNN)。而这篇论文提出的RefineDet可以说是这两种方法的融合,在single-stage模型的基础上,融入了two-stage的思想,可以说single-stage和two-stage已经没有明显的分界线了。
RefineDet的网络主要分为三个模块,anchorrefinement module(ARM)和objectdetection module(ODM),当然还有两者之间的连接块,transfer connection block(TCB)。
ARM:本质上是SSD模型,实际上是类似RPN网络的功能,实现前景和背景的二分类,预测前景和背景的得分scores(negative confidence score和positive confidencescore),negative confidence score超过预设的阈值的anchor会被丢掉。最后留下的是negative hard refined anchor和positive refined anchor。解决后续网络多分类中的样本不均衡问题,同时还预测其坐标的四个offests,粗略调整anchor的位置和大小,为后面的回归提供更好的初始化。
ODM:网络模型类似于DSSD,不同之处在于输入ARM网络的输出结果refinedanchors,解决训练样本的筛选问题,在ARM网络的粗略回归的基础上进行二次回归,这种级联式回归也使得bbox的回归更加精确。
TCB:TCB连接了ARM和ODM,实现了特征的融合。TCB在特征融合的方法上与之前的特征融合方法也稍有差异,采用的是先通过反卷积运算,实现维度的统一,再通过Eltw Sum(也叫broadcast add)操作,将浅层和深层的特征图在对应的通道上做加法运算。在此之前Google TDM使用的是先通过up-sample操作,实现w、h维度的统一,再进行concat操作,让浅层和深层的特征图在通道数的维度上进行拼接,这种方式的特征融合较为粗暴,效果也较差。FPN则是通过up-sample操作,再通过Eltw Sum操作。DSSD使用的是先通过反卷积操作,再进行Eltw Product(也叫broadcast mul)操作,将浅层和深层的特征图在对应的通道上做点乘运算,Eltw Product操作效果稍微好于Eltw Sum操作,但是乘法运算的耗时也要高于加法运算。
Loss function:直接将ARM和ODM两部分的loss相加,实现端到端训练。作者在训练过程中还用到了一些技巧,有兴趣的读者可以在论文中了解这方面的细节。
欢迎关注,see you next time ~
领取专属 10元无门槛券
私享最新 技术干货