DLA/DCN/DCNv2
文章目录
1. Deep Layer Aggregation
- 即DLA,CVPR2018
- 参考资料:
- 要解决什么问题?
- 现在有很多研究在设计更宽、更深的网络结构,但有一个问题没有进一步讨论:
- how to best aggregate layers and blocks across a network
- 即如何融合不同layer以及block的特征
- 当时模型设计存在一个问题:模型容量越大,就会导致训练约困难。
- 即,需要在模型容量与训练难度上进行取舍。
- 现在有很多研究在设计更宽、更深的网络结构,但有一个问题没有进一步讨论:
- 用了什么方法解决?
- 设计了两种基本结构:IDA和HDA
- iterative deep aggregation (IDA)
- 着重于融合不同尺度的特征信息
- hierarchical deep aggregation (HDA)
- 着重于合并不同module与channel的信息
- 具体结构如下(网络结构连连看)
- iterative deep aggregation (IDA)
- 除了上面两种基本结构外,还有 Aggregation Nodes,主要用于融合多路输入的特征。
- IDA节点固定2输入,HDA节点输入数量不固定。
- 一般就是卷积实现。
- 网络结构表格
- 融合上面两种基本结构,得到DLA网络
- 分类网络如下:
- 分割网络如下:
- 分类网络如下:
- 设计了两种基本结构:IDA和HDA
- 效果如何?
- 对多类任务效果都很好,包括分类、分割、细粒度分类、
- 结果很好
- 还存在什么问题?
- 有个问题要看代码解决。
- 论文里说同样结构的普通backbone与对应的DLA结构比,DLA结构的参数少。
- 是这样吗?看下代码为啥这么说。
- 参数少不代表运算速度快,要试试。
- 有个问题要看代码解决。
2. Deformable Convolutional Networks
- 即DCNv1,2017年MSRA出品,翻译成可形变卷积
- 参考资料:
- 要解决什么问题?
- 论文上的说法是,普通卷积操作具有固定的几何结构,所以多个CNN叠加的结果也是具有固定的几何结构。
- 所谓“固定的几何结构”,按照我理解,就是感受野内容都是固定的形状,选择的特征图上的点是相同的。
- 用了什么方法解决?
- 实现可形变卷积。所谓可形变,指的是对kernel选择的位置进行偏移。
- 使用DCN实现ROI Pooling
- 实现可形变卷积。所谓可形变,指的是对kernel选择的位置进行偏移。
- 效果如何?
- 将这个结构直接套用到现有网络,执行图像分割与目标检测任务,在不大幅度提高计算量的情况下,提升了性能。
- 这个结构可以用来替代空洞卷积。
- 将这个结构直接套用到现有网络,执行图像分割与目标检测任务,在不大幅度提高计算量的情况下,提升了性能。
- 还存在什么问题?
- 存在的问题在DCNV2中提了。
3. Deformable ConvNets v2: More Deformable, Better Results
-
即DCNv2,
-
参考资料:
-
要解决什么问题?
- 在DCNv1的基础上进行更多
-
用了什么方法解决?
- 对DCN操作本身进行修改。
- DCNv1用的是在普通卷积中学习了offset,即
- DCNv2在v1的基础上,增加了一个权重,即
- 在网络更多stage中使用DCN,v1 只是在resnet的conv5中使用,v2则在 conv 3-5 中使用。
- R-CNN Feature Mimicking
- 感觉像是一个trick,而不是什么可形变卷积。
- 设计目标:减少无关信息的影响。所谓无关信息,应该指的是背景特征,因为感受野太大,所以背景特征很多。
- 意思是在原先网络的基础上增加了一个分支,这个分支好像不直接用于后面的inference,但有参与到损失函数的构建中。
- 网络结构如***意,两个分支的权重是共享的,只是输入不同。
- 一个输入的RPN+ROIPooling,一个的输入的输入图片crop。
- 对DCN操作本身进行修改。
-
效果如何?
-
还存在什么问题?
- 好像DCN实现都是需要c++/cuda实现,转onnx好像比较麻烦,需要再仔细看下。
- 好像DCNv2的实现在pytorch1.4+上没有特别合适的,还需要研究
-
感想
- 大佬打油诗
DCN 998,AP 5 点带回家,dconv 好处都有啥,谁加对了就给他
- 大佬打油诗