COD论文笔记 Deep Gradient Learning for Efficient Camouflaged 2022

动机

这篇论文的动机在于解决伪装目标检测(COD)中的一个关键问题:在复杂背景下,伪装目标与背景的边界模糊,使得检测变得极其困难。现有的方法,如基于边界或不确定性的模型,通常仅响应于伪装目标的稀疏边缘,导致在复杂场景中引入噪声特征。为了克服这些挑战,该论文提出了一种新的深度学习框架,利用对象梯度监督来提高伪装目标检测的精度和效率。

贡献

  1. 提出DGNet框架:引入了一种新的基于深度梯度的框架,名为DGNet,专门用于伪装目标检测。这个框架将任务解耦为两个互相关联的分支,即上下文编码器和纹理编码器。

  2. 设计梯度诱导过渡模块:提出了一种梯度诱导过渡模块(GIT),该模块自动根据软分组策略对来自上下文和纹理分支的特征进行分组。

  3. 高效模型DGNet-S:实现了一个高效版本DGNet-S,在保持高检测精度的同时,仅使用了6.82%的参数,并且达到了实时运行速度(80 fps)。

  4. 多种应用场景:在多种任务中展示了出色的性能,包括息肉分割、缺陷检测和透明物体分割。

创新点

  1. 对象梯度监督:不同于以往仅关注边界或不确定区域的模型,DGNet通过对象梯度监督来挖掘伪装目标内部的判别性模式,减少了噪声特征的引入。

  2. 任务解耦:将任务解耦为上下文和纹理两个分支,有助于缓解从单一分支提取的高层次和低层次特征之间的歧义。

  3. 梯度诱导过渡模块:设计了一种灵活的即插即用模块,通过组内和组间的特征聚合来增强多源特征空间的表示能力。

  4. 高效的计算和参数利用:DGNet-S在保持高性能的同时,显著减少了模型参数和计算开销,使其能够在实际应用中表现优异。

这些动机、贡献和创新点共同构成了该论文的核心内容,并展示了DGNet在伪装目标检测任务中的显著优势。

3.1 Context Encoder

输入和编码器选择

  • 输入图像 I ∈ R 3 × H × W I \in \mathbb{R}^{3 \times H \times W} IR3×H×W
  • 使用EfficientNet作为上下文编码器来获取金字塔特征 { X i } i = 1 5 \{X_i\}_{i=1}^{5} {Xi}i=15

特征降维

  • 为了在解码阶段实现高效的逐元素操作,采用以下两个步骤:
    1. 选择特征层:仅选择前三级特征(即当 i = 3 , 4 , 5 i = 3, 4, 5 i=3,4,5),这些特征保留了视觉场景的丰富语义信息。
    2. 卷积层降维:使用两个堆叠的ConvBR层,卷积核大小为 C i × 3 × 3 C_i \times 3 \times 3 Ci×3×3,将每个候选特征的维度减少到 C i C_i Ci,以减轻后续操作的计算负担。

最终输出

  • 上述步骤后的最终输出是三个上下文特征 { X R i } i = 3 5 ∈ R C i × H i × W i \{X_{R_i}\}_{i=3}^{5} \in \mathbb{R}^{C_i \times H_i \times W_i} {XRi}i=35RCi×Hi×Wi,其中 C i C_i Ci H i = H 2 i H_i = \frac{H}{2^i} Hi=2iH W i = W 2 i W_i = \frac{W}{2^i} Wi=2iW 分别表示特征图的通道数、高度和宽度。

核心点

  • EfficientNet作为编码器:选择EfficientNet的原因在于其高效性和强大的特征提取能力。
  • 特征降维策略:通过选择和降维步骤,确保在保持特征表达能力的同时,减轻计算负担。

总结,这部分详细介绍了如何利用EfficientNet对输入图像进行编码,并通过选择和降维策略获取上下文特征,为后续的解码过程提供高效且富有语义的信息。

3.2 Texture Encoder

引入纹理分支

  • 引入一个专门的纹理分支,通过对象级梯度图进行监督,以补偿上下文特征在几何纹理表示上的不足。

