对于物体检测,双阶段检测方法(例如:Faster R-CNN)已经取得了最好的检测精度,而单阶段方法(如SSD)有着效率高的优势,为了继承这两者的优点并且克服它们的缺点,在这篇论文中提出了一个新型的单阶段检测方法,命名为RefineDet。这个方法既可以像单阶段方法一样获得超过双阶段方法的检测精度,并且获得可比的运行速度。
RefineDet包括两个内联模块,分别是the anchor refinement module和the object dection module。the anchor refinement module的作用是①滤除负样本来减少分类器的搜索空间②粗略的调整anchors的位置和大小,为后续的回归提供更好的初始化。the object dection module的作用是把上一个模块的输出作为输入,对微调的anchors进行进一步的回归和预测多分类标签。同时,还设计了一个transfer connection block来连接the anchor refinement modul和the object dection module。同时还采用了多任务损失函数使得整个网络可以端对端训练。代码在https: //github.com/sfzhang15/RefineDet。
该网络架构如下图所示:
可以看到,这个网络结构非常简单,上面的模块就是anchor refinement module,这个部分就是采用VGG16和Resnet101的网络进行卷积运算,然后抽取几层的卷积结果进行损失函数计算,下面的模块是object detection module,这个模块将anchor refinement module每一层feature maps的输出作为输入进行回归运算,在这个架构里相互平行的层尺度是一致的,两个模块通过transfer connection block连接,笔者认为这个模块非常重要,它的结构示意图如下图所示:
可以看到这个模块就是一些卷积激活函数的运算,整个运算不改变feature maps的尺度,比较出彩的地方是在这个模块结合了多尺度信息,可以看到每个blok之间都是相连的,后一层的feature maps经过返卷积运算将高尺度信息传递到上一层,一层一层的传递,最后能够整个多个尺度信息,这使得回顾和分类判断更加有效。这样使得整个网络下来效果非常好。
在pascal voc中测试结果:
在MS COCO中的结果为:
具体的操作可以参考论文 :https://arxiv.org/pdf/1711.06897v1.pdf
第一次在博客,有问题多多在评论区交流,一起进步,在深度学习中越走越远!