DCN V2

DCN V2在DCN的基础上增加了可调节权重,提升了对几何变换的建模能力。通过Spatial Support Visualization,研究发现DCN V2的采样点能更好地覆盖物体,尤其是加入R-CNN Feature Mimicking后,误差边界显著减少,聚焦于物体前景。实验表明,更多的Deformable ConvNets使用带来性能提升,并且在大尺寸输入时保持稳定精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Deformable ConvNets v2: More Deformable, Better Results

分析DCN

Spatial Support Visualization
  1. Effective receptive fields
    理论上现在很多深层网络最后feature上每个位置的视野域都是铺满全图的,但是实际视野域中每个点对响应的不同,有效视野域即为输入扰动后实际能对输出产生影响的区域。比如求conv2上某一位置的有效视野域,那就依次扰动图像观察该位置处的输出变化,看看哪些像素点能对输出产生影响。一般来说输出点对应回去的中心点对输出影响最大。
  2. Effective sampling/bin locations
    DCNv1中只对采样位置进行了可视化,但是每个采样位置的权重也是不一样的,现在对采样点或者采样的bin的位置和权重都进行了可视化
  3. Error-bounded saliency regions
    已经有一些工作做mask掉图片一些区域使最后输出没有变化,在这个基础上我们可以可视化出最小的能给出和原始一样的输出,也即是最小的最有效识别部分
spatial support of nodes in the last layer of the conv5 stage

图中第一行是Effective sampling/bin locations,第二行是Effective receptive fields,第三行是Error-boun

### Deep Cross Network (DCN) 的数学和技术公式 Deep & Cross Network (DCN) 是一种用于推荐系统的机器学习架构,其核心在于交叉网络部分的设计。以下是关于 DCN 及其改进版 DCN V2 中涉及的技术公式的详细介绍。 #### 原始 DCN 的交叉层公式 原始 DCN 的交叉层设计旨在模拟特征交互的过程。对于输入向量 \( \mathbf{x}_0 \in \mathbb{R}^d \),第 \( l \)-th 层的输出计算如下: \[ \mathbf{x}_{l+1} = \mathbf{x}_0 \odot (\mathbf{W}_l \mathbf{x}_l + \mathbf{b}_l) + \mathbf{x}_l, \] 其中: - \( \mathbf{W}_l \in \mathbb{R}^{d \times d} \) 和 \( \mathbf{b}_l \in \mathbb{R}^d \) 分别表示权重矩阵和偏置项, - \( \odot \) 表示逐元素乘法操作[^1]。 这种结构允许显式建模低阶和高阶特征交互,并且参数数量相对较少。 --- #### DCN V2 的增强型交叉层 在 DCN V2 中引入了两种新的交叉层变体:**Vector-wise Cross Layer** 和 **Low-rank Cross Layer**,以提高效率并减少内存消耗。 ##### Vector-wise Cross Layer 该变体通过简化权重矩阵的形式来降低复杂度。具体而言,\( \mathbf{W}_l \) 被替换为一个可学习的向量 \( \mathbf{v}_l \in \mathbb{R}^d \),从而将上述公式改写为: \[ \mathbf{x}_{l+1} = \mathbf{x}_0 \odot (\text{diag}(\mathbf{v}_l) \mathbf{x}_l + \mathbf{b}_l) + \mathbf{x}_l. \] 这里,\( \text{diag}(\mathbf{v}_l) \) 将向量 \( \mathbf{v}_l \) 对角化形成矩阵。 ##### Low-rank Cross Layer 为了进一步压缩模型大小,DCN V2 提出了基于秩约束的方法。假设 \( \mathbf{W}_l \approx \mathbf{U}_l \mathbf{V}_l^\top \),其中 \( \mathbf{U}_l \in \mathbb{R}^{d \times r} \) 和 \( \mathbf{V}_l \in \mathbb{R}^{d \times r} \) (\( r < d \)),则更新公式变为: \[ \mathbf{x}_{l+1} = \mathbf{x}_0 \odot ((\mathbf{U}_l \mathbf{V}_l^\top) \mathbf{x}_l + \mathbf{b}_l) + \mathbf{x}_l. \] 这种方法显著减少了参数的数量,同时保留了大部分性能。 --- #### 实现代码示例 以下是一个简单的 PyTorch 实现片段,展示了如何构建 DCN V2 的交叉层: ```python import torch.nn as nn import torch class CrossLayer(nn.Module): def __init__(self, input_dim, low_rank=None): super(CrossLayer, self).__init__() self.low_rank = low_rank if low_rank is None: self.W = nn.Parameter(torch.randn(input_dim)) self.b = nn.Parameter(torch.zeros(input_dim)) else: self.U = nn.Parameter(torch.randn(input_dim, low_rank)) self.V = nn.Parameter(torch.randn(low_rank, input_dim)) def forward(self, x_l, x_0): if self.low_rank is None: Wx = torch.diag_embed(self.W).matmul(x_l.unsqueeze(-1)).squeeze() out = x_0 * (Wx + self.b) + x_l else: W_approx = self.U.matmul(self.V) Wx = W_approx.matmul(x_l.unsqueeze(-1)).squeeze() out = x_0 * (Wx + self.b) + x_l return out ``` --- #### 性能优化与实践建议 尽管理论上有能力逼近任意阶数的多项式,但在实践中发现,由于梯度消失等问题,实际效果可能受限于层数的选择。因此,在应用时需注意调整超参数以及初始化策略[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值