对象梯度生成

  • 梯度定义:图像梯度描述了图像强度或颜色在相邻位置之间的方向变化,常用于边缘检测和超分辨率。
  • 生成步骤
    1. 原始图像梯度:通过计算原始图像 I I I 的梯度生成图像梯度图,但包含了不相关的背景噪声。
    2. 对象级梯度图:为解决背景噪声问题,引入对象级梯度图 Z G Z_G ZG,该图同时包含对象边界和内部区域的梯度信息。
    3. 公式
      Z G = F E ( I ( x , y ) ) ⋅ Z C Z_G = F_E(I(x, y)) \cdot Z_C ZG=FE(I(x,y))ZC
      其中, F E F_E FE 表示标准的 Canny 边缘检测器, ⋅ \cdot 表示元素逐次相乘。

纹理编码器设计

  • 由于高分辨率的低层特征会引入计算负担,设计了一个轻量级的编码器,而不是使用现成的骨干网络。
  • 层次结构
    1. 卷积层和ReLU激活:使用卷积层和ReLU激活函数的组合(ConvBR)对输入进行处理。
    2. 层次细节
    • Layer #01: 卷积核大小为7,输出通道数为64,步幅为2,零填充为3。
    • Layer #02: 卷积核大小为3,输出通道数为64,步幅为2,零填充为1。
    • Layer #03: 卷积核大小为3,输出通道数为 C g C_g Cg,步幅为2,零填充为1。
    • Layer #04: 卷积核大小为1,输出通道数为1,步幅为1,无填充。
  • 生成纹理特征:从 Layer #03 提取纹理特征 X G ∈ R C g × H g × W g X_G \in \mathbb{R}^{C_g \times H_g \times W_g} XGRCg×Hg×Wg,并通过 Layer #04 用对象级梯度图 Z G Z_G ZG 进行监督。

高分辨率保持

  • 保持较大的分辨率(即 H g = H 8 H_g = \frac{H}{8} Hg=8H W g = W 8 W_g = \frac{W}{8} Wg=8W),因为较小分辨率的特征会丢失大部分几何细节。

总结,纹理编码器通过对象级梯度图进行监督,生成高分辨率的纹理特征,补偿上下文特征在几何纹理表示上的不足,从而增强模型对伪装目标的检测能力。

3.3 Gradient-Induced Transition

设计背景

  • 为了实现上下文特征和纹理特征的自适应融合,而不是采用简单的连接或加法操作,设计了一种灵活的即插即用梯度诱导过渡(GIT)模块。

模块组成

  • GIT模块包含三个主要步骤:梯度诱导分组学习、软分组策略和并行残差学习。

梯度诱导分组学习

  • 特征分组:采用梯度诱导分组策略,将三个上下文特征 { X R i } i = 3 5 \{X_{R_i}\}_{i=3}^{5} {XRi}i=35 和一个纹理特征 X G X_G XG 沿通道维度分割为固定的组。
    • 分组公式:
      { X R i , m } m = 1 M ∈ R K i × H i × W i ← X R i ∈ R C i × H i × W i \{X_{R_i,m}\}_{m=1}^{M} \in \mathbb{R}^{K_i \times H_i \times W_i} \leftarrow X_{R_i} \in \mathbb{R}^{C_i \times H_i \times W_i} {XRi,m}m=1MRKi×Hi×WiXRiRCi×Hi×Wi { X G m } m = 1 M ∈ R K g × H g × W g ← X G ∈ R C g × H g × W g \{X_{G_m}\}_{m=1}^{M} \in \mathbb{R}^{K_g \times H_g \times W_g} \leftarrow X_G \in \mathbb{R}^{C_g \times H_g \times W_g} {XGm}m=1MRKg×Hg×WgXGRCg×Hg×Wg其中, ← \leftarrow 表示特征分组操作, K i = C i M K_i = \frac{C_i}{M} Ki=MCi K g = C g M K_g = \frac{C_g}{M} Kg=MCg 分别表示每个特征组的通道数, M M M 是相应的组数。
  • 特征重组:将上下文和纹理特征组定期排列生成重组特征 Q i Q_i Qi
    Q i ∈ R ( C i + C g ) × H i × W i = ⟨ Y 1 i ; …   ; Y m i ; …   ; Y M i ⟩ Q_i \in \mathbb{R}^{(C_i+C_g) \times H_i \times W_i} = \langle Y_{1_i}; \dots; Y_{m_i}; \dots; Y_{M_i} \rangle QiR(Ci+Cg)×Hi×Wi=Y1i;;Ymi;;YMi
    其中 ⟨ ⋅ ; ⋅ ⟩ \langle \cdot; \cdot \rangle ; 表示通道维度的特征连接, Y m i Y_{m_i} Ymi 由以下公式得出:
    Y m i ∈ R ( K i + K g ) × H i × W i = ⟨ F ↓ ( X G m ) ; X R i , m ⟩ Y_{m_i} \in \mathbb{R}^{(K_i+K_g) \times H_i \times W_i} = \langle F_\downarrow(X_{G_m}); X_{R_i,m} \rangle YmiR(Ki+Kg)×Hi×Wi=F(XGm);XRi,m
    F ↓ ( ⋅ ) F_\downarrow(·) F() 是下采样操作,用于确保 X G m X_{G_m} XGm 的空间分辨率与 X R i , m X_{R_i,m} XRi,m 匹配。

