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

2. Deformable Convolutional Networks

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

3. Deformable ConvNets v2: More Deformable, Better Results

  • 即DCNv2,

  • 参考资料:

  • 要解决什么问题?

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

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

  • 还存在什么问题?

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

    • 大佬打油诗 DCN 998,AP 5 点带回家,dconv 好处都有啥,谁加对了就给他
DCNv3(Deformable Convolutional Networks v3)是一种用于目标检测和图像分割任务的卷积神经网络结构。它是在传统的卷积神经网络基础上引入了可变形卷积(deformable convolution)模块,以更好地适应目标的形变和姿态变化。 DCNv3的网络结构主要由以下几个部分组成: 1. 基础网络:DCNv3可以使用各种常见的卷积神经网络作为基础网络,如ResNet、VGG等。基础网络负责提取图像的特征。 2. 可变形卷积模块:可变形卷积模块是DCNv3的核心组件,用于替代传统的固定卷积操作。它通过引入偏移量(offset)和掩膜(mask)来实现对卷积核的形变。偏移量用于调整卷积核在输入特征图上的采样位置,而掩膜则用于调整卷积核在不同位置的权重。这样可以使得卷积操作更加灵活,能够适应目标的形变和姿态变化。 3. 特征金字塔网络:为了处理不同尺度的目标,DCNv3通常会使用特征金字塔网络来提取多尺度的特征。特征金字塔网络通过在不同层级上进行卷积和下采样操作,得到一系列具有不同尺度的特征图。 4. 目标检测头:DCNv3通常会在网络的顶部添加一个目标检测头,用于预测目标的类别和位置。目标检测头可以是一系列全连接层卷积层,用于将特征图转换为目标的预测结果。 总体来说,DCNv3通过引入可变形卷积模块,使得网络能够更好地适应目标的形变和姿态变化,从而提升目标检测和图像分割的性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值