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的信息
      • 具体结构如下(网络结构连连看)
      • DLA/DCN/DCNv2
    • 除了上面两种基本结构外,还有 Aggregation Nodes,主要用于融合多路输入的特征。
      • IDA节点固定2输入,HDA节点输入数量不固定。
      • 一般就是卷积实现。
    • 网络结构表格DLA/DCN/DCNv2
    • 融合上面两种基本结构,得到DLA网络
      • 分类网络如下:
        • DLA/DCN/DCNv2
      • 分割网络如下:
        • DLA/DCN/DCNv2
  • 效果如何?
    • 对多类任务效果都很好,包括分类、分割、细粒度分类、
    • 结果很好DLA/DCN/DCNv2
  • 还存在什么问题?
    • 有个问题要看代码解决。
      • 论文里说同样结构的普通backbone与对应的DLA结构比,DLA结构的参数少。
      • 是这样吗?看下代码为啥这么说。
    • 参数少不代表运算速度快,要试试。

2. Deformable Convolutional Networks

  • 即DCNv1,2017年MSRA出品,翻译成可形变卷积
  • 参考资料:
  • 要解决什么问题?
    • 论文上的说法是,普通卷积操作具有固定的几何结构,所以多个CNN叠加的结果也是具有固定的几何结构。
    • 所谓“固定的几何结构”,按照我理解,就是感受野内容都是固定的形状,选择的特征图上的点是相同的。
  • 用了什么方法解决?
    • 实现可形变卷积。所谓可形变,指的是对kernel选择的位置进行偏移。
      • DLA/DCN/DCNv2
      • DLA/DCN/DCNv2
    • 使用DCN实现ROI Pooling
      • DLA/DCN/DCNv2
  • 效果如何?
    • 将这个结构直接套用到现有网络,执行图像分割与目标检测任务,在不大幅度提高计算量的情况下,提升了性能。
      • DLA/DCN/DCNv2
      • DLA/DCN/DCNv2
    • 这个结构可以用来替代空洞卷积。
  • 还存在什么问题?
    • 存在的问题在DCNV2中提了。

3. Deformable ConvNets v2: More Deformable, Better Results

  • 即DCNv2,

  • 参考资料:

  • 要解决什么问题?

    • 在DCNv1的基础上进行更多
  • 用了什么方法解决?

    • 对DCN操作本身进行修改。
      • DCNv1用的是在普通卷积中学习了offset,即 y(p)=k=1Kwkx(p+pk+Δpk)y(p) = \sum_{k=1}^Kw_k\cdot x(p+p_k+\Delta p_k)
      • DCNv2在v1的基础上,增加了一个权重,即y(p)=k=1Kwkx(p+pk+Δpk)Δmky(p) = \sum_{k=1}^Kw_k\cdot x(p+p_k+\Delta p_k) \cdot \Delta m_k
    • 在网络更多stage中使用DCN,v1 只是在resnet的conv5中使用,v2则在 conv 3-5 中使用。
    • R-CNN Feature Mimicking
      • 感觉像是一个trick,而不是什么可形变卷积。
      • 设计目标:减少无关信息的影响。所谓无关信息,应该指的是背景特征,因为感受野太大,所以背景特征很多。
      • 意思是在原先网络的基础上增加了一个分支,这个分支好像不直接用于后面的inference,但有参与到损失函数的构建中。DLA/DCN/DCNv2
      • 网络结构如***意,两个分支的权重是共享的,只是输入不同。
        • 一个输入的RPN+ROIPooling,一个的输入的输入图片crop。
      • DLA/DCN/DCNv2
  • 效果如何?

  • 还存在什么问题?

    • 好像DCN实现都是需要c++/cuda实现,转onnx好像比较麻烦,需要再仔细看下。
    • 好像DCNv2的实现在pytorch1.4+上没有特别合适的,还需要研究
  • 感想

    • 大佬打油诗 DCN 998,AP 5 点带回家,dconv 好处都有啥,谁加对了就给他