软分组策略

  • 多尺度非线性投影:启发自并行设计,设置三个并行子分支(即 { N 1 , N 2 , N 3 } \{N_1, N_2, N_3\} {N1,N2,N3})进行软分组。
    • 投影公式:
      A N i = ⟨ F N 1 ( Q i 1 ) ; …   ; F N n ( Q i n ) … F N N ( Q i N ) ⟩ A_{N_i} = \langle F^1_N(Q^1_i); \dots; F^n_N(Q^n_i) \dots F^N_N(Q^N_i) \rangle ANi=FN1(Qi1);;FNn(Qin)FNN(QiN)⟩其中, F N n ( Q i n ) ∈ R C i N × H i × W i = f n ( Q i n , ω n ) F^n_N(Q^n_i) \in \mathbb{R}^{\frac{C_i}{N} \times H_i \times W_i} = f_n(Q^n_i, \omega_n) FNn(Qin)RNCi×Hi×Wi=fn(Qin,ωn) 引入了软非线性,投影函数 f n f_n fn 由具有 C i C_i Ci 个形状为 ( C i + C g ) N × 1 × 1 \frac{(C_i+C_g)}{N} \times 1 \times 1 N(Ci+Cg)×1×1 的卷积层实现,由可学习的权重 ω n \omega_n ωn 参数化。

并行残差学习

  • 残差连接:在不同的分组感知尺度上引入残差学习。
    • GIT函数 T i ( ⋅ , ⋅ ) T_i(\cdot, \cdot) Ti(,) 定义如下: Z i T = T i ( X R i , X G ) = X R i ⊕ ∑ N A N i Z^T_i = T_i(X_{R_i}, X_G) = X_{R_i} \oplus \sum_N A_{N_i} ZiT=Ti(XRi,XG)=XRiNANi其中, N ∈ { N 1 , N 2 , N 3 } N \in \{N_1, N_2, N_3\} N{N1,N2,N3} 表示不同组的缩放因子集, ⊕ \oplus 表示元素逐次相加, ∑ \sum 表示多个项的和。最终输出为 { Z i T } i = 3 5 ∈ R C i × H i × W i \{Z^T_i\}_{i=3}^{5} \in \mathbb{R}^{C_i \times H_i \times W_i} {ZiT}i=35RCi×Hi×Wi

关键点总结

  • 特征分组与重组:通过分组和重组策略,将上下文和纹理特征有效结合。
  • 软分组策略:通过多尺度的非线性投影,增强特征表示能力。
  • 并行残差学习:在不同尺度上进行残差学习,进一步提升特征融合效果。

综上所述,梯度诱导过渡模块(GIT)通过灵活的特征分组、软分组策略和并行残差学习,实现了上下文特征和纹理特征的高效融合,从而提高了伪装目标检测的性能。

3.4 Learning Details

