DetNet学习与总结

DetNet: A Backbone network for Object

这个网络主要是用来做物体检测的,而我主要是想用它的网络做backbone,了解这个网络之前需要先去了解resnet原理,差别很小
前四层完全用的是Resnet50的网络结构(1+(3+4+6)x3 = 40)
先上图:

在这里插入图片描述

上图是DetNet与ResNet的主要区别
在于bottleneck中,kernel_size为3x3的卷积层中用到了dialation

对比:
在这里插入图片描述
A中FPN在分类网络的基础上增加了不同层的融合操作,最终的预测层甚至包含stride等于64的P6层,也就是输出特征维度是输入图像的1/64,这么小的特征图对于目标的回归而言其实不是很有利,因为高层主要负责检测大尺寸目标,所以容易导致大尺寸目标的坐标回归不准。另外,虽然FPN通过特征融合的方式将高层特征和浅层特征进行融合可以提高浅层检测小尺寸目标的效果,但是由于高层这种大stride的原因,小尺寸目标的语义特征在高层丢失也比较多,因此即便融合也会对最后的结果有不利的影响。

B中分类网络一般最终的stride是32,也就是最终输出特征的尺寸是输入图像的1/32,比如在分类模型中常见的输入大小为224*224的图像,输出特征大小是7x7。

C中DetNet的backbone并没有对输入图像做过多的降采样,最终的stride保持为16,这样相当于增加了最终输出特征图的尺寸(或者叫分辨率,spatial resolution)。DetNet整体上还是沿用了FPN的特征融合方式(这部分在Figure1C中没有体现出来),只不过对高层的stride做了修改,尽可能减少了高层的小尺寸目标语义特征的丢失。

但是如果网络高层的特征不做像分类网络那样多的降采样(将stride等于32修改为stride等于16)会带来两个问题:1、增加计算量。这个很容易理解,毕竟特征图比之前的大,计算量的增加不可避免。2、高层的感受野(receptive field)减小。感受野和信息丢失类似跷跷板,既然前面选择了尽可能减少高层的特征信息丢失,那么感受野减小也是情理之中。

总结:
1、增加网络高层输出特征的分辨率,换句话说就是高层不对特征图做尺寸缩减。(代码中resnet的stride为2,detnet为1)
2、引入dilated卷积层增加网络高层的感受野,这是因为第一个改进点引起的感受野减小。
3、减小网络高层的宽度(channel),减少因增大分辨率带来的计算量。
4、dilate的卷积核是不连续的(缺点)

猜你喜欢

转载自blog.csdn.net/xzy528521717/article/details/86512624