解码器

  • 给定上下文特征 { X R i } i = 3 5 \{X_{R_i}\}_{i=3}^{5} {XRi}i=35,首先应用梯度诱导过渡(GIT)函数 T i ( ⋅ , ⋅ ) T_i(\cdot, \cdot) Ti(,) 得到输出特征 { Z i T } i = 3 5 \{Z^T_i\}_{i=3}^{5} {ZiT}i=35
  • 为了高效地利用上述梯度诱导特征 Z i T Z^T_i ZiT,采用邻居连接解码器(NCD)生成最终预测 P C P_C PC
    P C ∈ R 1 × H × W = NCD ( Z 3 T , Z 4 T , Z 5 T ) P_C \in \mathbb{R}^{1 \times H \times W} = \text{NCD}(Z^T_3, Z^T_4, Z^T_5) PCR1×H×W=NCD(Z3T,Z4T,Z5T)

损失函数

  • 整体优化目标定义为:
    L = L C ( P C , Z C ) + L G ( P G , Z G ) L = L_C(P_C, Z_C) + L_G(P_G, Z_G) L=LC(PC,ZC)+LG(PG,ZG)
    其中, L C L_C LC L G L_G LG 分别代表分割损失和对象梯度损失函数。
  • 分割损失 L C L_C LC:由加权交并比损失 L wIoU L_{\text{wIoU}} LwIoU 和加权二值交叉熵损失 L wBCE L_{\text{wBCE}} LwBCE 组成。它们根据像素的难度分配自适应权重,以关注全局结构和难度较大的像素。
  • 对象梯度损失 L G L_G LG:采用标准的均方误差损失函数。

训练设置

  • 模型在PyTorch/Jittor工具箱中实现,并在单个NVIDIA RTX TITAN GPU上进行训练和推理。
  • 初始化:模型参数初始化采用 [50] 的策略,骨干网络使用在ImageNet上预训练的权重进行初始化,以防止过拟合。
  • 骨干网络特征提取:从EfficientNet骨干网络的前三个侧输出(包括stage-4 (X_3),stage-6 (X_4),和stage-8 (X_5))提取特征,舍弃最后的Conv1×1、池化和全连接层。
  • 变体实例:考虑性能与效率的权衡,实例化了两个变体以适应不同的计算开销需求(见表2)。

训练过程

  • 优化器:使用Adam优化器,学习率调整采用SGDR策略的余弦退火部分,最小/最大学习率设置为 (10{-5}/10{-4}),最大调整迭代次数为20。
  • 批量大小:设置为12,最大训练轮数为100。
  • 数据增强:在训练过程中,每张图像调整为352×352,并使用四种数据增强技术:颜色增强、随机翻转、随机裁剪和随机旋转。
  • 训练时间:DGNet和DGNet-S分别需要8.8和7.9小时达到网络收敛。

测试设置

  • 输入调整:将输入图像调整为352×352,并在三个未见测试数据集上测试DGNet-S和DGNet。
  • 预测输出:取最终输出 P C P_C PC 作为预测图,不使用任何启发式后处理技术,如DenseCRF。

关键点总结

  • 解码器设计:通过NCD解码器实现上下文特征的有效利用,生成高质量的分割预测。
  • 损失函数:组合加权交并比损失和加权二值交叉熵损失,增强模型对全局结构和难度较大像素的关注;采用均方误差损失进行对象梯度监督。
  • 训练与优化:采用有效的初始化和优化策略,结合数据增强技术,确保模型的收敛和泛化性能。
  • 测试流程:调整输入图像尺寸并直接使用预测输出,不进行额外的后处理,简化推理过程。

综上所述,这部分详细描述了DGNet的学习过程,包括解码器设计、损失函数定义、训练设置和测试流程,确保了模型的高效训练和精确推理。

在这里插入图片描述

图3的详细解释

图3展示了所提出的DGNet的整体流程。该网络由两个相互关联的学习分支组成,即上下文编码器和纹理编码器。以下是图中各部分的详细说明:

  1. 输入图像 (a) Image

    • 输入图像 I I I 进入上下文编码器和纹理编码器。
  2. 上下文编码器 (Context Encoder)

    • 该编码器从输入图像中提取上下文特征 { X i R } i = 3 5 \{X^R_i\}_{i=3}^{5} {XiR}i=35
    • 上下文编码器的输出特征 X 3 R , X 4 R , X 5 R X^R_3, X^R_4, X^R_5 X3R,X4R,X5R 进入梯度诱导过渡模块(GIT)。
  3. 纹理编码器 (Texture Encoder)

    • 纹理编码器从输入图像中提取纹理特征 X G X^G XG
    • 纹理编码器的输出特征 X G X^G XG 也进入梯度诱导过渡模块(GIT)。
  4. 梯度诱导过渡模块 (Gradient-Induced Transition, GIT)

    • GIT模块将上下文特征和纹理特征进行融合,生成过渡特征 { Z i T } i = 3 5 \{Z^T_i\}_{i=3}^{5} {ZiT}i=35
    • GIT模块包括三个子模块 T 3 , T 4 , T 5 T_3, T_4, T_5 T3,T4,T5,分别对 X 3 R , X 4 R , X 5 R X^R_3, X^R_4, X^R_5 X3R,X4R,X5R X G X^G XG 进行处理和融合。
  5. 邻居连接解码器 (Neighbor Connected Decoder, NCD)

    • GIT的输出特征 { Z i T } i = 3 5 \{Z^T_i\}_{i=3}^{5} {ZiT}i=35 通过NCD解码器生成最终的预测图 P C P^C PC
    • 解码器将多层特征进行整合,生成伪装目标的分割结果。
  6. 监督信号 (Supervision Signals)

    • Ground-Truth (b):真实的分割标签 Z C Z^C ZC,用于计算分割损失 L C L_C LC
    • Object Boundary ©:对象边界,作为对比,说明了仅使用边界监督时的不足。
    • Image Gradient (e):图像梯度,通过计算原始图像的梯度生成,但包含了不相关的背景噪声。
    • Object Gradient (d):对象梯度图 Z G Z^G ZG,通过对原始图像 I I I 和真实标签 Z C Z^C ZC 进行元素逐次相乘生成,包含了对象边界和内部区域的梯度信息,作为纹理编码器的监督信号,用于计算梯度损失 L G L_G LG

关键流程总结

  • 输入图像 I I I 被并行输入到上下文编码器和纹理编码器中。
  • 上下文编码器提取高层次的语义特征 X i R X^R_i XiR(如 X 3 R , X 4 R , X 5 R X^R_3, X^R_4, X^R_5 X3R,X4R,X5R)。
  • 纹理编码器提取对象内部的几何纹理特征 X G X^G XG
  • GIT模块将这些上下文特征和纹理特征进行融合,生成更具判别力的过渡特征 Z i T Z^T_i ZiT
  • 最终,NCD解码器对融合后的特征进行解码,生成分割预测 P C P^C PC
  • 使用真实标签 Z C Z^C ZC 和对象梯度图 Z G Z^G ZG 作为监督信号,分别计算分割损失 L C L_C LC 和梯度损失 L G L_G LG

通过这种设计,DGNet能够在复杂背景中有效地检测和分割伪装目标。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 17:10:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 17:10:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 17:10:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 17:10:03       55 阅读

热门阅读

  1. 数学建模熵权法

    2024-07-20 17:10:03       22 阅读
  2. RabbitMQ线程和连接模型详解

    2024-07-20 17:10:03       23 阅读
  3. 探索现代Web开发:WebKit的剪贴板API革新

    2024-07-20 17:10:03       26 阅读
  4. Node.js 路由

    2024-07-20 17:10:03       18 阅读
  5. JDK版本详解

    2024-07-20 17:10:03       18 阅读
  6. Zookeeper是什么,为什么要用,怎么用?

    2024-07-20 17:10:03       23 阅读
  7. 【c++】用c++类做一个猜数字游戏

    2024-07-20 17:10:03       18 阅读
  8. execjs._exceptions.ProgramError: SyntaxError: 语法错误

    2024-07-20 17:10:03       18 阅读