COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection

论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点如下:

动机:

论文的核心动机是解决伪装目标检测(COD)中的挑战性任务。伪装目标检测旨在识别和分割那些在视觉上与周围环境高度相似的目标,这对于计算机视觉来说是非常困难的任务。尽管深度学习方法在该领域取得了一定进展,但现有方法仍面临有效分离目标和背景的难题,尤其是在伪装目标与背景特征高度相似的情况下。

现有方法的不足之处:

  1. 过于依赖特定的辅助信息:现有的COD方法通常引入边界、纹理、频率等辅助信息来增强模型的特征学习能力,但这些方法往往只针对某种特定的辅助线索进行优化,缺乏灵活性和适应性。
  2. 无法兼顾不同的辅助线索:由于方法是专门针对某一类辅助信息设计的,因此它们在面对其他类型的辅助信息时往往表现不佳,无法充分利用不同辅助线索的优势。
  3. 多层次融合不足:现有方法在整合图像特征和辅助信息时,通常缺乏多层次的深度融合机制,导致伪装目标的特征提取不够充分,影响检测效果。

拟解决的问题:

  1. 统一框架处理多种辅助信息:提出一个能够灵活适应不同类型辅助线索的框架,能够同时处理边界、纹理、频率等多种类型的辅助信息,实现更为准确的伪装目标检测。
  2. 多层次特征融合:通过深度整合图像特征与辅助信息,使得模型能够更好地学习伪装目标的特征,并提升检测的精确性。
  3. 改进的特征校准机制:引入新的特征校准解码器,以更好地聚合和校准不同层次的特征,进一步提升伪装目标的预测精度。

主要贡献:

  1. 提出了一个自适应引导学习网络(AGLNet):该网络能够统一处理多种不同的辅助线索,并通过深度融合这些线索和图像特征,提升伪装目标检测的效果。该框架首次实现了在伪装目标检测任务中适应不同类型的附加信息。
  2. 设计了分层特征组合模块(HFC):该模块可以在多层次上深度融合辅助线索与图像特征,从而充分利用各种附加信息,实现更为准确的特征提取。
  3. 提出了校准解码器(RD):通过迭代校准机制,进一步融合和精炼多层次特征,从而在多步校准过程中逐步提升伪装目标的分割精度。
  4. 在多个COD基准数据集上的大规模实验:实验结果显示,AGLNet在不同类型的附加线索下显著提升了性能,并且在检测精度方面远超当前20种最先进的方法。

创新点:

  1. 自适应引导学习框架:首次提出了一个能够统一探索并引导不同类型附加线索的端到端可学习框架,克服了现有方法只针对特定线索优化的局限性。
  2. 多层次融合机制:提出了分层特征组合模块,能够在多个层次上整合图像特征和附加线索,以更深层次的融合方式指导伪装特征的学习。
  3. 迭代特征校准解码器:通过多层次、多步骤的校准操作,进一步提升不同特征的聚合效果,确保模型能够精确预测伪装目标。

总结来说,这篇论文通过引入自适应的引导学习框架和多层次的特征融合与校准机制,解决了现有伪装目标检测方法在适应性和融合深度上的不足,显著提升了检测性能。

II. RELATED WORK

B. Additional Cues for COD

在《II. RELATED WORK》部分的B. Additional Cues for COD章节中,论文回顾了在伪装目标检测(Camouflaged Object Detection,COD)任务中使用的辅助线索(Additional Cues),并分析了这些辅助线索如何帮助模型提升检测精度。

该部分的核心内容如下:

1. 引入辅助线索的目的

伪装目标与背景的高度相似性使得仅依靠RGB特征来检测伪装目标是困难的。因此,研究者们尝试通过引入额外的辅助信息(如边缘、纹理、频率等),使模型能更好地区分前景和背景。这些辅助线索能够强调伪装目标与背景之间的细微差异,尤其是纹理、边缘或渐变的变化,从而提升检测性能。

2. 使用不同的辅助线索

为了提升伪装目标的检测性能,许多研究引入了不同的辅助线索来增强模型的能力。常见的辅助线索包括:

  • 边界(Boundary):通过增强对象的边界信息,可以更清楚地分割伪装目标与背景的边缘,使得目标检测更加精确。
  • 纹理(Texture):通过纹理标签,网络可以更加关注目标的结构和细节,帮助区分目标与背景的纹理差异。
  • 边缘(Edge):引入边缘信息(例如使用Canny边缘检测器)可以突出目标的边缘区域,提升检测效果。
  • 频率(Frequency):通过对图像进行离散余弦变换(DCT)等频率域处理,能够提取RGB空间中不易发现的频率信息。这种频率线索可以提供额外的信息,从不同的角度加强对伪装目标的识别。
3. 不同线索结合的潜力与挑战
  • 一些方法将边界、边缘或频率域信息与图像特征结合,以提升伪装目标的分割效果。例如,Zhu等人通过引入边界线索来突出目标与背景之间的边界,从而使模型更容易理解边界信息。
  • He等人将边缘信息与目标的语义信息结合,探索目标边缘的语义特征,以提升检测精度。
  • Zhong等人Cong等人则将频率域线索引入到伪装目标检测中,通过分解前景和背景特征来提升检测效果。
4. 当前方法的局限性

虽然引入这些辅助线索可以提升模型性能,但大多数方法只针对特定类型的辅助信息设计,限制了其在其他线索类型上的表现。例如:

  • FDCOD(频域伪装目标检测)模型只针对频率域线索进行了优化,因此在面对边界等其他辅助线索时表现不佳。
  • DGNet则专注于边缘线索,在处理频率域信息时表现较差。
5. 总结

这一部分强调了在伪装目标检测中整合附加线索的重要性,尤其是在现有方法针对单一线索的局限性上进行了分析。为了提升COD任务的性能,未来的工作应该专注于开发能够适应多种不同辅助信息的统一框架,充分挖掘和利用各种线索的潜力。

这部分的讨论为论文提出的新方法——能够统一处理多种线索的自适应引导学习框架(AGLNet),提供了理论基础和动机。

Methodology

作者介绍了论文提出的**自适应引导学习网络(AGLNet)**的整体架构和关键思想,并概述了该方法如何解决伪装目标检测(COD)中的挑战性问题。引言内容的主要要点如下:

在这里插入图片描述

1. 整体架构概述

论文提出了一个端到端的自适应引导学习网络(AGLNet),该网络的目标是通过引入和整合不同类型的辅助线索,来增强伪装目标检测的精度。AGLNet可以处理诸如边界、纹理、边缘和频率等多种附加线索,并将这些线索与图像特征深度融合,从而引导伪装目标特征的学习。整个模型的核心模块包括:

  • 附加信息生成模块(AIG, Additional Information Generation):该模块负责从输入图像中提取附加线索,并将其作为伪装目标检测的指导信号。
  • 分层特征组合模块(HFC, Hierarchical Feature Combination):该模块通过多层次融合图像特征和附加线索,从不同层级上指导伪装目标的特征学习,帮助模型更好地区分目标与背景。
  • 校准解码器(RD, Recalibration Decoder):该模块通过多步校准机制,进一步融合和精炼不同层次的特征,确保模型能够生成更精确的伪装目标预测结果。

2. 附加信息生成(AIG)

附加线索(例如边界、纹理、边缘或频率信息)包含了与目标检测相关的关键信息,能够提供额外的视觉线索。AGLNet中的AIG模块首先从图像中学习这些附加线索,将其转化为可用的特征,避免这些附加线索与原始图像特征之间的干扰。通过这种方式,AIG模块生成了用于指导伪装特征学习的有效附加信息。

3. 分层特征组合(HFC)

AGLNet通过HFC模块将图像特征与附加线索特征进行深度融合。HFC在多层次上结合了来自不同层的图像特征与辅助线索,使得模型能够充分利用附加信息,并对伪装目标特征进行精细化学习。分层融合的方式使得该模块能够从多个角度获取有效的伪装目标特征,提升检测性能。

4. 校准解码器(RD)

为了进一步提升伪装目标的检测精度,AGLNet引入了校准解码器(RD)模块。RD通过多个层级的校准机制,逐步聚合和优化来自不同特征层的信息。它对不同层次的特征进行多步精炼和融合,从而确保伪装目标的预测更加准确。

5. 多层次深度融合的优势

这种设计的核心优势在于,它能够在多个层次上深度融合附加信息与图像特征,充分发挥辅助线索的指导作用。通过自适应地整合这些信息,AGLNet能够从不同的附加线索中提取关键特征,并且更好地处理伪装目标与背景的高度相似性问题。

总结:

引言部分为AGLNet的整体结构提供了概述,强调了该模型如何通过多层次融合附加信息和图像特征来增强伪装目标检测的能力。AGLNet的关键创新点在于它能够适应多种不同的附加线索,并在伪装目标检测任务中提供更高的检测精度。

Additional Information Generation (AIG)

这部分,作者详细介绍了附加信息生成模块(AIG)的设计与功能。AIG模块是整个**自适应引导学习网络(AGLNet)**的关键组成部分,负责生成附加信息(如边界、纹理、边缘、频率等),以引导伪装目标的特征学习。下面是AIG模块的详细解释:

1. 附加线索的必要性

附加信息(辅助线索)对于伪装目标检测至关重要,因为伪装目标与背景高度相似,单纯依靠RGB图像特征可能难以准确分离目标和背景。附加线索(如边界、纹理、频率等)包含了与目标检测任务密切相关的关键信息,这些信息往往在标准的RGB特征中无法轻易提取。因此,引入这些附加线索有助于更好地区分伪装目标。

2. AIG模块的设计目标

由于附加线索与RGB图像特征存在较大的模式差异,如果直接将两者结合,可能会产生相互干扰,导致关键特征的丢失或引入噪声。为了解决这一问题,作者设计了AIG模块,用于在卷积空间中学习附加线索,使其能够与图像特征轻松融合,从而有效地增强伪装目标的特征提取。

3. AIG模块的结构

AIG模块由三层组成,每层都包含了平均池化操作和卷积操作,用于生成附加信息特征。具体步骤如下:

  • 输入图像:AIG从输入的RGB图像 I ∈ R H × W × 3 I \in \mathbb{R}^{H \times W \times 3} IRH×W×3 开始处理,其中 H H H W W W 分别表示图像的高度和宽度,3表示RGB三个通道。
  • 特征生成:AIG模块通过三层平均池化和卷积操作生成附加特征 A ∈ R H / 8 × W / 8 × C A \in \mathbb{R}^{H/8 \times W/8 \times C} ARH/8×W/8×C,其中 C = 64 C = 64 C=64 表示附加特征的通道数。
  • 卷积处理:随后通过一个1×1卷积层将附加特征映射为与目标附加信息匹配的预测结果 r s r_s rs,并通过附加信息的真实标签对其进行监督训练。

4. 附加信息标签的生成

为了训练AIG模块,作者利用现有的伪装目标检测方法生成附加信息的真实标签,包括以下几种类型:

  • 边界(Boundary):从目标的真实分割标签中提取对象的边界,作为相应的边界图。
  • 纹理(Texture):通过组合轮廓边缘图(ConEdge)、纹理图和真实标签来生成纹理信息: Texture = ConEdge + Canny × GT \text{Texture} = \text{ConEdge} + \text{Canny} \times \text{GT} Texture=ConEdge+Canny×GT其中,ConEdge表示轮廓边缘图,Canny是通过标准Canny边缘检测器生成的边缘,GT是目标的真实标签。
  • Canny边缘信息:通过标准Canny边缘检测器生成图像的边缘信息,并与目标真实标签结合,生成对象级别的Canny边缘图。 Z G = FE ( I ( x , y ) ) ⊗ Z C Z_G = \text{FE}(I(x, y)) \otimes Z_C ZG=FE(I(x,y))ZC其中,FE表示Canny边缘检测器, I ( x , y ) I(x, y) I(x,y) 是输入图像的像素坐标, ⊗ \otimes 表示按元素相乘, Z C Z_C ZC 表示目标的真实标签。
  • 频率信息(Frequency):通过对RGB图像进行离散余弦变换(DCT)来获取频率域信息,这些频率信息可以揭示RGB空间中难以察觉的特征。

5. AIG模块的作用

AIG模块的作用是学习并生成附加线索,这些线索包含了视觉系统难以捕捉的关键信息(例如纹理和频率),这些信息可以为模型提供关于目标的额外语义提示,从而有助于伪装目标的精确检测。通过这个模块,AGLNet能够自适应地探索和整合不同类型的附加线索,并将其与图像特征深度融合,最终提升伪装目标检测的精度。

6. AIG与后续模块的连接

生成的附加线索将被传递到AGLNet的后续模块(例如分层特征组合模块 HFC校准解码器 RD),在这些模块中,附加信息会与不同层级的图像特征进行进一步的深度融合,以引导伪装特征的学习。

总结:

AIG模块是AGLNet的关键组成部分,专门用于生成伪装目标检测所需的附加线索,并确保这些线索能够无缝地与图像特征相结合。通过引入边界、纹理、边缘和频率等附加信息,AIG模块使得模型能够更好地区分目标和背景,克服伪装目标检测中的高背景相似性挑战。

Hierarchical Feature Combination (HFC)

作者详细介绍了 分层特征组合模块(HFC, Hierarchical Feature Combination)的设计和功能。HFC模块是 自适应引导学习网络(AGLNet)的核心模块之一,其目的是将图像特征和通过附加信息生成模块(AIG)得到的附加线索在多个层次上深度融合,以提升伪装目标的检测性能。下面是HFC模块的详细解释:

1. 背景与动机

由于伪装目标的特征通常与背景高度相似,因此需要充分利用图像中的多层次信息,以更好地区分目标和背景。同时,附加信息(如边界、纹理、频率等)可以提供不同于RGB图像特征的关键线索。因此,设计一个高效的机制,将多层次的图像特征与附加信息进行深度融合,是伪装目标检测的关键。

2. 预处理

HFC模块首先选取视觉骨干网络的前三级高层特征作为多尺度特征,这些特征分别表示图像在不同分辨率下的高级语义信息。具体地,作者选择了视觉骨干网络的顶部三层高层特征(而非低层特征),因为高层特征能够更好地描述语义信息,并且低层特征在计算资源上消耗较大,但对性能提升贡献有限。定义这些多尺度骨干特征为 X i r X^r_i Xir,其中 i ∈ { 1 , 2 , 3 } i \in \{1, 2, 3\} i{1,2,3},对应分辨率 H k × W k \frac{H}{k} \times \frac{W}{k} kH×kW k ∈ { 8 , 16 , 32 } k \in \{8, 16, 32\} k{8,16,32},表示特征图的不同分辨率。

3. 多尺度特征组合模块(MFC, Multi-scale Feature Combination)

HFC模块的第一步是多尺度特征组合(MFC),通过融合不同尺度的骨干特征,以增强对伪装目标的定位和语义一致性。

  • 首先,对每个特征 X i r X^r_i Xir 进行1×1卷积操作,以减少通道数,并进行5×5和7×7的卷积操作。这些不同尺寸的卷积核能够捕获不同大小的上下文信息。
  • 通过两个不同卷积分支的特征求和,合并后的特征被传递到3×3卷积层,以得到最终的组合特征 X i c X^c_i Xic
  • 组合特征在不同层级上进行上采样操作,确保高层次语义信息和低层次的细节信息能够有效结合。最后,通过一系列上采样操作,将各级特征组合为全局特征 g i g_i gi,具体计算方式如下: g 3 = X 3 c g 2 = X 2 c ⊗ UP × 2 ( g 3 ) g 1 = X 1 c ⊗ UP × 2 ( g 2 ) ⊗ UP × 4 ( g 3 ) \begin{aligned} g_3 &= X^c_3 \\ g_2 &= X^c_2 \otimes \text{UP}_{\times 2}(g_3) \\ g_1 &= X^c_1 \otimes \text{UP}_{\times 2}(g_2) \otimes \text{UP}_{\times 4}(g_3) \end{aligned} g3g2g1=X3c=X2cUP×2(g3)=X1cUP×2(g2)UP×4(g3)其中,UP表示双线性上采样操作, ⊗ \otimes 表示元素级的乘法操作, g 1 g_1 g1是最终的融合特征。

4. 附加信息与特征的结合

接下来,HFC模块将通过**附加信息生成模块(AIG)**生成的附加特征 A A A 与上述组合的图像特征进行结合,以进一步提升伪装目标的特征表示能力。具体来说,融合操作分为三个层次,分别是:

  • 第一步,将附加信息 A A A 与组合特征 g 3 g_3 g3 进行降采样,并通过3×3卷积进行结合,得到组合特征 S 3 S_3 S3
  • 第二步,将 A A A 与特征 g 2 g_2 g2 S 3 S_3 S3 结合,再次通过3×3卷积进行处理,得到组合特征 S 2 S_2 S2
  • 最后,将 A A A g 1 g_1 g1 S 2 S_2 S2 结合,得到最终的组合特征 S 1 S_1 S1,最后通过3×3卷积生成最终的融合特征 S S S S 3 = Conv3×3 ( [ D × 4 ( A ) , g 3 ] ) S 2 = Conv3×3 ( [ D × 2 ( A ) , g 2 , S 3 ] ) S 1 = Conv3×3 ( [ A , g 1 , S 2 ] ) S = Conv3×3 ( S 1 ) \begin{aligned} S_3 &= \text{Conv3×3}([D_{\times 4}(A), g_3]) \\ S_2 &= \text{Conv3×3}([D_{\times 2}(A), g_2, S_3]) \\ S_1 &= \text{Conv3×3}([A, g_1, S_2]) \\ S &= \text{Conv3×3}(S_1) \end{aligned} S3S2S1S=Conv3×3([D×4(A),g3])=Conv3×3([D×2(A),g2,S3])=Conv3×3([A,g1,S2])=Conv3×3(S1)
    其中, D × t ( A ) D_{\times t}(A) D×t(A) 表示将 A A A 进行 t t t 倍的双线性下采样, Conv3×3 \text{Conv3×3} Conv3×3 表示3×3卷积操作, [ ⋅ ] [\cdot] [] 表示特征的拼接操作。

5. 特征解耦(Decoupling)

为了进一步挖掘伪装目标的语义特征,HFC模块引入了**特征解耦(Decoupling)**机制。解耦的目的是对特征进行拆分和处理,以便对不同类型的特征进行更细粒度的探索。

  • 首先,将融合特征 S S S 解耦为三组特征 s 1 , s 2 , s 3 s_1, s_2, s_3 s1,s2,s3,每组特征经过一个卷积操作进行处理。
  • 同时, S S S 被平均池化,并通过两层卷积层处理,最后一层使用 Softmax 激活函数生成特征通道的权重 w ∈ R 1 × 1 × 3 C w \in \mathbb{R}^{1×1×3C} wR1×1×3C,这些权重用于调整每组特征的通道。
  • 将权重 w w w 拆分为 w 1 , w 2 , w 3 w_1, w_2, w_3 w1,w2,w3,分别与对应的特征 s 1 , s 2 , s 3 s_1, s_2, s_3 s1,s2,s3 进行加权相乘,形成新的加权特征。
  • 最后,将加权特征与附加信息 A A A 进一步融合,得到新的特征 d 1 , d 2 , d 3 d_1, d_2, d_3 d1,d2,d3,并通过拼接操作生成初始预测图 r 4 r_4 r4 d 1 = Conv3×3 ( [ w 1 ⊗ Conv3×3 ( s 1 ) , A ] ) d 2 = Conv3×3 ( [ w 2 ⊗ Conv3×3 ( s 2 ) , A ] ) d 3 = Conv3×3 ( [ w 3 ⊗ Conv3×3 ( s 3 ) , A ] ) \begin{aligned} d_1 &= \text{Conv3×3}([w_1 \otimes \text{Conv3×3}(s_1), A]) \\ d_2 &= \text{Conv3×3}([w_2 \otimes \text{Conv3×3}(s_2), A]) \\ d_3 &= \text{Conv3×3}([w_3 \otimes \text{Conv3×3}(s_3), A]) \end{aligned} d1d2d3=Conv3×3([w1Conv3×3(s1),A])=Conv3×3([w2Conv3×3(s2),A])=Conv3×3([w3Conv3×3(s3),A])

6. HFC模块的作用

HFC模块的核心作用在于,通过多层次、多阶段的特征融合和解耦,充分利用来自骨干网络的高层次语义信息和来自附加信息的关键视觉线索。通过这种方式,HFC模块能够提取出更加丰富和精确的伪装目标特征,最终提升模型的检测性能。

在这里插入图片描述

这张图的**Hierarchical Feature Combination (HFC)**模块是AGLNet模型的关键部分,它通过深度整合多尺度图像特征和附加线索,从而实现更精确的伪装目标检测。以下是对该模块的详细解释:

1. 模块输入

HFC模块的输入来自两个来源:

  • Backbone:从视觉骨干网络中提取的多尺度特征,表示为多层次的图像特征。
  • AIG(附加信息生成模块):生成的附加线索,例如边界、纹理、频率等附加信息。

这些输入通过两个关键步骤处理:特征组合(Combination)特征解耦(Decoupling)

2. Multi-scale Feature Combination (MFC)

图中左侧的“Multi-scale Feature Combination (MFC)”模块负责将不同分辨率的特征进行组合。MFC模块的工作流程如下:

  • 首先,通过不同的卷积操作处理来自不同尺度的特征,这些卷积核(如5×5和7×7)能够捕捉多种尺度下的图像信息。
  • MFC通过3×3卷积层进行最后的组合操作,生成统一的特征表示,用于进一步处理。
  • 这些组合后的特征为伪装目标的分割提供了更丰富的上下文信息。

3. 特征组合(Combination)

“Combination”模块的关键是将多尺度图像特征与附加信息特征进行结合。具体过程包括:

  • 将经过卷积处理的图像特征(从MFC输出)与附加信息进行拼接(Concatenation,图中用“C”表示)。
  • 这些拼接后的特征再通过卷积操作进行融合,使附加信息能够更好地引导特征学习。
  • 融合后的特征通过更多的卷积层进行精炼,形成最终的组合特征 S S S

4. 特征解耦(Decoupling)

“Decoupling”部分是特征的细粒度操作,通过特征的分组与加权操作来进一步提升模型的检测精度。

  • 首先,融合后的特征 S S S 被分割成多个组(用符号“Split”表示,图中标记为“S”)。
  • 每一组特征通过卷积层进行独立处理,以捕捉不同的特征维度或信息。
  • 通过另一个并行分支,计算特征通道的权重,这些权重通过Softmax函数生成,表示每个特征组的相对重要性。
  • 每个特征组通过权重加权,之后与附加信息特征再次结合(通过元素级相乘“⊗”表示),形成新的加权特征。

5. 输出

HFC模块的输出是经过融合和解耦的多层次特征。这些特征将传递给**校准解码器(RD)**模块,以进一步提升伪装目标分割的精度。

总结:

HFC模块通过组合解耦的双重机制,实现了对多尺度特征和附加信息的深度融合。它首先通过MFC模块整合不同尺度的图像特征,然后与附加线索结合,最后通过特征解耦进一步优化。

总结:

**分层特征组合模块(HFC)**是AGLNet的关键模块之一,它通过多层次融合图像特征和附加信息,实现了伪装目标特征的深度学习。HFC模块的设计确保了不同层次的语义信息与视觉线索能够充分整合,为伪装目标的精确检测提供了有力的支持。

Recalibration Decoder (RD)

作者详细介绍了**校准解码器(RD, Recalibration Decoder)模块的设计与功能。该模块是自适应引导学习网络(AGLNet)的最后一个关键模块,用于对从分层特征组合模块(HFC)**中得到的特征进行进一步的融合与精炼,以提高伪装目标检测的精度。RD模块通过多层次的校准机制,实现特征的深度聚合和优化。

下面是RD模块的详细解释:

1. RD模块的背景与动机

由于伪装目标的特征与背景极为相似,单纯依靠HFC模块的多层次特征融合可能仍然无法充分捕获所有伪装目标的细微特征。为此,RD模块被设计出来,通过多级校准机制进一步优化特征表达,使得模型可以更精确地定位和分割伪装目标。RD模块的目标是通过迭代的方式将特征进行多次聚合和校准,最终生成更为精确的伪装目标预测结果。

2. RD模块的核心结构

RD模块的核心组件是特征优化器(FR, Feature Refiner),该模块通过多层次的迭代操作来优化从HFC模块传递来的特征。RD模块共包含三个特征优化层,分别对应不同尺度的特征。每个特征优化层会对来自HFC模块的特征进行分割、聚合和优化。RD模块的工作流程如下:

  1. 特征输入
    在每个优化步骤中,来自HFC的骨干网络特征 X i r X^r_i Xir (不同尺度的图像特征)会作为输入,结合前一级特征优化的输出和附加信息特征 r s r_s rs 进行处理。

  2. 特征分割与聚合

    • 每个特征优化层首先将骨干特征 X i r X^r_i Xir 分割成多个子特征,并与上一级生成的预测结果 r i + 1 r_{i+1} ri+1 以及附加信息掩码 r s r_s rs 进行聚合。
    • 在分割后的每个子特征与前一级特征进行组合后,特征经过卷积操作进一步整合。
  3. 特征优化

    • 每层中的特征优化器(FR)模块会执行多次特征分割与聚合操作,以最大化每一层特征的表达能力。
    • FR模块通过多个卷积层和特征掩码操作来优化特征表达,使得特征在多次迭代过程中逐渐趋向伪装目标的正确表示。
  4. 多级校准

    • RD模块包含三个主要校准层:FR1、FR2、FR3。每个校准层分别优化不同尺度的特征,从最粗糙的高层特征到更精细的低层特征。最终的预测图 r 1 r_1 r1 是通过三级校准得到的。
    • 具体计算公式如下: r 3 = F R 3 ( X 3 r , r 4 , r s ) r 2 = F R 2 ( X 2 r , r 3 , r s ) r 1 = F R 1 ( X 1 r , r 2 , r s ) \begin{aligned} r_3 &= FR_3(X^r_3, r_4, r_s) \\ r_2 &= FR_2(X^r_2, r_3, r_s) \\ r_1 &= FR_1(X^r_1, r_2, r_s) \end{aligned} r3r2r1=FR3(X3r,r4,rs)=FR2(X2r,r3,rs)=FR1(X1r,r2,rs)其中, X 3 r , X 2 r , X 1 r X^r_3, X^r_2, X^r_1 X3r,X2r,X1r 分别是不同尺度的骨干特征, r s r_s rs 是附加信息特征, r 4 , r 3 , r 2 , r 1 r_4, r_3, r_2, r_1 r4,r3,r2,r1 是不同校准步骤中的预测图。

3. 特征优化器(FR, Feature Refiner)的细节

特征优化器(FR)是RD模块的核心组件,负责对特征进行多层次的优化。每个FR模块通过特征的分割与聚合操作,实现对特征的进一步提炼。每个FR模块的具体步骤如下:

  • 特征分割:每个骨干特征首先被分割成多个组,每组特征通过一个卷积操作生成不同的特征子集。
  • 权重生成:FR模块还包含一个并行的分支,该分支通过池化和卷积操作生成特征通道的权重,利用这些权重对每组特征进行加权,进而调节每个子特征的贡献。
  • 特征聚合:加权后的特征与附加信息进行融合,形成优化后的特征。经过多个分组和聚合操作,FR模块生成最终的预测结果。

4. 多层次校准的优点

通过多级迭代校准,RD模块能够逐层优化伪装目标的预测。较高层次的特征包含粗略的目标信息,而较低层次的特征包含更加精细的结构和纹理信息。RD模块通过结合这些不同层次的信息,确保伪装目标的预测更加准确和完整。此外,RD模块在多个层级上对特征进行校准,有助于解决伪装目标与背景高度相似的问题。

5. RD模块的整体效果

RD模块能够有效地整合骨干网络提取的多尺度特征和附加信息,在特征表达的精细度和准确度上进行多次优化。通过特征优化器(FR)的多次分割与聚合操作,RD模块能够提升伪装目标的特征表示能力,最终生成更加精确的伪装目标分割图。

总结:

**校准解码器(RD)**模块通过多层次、多步骤的校准机制,进一步优化了从HFC模块中获取的多尺度特征。通过特征的分割与聚合操作,RD模块实现了特征的逐层优化,确保伪装目标的检测更加准确。这种多层次的校准设计使得AGLNet能够在复杂的伪装背景下更好地区分目标与背景,提升检测精度。

在这里插入图片描述
在这张配图中的Recalibration Decoder (RD)模块负责对伪装目标检测的特征进行进一步的校准和优化。该模块通过多个步骤对输入特征进行深度聚合,最终生成精确的伪装目标分割结果。具体来说,RD模块的设计包括特征校准特征优化两个主要部分。以下是对RD模块的详细解释:

1. 模块输入

RD模块的输入包括从**Hierarchical Feature Combination (HFC)**模块输出的特征以及来自附加信息生成模块(AIG)的信息。这些特征通过一系列的处理步骤被进一步优化,以便生成最终的分割结果。

2. 特征校准解码(Feature Recalibration)

RD模块的核心是特征优化器(Feature Refiner, FR),该部分由三个主要子模块 F R 1 , F R 2 , F R 3 FR_1, FR_2, FR_3 FR1,FR2,FR3 组成,分别对应从不同层次输入的特征。每个子模块负责对特定层次的特征进行进一步的校准和优化。

  • 每个特征优化器(FR)模块都会处理输入特征,通过卷积操作对输入特征进行校准(图中的Conv 1×1和Conv 3×3表示卷积操作)。
  • 每一级的校准解码器都会利用之前的输出结果 r i + 1 r_{i+1} ri+1 以及输入特征进行进一步的优化。通过这种迭代优化的方式,模型能够不断提高伪装目标的检测精度。

3. 特征优化(Feature Refinement)

  • RD模块中每个特征优化器子模块都通过多个卷积层、池化层和权重生成模块来调整特征,使得模型能够更好地捕捉伪装目标的边界和内部结构。
  • 图中的 τ i \tau_i τi 表示从前一层输出的特征,特征经过卷积后被进一步处理(使用了Split操作,图中标记为“S”)。
  • 每个特征优化器通过自适应权重调整(由 M i k M^k_i Mik 表示),对不同层次的特征进行加权处理,最后通过卷积生成优化后的特征图。

4. 输出(Output)

RD模块的最终输出是经过多个级别特征校准优化后的伪装目标分割结果。该结果通过特征优化器层逐层输出,最终生成精确的目标预测图。

5. 图中符号解释

  • S S S:表示特征的分割操作,即将特征图分成多个子特征进行独立处理。
  • ⊗ \otimes :表示元素级别的乘法,用于特征与权重的加权计算。
  • ⨁ \bigoplus :表示元素级别的加法,用于融合多个特征。
  • Conv 1×1Conv 3×3:分别表示1×1卷积和3×3卷积操作,用于调整特征的通道数和空间特征。

6. 特征校准的迭代机制

  • RD模块通过多次迭代优化,使得每一层的特征都能够逐步被校准和增强。较高层的特征粗略地捕捉了目标的大致形状,而较低层的特征则进一步精细化目标的边界和细节。
  • 通过多次迭代,RD模块能够从全局和局部层面提升伪装目标的检测能力。

总结:

**Recalibration Decoder (RD)**模块通过多层次、多步骤的特征校准和优化,使得模型能够逐层精细化伪装目标的预测。通过每个特征优化器(FR)模块,RD模块逐渐提升分割的精度,最终生成伪装目标的精确预测图。这一设计使得AGLNet在复杂背景下的伪装目标检测任务中具有出色的表现。

Loss function

作者详细介绍了**损失函数(Loss Function)**的设计。损失函数的设计对于训练模型非常关键,它直接决定了模型的优化目标以及最终的检测性能。在AGLNet中,损失函数结合了附加信息生成的损失和伪装目标检测的损失,以确保模型能够有效地学习伪装目标特征,并进行准确的分割。

下面是该部分的详细解释:

1. 损失函数的总体结构

AGLNet的损失函数由两部分组成:

  • 附加信息生成损失:用于监督附加信息生成模块(AIG)的训练,使得模型能够生成精确的附加信息(如边界、纹理、边缘和频率等)。
  • 伪装目标检测损失:用于监督模型对伪装目标进行检测和分割的能力,确保模型能够生成准确的分割图。

这两部分损失的结合有助于同时优化附加信息生成和伪装目标分割任务。

2. 附加信息生成损失

附加信息生成损失主要用于监督AIG模块输出的附加信息预测结果 r s r_s rs。该损失通过最小化模型预测的附加信息 r s r_s rs 与真实的附加信息标签 D s D_s Ds 之间的误差来实现。这部分损失采用了均方误差(MSE, Mean Squared Error),公式如下:
L MSE = 1 N ∑ i = 1 N ( r s ( i ) − D s ( i ) ) 2 L_{\text{MSE}} = \frac{1}{N} \sum_{i=1}^{N} (r_s^{(i)} - D_s^{(i)})^2 LMSE=N1i=1N(rs(i)Ds(i))2其中, N N N 表示样本的数量, r s ( i ) r_s^{(i)} rs(i) 是模型预测的附加信息, D s ( i ) D_s^{(i)} Ds(i) 是对应的真实标签。

通过最小化这个损失,AIG模块能够学习到更加准确的附加信息特征,例如边界、纹理或频率,从而为后续的伪装目标检测提供更好的指导。

3. 伪装目标检测损失

伪装目标检测损失用于监督模型生成的每一层分割预测图 r i r_i ri 与真实伪装目标标签 GT \text{GT} GT 之间的差异。为了提升分割的准确性,作者在伪装目标检测损失中使用了两种损失函数:

  • 加权交叉熵损失(BCE, Binary Cross-Entropy Loss):用于衡量模型预测的每个像素是否与真实标签一致。BCE损失是分割任务中的常用损失函数,其公式为:
    L BCE ( r i , GT ) = − 1 N ∑ i = 1 N [ GT i log ⁡ ( r i ) + ( 1 − GT i ) log ⁡ ( 1 − r i ) ] L_{\text{BCE}}(r_i, \text{GT}) = - \frac{1}{N} \sum_{i=1}^{N} [\text{GT}_i \log(r_i) + (1 - \text{GT}_i) \log(1 - r_i)] LBCE(ri,GT)=N1i=1N[GTilog(ri)+(1GTi)log(1ri)]其中, r i r_i ri 表示模型生成的分割图, GT i \text{GT}_i GTi 是对应的真实分割标签。

  • 加权IoU损失(IoU, Intersection over Union Loss):用于衡量模型预测的分割区域与真实目标分割区域之间的重叠程度。IoU损失通过计算预测结果与真实结果的交集与并集之比来衡量其相似性,公式为: L IoU ( r i , GT ) = 1 − ∣ r i ∩ GT ∣ ∣ r i ∪ GT ∣ L_{\text{IoU}}(r_i, \text{GT}) = 1 - \frac{|r_i \cap \text{GT}|}{|r_i \cup \text{GT}|} LIoU(ri,GT)=1riGTriGT其中, ∣ r i ∩ GT ∣ |r_i \cap \text{GT}| riGT 表示预测结果与真实标签的重叠区域, ∣ r i ∪ GT ∣ |r_i \cup \text{GT}| riGT 表示预测结果与真实标签的联合区域。

这两种损失函数分别从不同的角度优化模型的分割能力,BCE关注每个像素的分类精度,而IoU关注整体分割区域的相似性。通过组合这两种损失,模型能够在精细化分割和整体区域一致性上得到更好的优化。

4. 总体损失函数

AGLNet的最终损失函数 L total L_{\text{total}} Ltotal 是附加信息生成损失和伪装目标检测损失的加权组合。为了优化模型生成的所有分割预测图 r 1 , r 2 , r 3 r_1, r_2, r_3 r1,r2,r3,作者将每一层分割预测图都纳入损失函数的计算。总体损失函数的公式如下:
L total = ∑ i = 1 3 ( L BCE ( r i , GT ) + L IoU ( r i , GT ) ) + L MSE ( r s , D s ) L_{\text{total}} = \sum_{i=1}^{3} \left( L_{\text{BCE}}(r_i, \text{GT}) + L_{\text{IoU}}(r_i, \text{GT}) \right) + L_{\text{MSE}}(r_s, D_s) Ltotal=i=13(LBCE(ri,GT)+LIoU(ri,GT))+LMSE(rs,Ds)其中:

  • r i r_i ri 是模型在不同层次上生成的分割预测图, GT \text{GT} GT 是真实分割标签。
  • L BCE L_{\text{BCE}} LBCE 是每层的加权交叉熵损失, L IoU L_{\text{IoU}} LIoU 是每层的加权IoU损失。
  • L MSE L_{\text{MSE}} LMSE 是附加信息生成损失,用于监督AIG模块。

5. 损失函数的设计优势

该损失函数的设计有以下几个优势:

  1. 多层次优化:通过在模型的每一层分割预测图上计算损失,确保了不同尺度的特征都能得到有效优化。这有助于提升模型对不同大小和形状伪装目标的检测能力。
  2. 组合多种损失:通过结合BCE损失和IoU损失,模型不仅能在像素级别上获得精确预测,还能在目标区域的一致性上进行优化。这种结合使得模型既能处理边界模糊的目标,也能确保分割区域的完整性。
  3. 附加信息监督:通过加入附加信息生成损失,模型在训练过程中能够学习到更好的辅助线索(如边界、纹理、频率等),为伪装目标的检测提供额外的支持。

总结:

AGLNet的损失函数结合了附加信息生成损失伪装目标检测损失,通过对不同层次的分割预测和附加信息进行监督,确保模型能够有效地学习伪装目标特征。这种设计使得模型在伪装目标检测任务中具备了更强的精度和鲁棒性,特别是在面对复杂的伪装场景时,能够更好地区分目标和背景。

Implementation Details

在《IV. EXPERIMENTS》部分的Implementation Details章节中,作者详细描述了在训练和测试**自适应引导学习网络(AGLNet)**时的实现细节。这部分内容包括了训练过程中使用的框架、优化器、学习率调度、训练时的参数设置和环境,以及输入图像的处理和数据增强策略等信息。下面是对这部分内容的详细解释:

1. 实验框架和工具

所有的实验都在PyTorch框架下实现。PyTorch是一个开源的深度学习库,广泛应用于计算机视觉任务。通过使用PyTorch,作者能够灵活地设计、训练和测试AGLNet模型,并且可以方便地与其他现有的计算机视觉方法进行对比。

2. 视觉骨干网络(Backbone Network)

在AGLNet中,作者使用了EfficientNet-B4作为视觉骨干网络。EfficientNet是一种非常高效的卷积神经网络架构,具有较少的参数和计算复杂度,但在图像分类和其他计算机视觉任务中表现优异。EfficientNet的设计原理是通过复合缩放方法对网络宽度、深度和输入分辨率进行平衡,从而在性能和效率之间取得良好平衡。

  • EfficientNet-B4 是EfficientNet系列中的一种规模适中的变体,具有较高的表示能力,适合复杂的伪装目标检测任务。
  • 骨干网络预先在ImageNet数据集上进行训练,以便在AGLNet中能够更好地提取图像特征。

3. 优化器

为了训练AGLNet模型,作者采用了Adam优化器。Adam是一种广泛使用的优化算法,结合了动量和自适应学习率的思想,在大多数深度学习任务中都能表现良好。它的优点在于能够快速收敛,并且在不同类型的任务中具有鲁棒性。

  • 学习率初始设置为 1e-4(0.0001),这在大多数深度学习任务中是一个较为常见的初始学习率。
  • Adam优化器的学习率根据**余弦退火策略(Cosine Annealing Strategy)**进行调整。这个策略通过周期性地调整学习率,从而帮助模型更好地跳出局部最优,并找到全局最优解。
    • 学习率的调整周期为40个epoch,即每经过40个epoch,学习率会重新调整到一个较低值。
    • 最低学习率设置为 1e-5,以确保训练后期仍然能够保持一定的学习速度,避免过早停止学习。

4. 训练设置

AGLNet模型在一个NVIDIA GeForce RTX 3090 GPU上进行训练,这是一款性能强大的显卡,适合大规模的深度学习训练任务。训练过程的详细参数设置如下:

  • 训练时长:总共训练了100个epoch,这是一个适中的训练时长,能够确保模型有足够的时间进行学习,并收敛到较好的性能。
  • 批量大小(Batch Size):每次训练的批量大小为8。批量大小决定了每次参数更新时使用的样本数量。作者选择的8是一个相对较小的值,适合在GPU显存有限的情况下进行训练。
  • 训练时间:在上述设置下,整个训练过程大约需要9小时。这显示出AGLNet模型尽管性能强大,但计算成本适中,可以在合理的时间内完成训练。

5. 输入图像的预处理

为了使不同尺寸的图像能够适应模型的输入要求,作者对所有输入图像进行了尺寸调整(Resizing)

  • 输入图像的尺寸被调整为 704×704 像素。这个分辨率在计算成本和图像细节保留之间取得了良好的平衡,能够确保模型既能处理大尺寸图像中的目标,又不会引入过多的计算负担。
  • 图像的调整使用双线性插值(Bilinear Interpolation),这种插值方法能够平滑地调整图像尺寸,减少因插值导致的图像失真。

6. 数据增强(Data Augmentation)

为了提升模型的泛化能力,作者对训练数据进行了数据增强。数据增强是指对训练图像进行随机变换,以增加数据的多样性,从而提高模型在实际应用中的鲁棒性。使用的数据增强策略包括:

  • 随机翻转(Random Flipping):随机对图像进行左右或上下翻转,这有助于模型学习不受目标方向影响的特征。
  • 随机裁剪(Random Cropping):随机从图像中裁剪出一个子区域,用于训练。这种方式能让模型学习到局部特征,同时增加训练数据的多样性。
  • 颜色抖动(Color Jittering):随机改变图像的亮度、对比度、饱和度等颜色属性,这可以增强模型对颜色变化的鲁棒性。

7. 与竞争方法的对比

为了验证AGLNet的性能,作者将AGLNet与**20种最近的最先进方法(state-of-the-art methods)**进行了对比实验。这些方法代表了当前伪装目标检测领域的领先成果,通过与这些方法的对比,能够直观地展示AGLNet在伪装目标检测任务中的优势。

总结:

Implementation Details部分详细描述了AGLNet模型在训练和测试过程中的所有实现细节,包括使用的PyTorch框架、EfficientNet-B4骨干网络、Adam优化器、学习率调整策略、训练设置、输入图像的预处理方法以及数据增强策略。这些细节确保了模型在伪装目标检测任务中的高效训练和良好性能,同时为实验结果的可复现性提供了必要的信息。

Results

在这里插入图片描述

Ablation Study

作者对各个模块进行了消融实验,并且将消融实验结果进行了各种可视化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419677.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Bev pool 加速(2):自定义c++扩展

文章目录 1. c++扩展2. 案例2.1 案例12. 1.1 代码实现(1) c++ 文件(2) setup.py编写(3) python 代码编写2.1 案例1在bevfusion论文中,将bev_pooling定义为view transform中的效率瓶颈,bevfusion 主要就是对bev_pooling进行了加速,使得视图转换的速度提高了40倍,延迟从500ms…

假期学习-- iOS 通知详解

iOS 通知详解 数据结构 从我们之前使用通知的流程和代码来看,通知其实就是一个单例,方便随时访问。 NSNotificationCenter:消息中心 这个单例类中主要定义了两个表,一个存储所有注册通知信息的表的结构体,一个保存…

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息&#xff0…

程序员要失业了,一行代码没写,就完成了一个个人简历网页模版的创建

今天发现了一个好用的工——Cursor, 真的一行代码都没有写,完成了一个个人简历网页的创建,快来体验一下吧! 官网: https://www.cursor.com/ 价格(近乎免费) 先来看一下价格,cursor 非免费,但是…

[数据集][目标检测]肺炎检测数据集VOC+YOLO格式4983张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4983 标注数量(xml文件个数):4983 标注数量(txt文件个数):4983 标注…

springboot个性化大学生线上聊天交友系统

基于springbootvue实现的个性化大学生线上聊天交友系统 (源码L文ppt)4-017 4系统设计 4.1 软件功能模块设计 个性化大学生线上聊天交友分为两个模块,分别是管理员功能模块和用户功能模块。主要功能模块包括&#xff…

如何实现输入手机号查询座位号或桌号?

如何通过关键词查询信息? 一、简介 在大型活动中,如公司年会,快速定位座位或桌号对于参与者来说非常重要。本文将指导您如何使用云分组小程序,通过输入手机号来查询座位号或桌号,确保每位参与者都能轻松找到自己的座位…

uniapp交互反馈

页面交互反馈可以通过:uni.showToast(object)实现,常用属性有 ioc值说明 值说明success显示成功图标,此时 title 文本在小程序平台最多显示 7 个汉字长度,App仅支持单行显示。error显示错误图标,此时 title 文本在小程序平台最多显示 7 个汉字…

51单片机个人学习笔记11(AT24C02-I2C总线)

前言 本篇文章属于STC89C52单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 [1-1] 课程简介_哔哩…

【Qt| 入门知识】怎样创建一个最简单 Qt 界面程序

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 2024-09-09 …

开启计算机的ssh 22端口

当我们使用一台服务器的时候,经常需要开启ssh 服务,有些系统没有默认开启服务,需要需要我们做一些配置,以下是完整配置过程和错误解决方法: 以下过程适合于当我们购买一台云主机时候配置远程登录 开启本地计算机的22…

孕期全攻略·如何成为一位准爸爸准妈妈

【智慧孕育,科学护航】 步入孕期,每一位准妈妈、准爸爸都渴望给予宝宝最好的开始。《孕期全攻略》汇集权威专家建议,为您打造一站式智慧孕育指南。从孕期各阶段的身体变化解析,到孕期疾病的预防与应对;从科学胎教方法&…

【Java】解析方法的调用关系

目录 一、方法的定义二、方法的声明格式三、方法的调用四、特殊方法:程序入口main方法五、方法的局部变量六、类的静态变量七、类的静态方法八、方法的传参九、方法的重载 一、方法的定义 方法就是 将功能重复的代码封装成一段独立的代码,通过调用方法的…

【网络】UDP协议的简单使用

目录 服务器 客户端 测试 code for Udp_echo_serve Udp_dict_serve UDP是基于socket(基于IP和port进行通信就叫做socket通信)进行网络通信的,那我们这篇博客就来介绍一下基于UDP通信的基本流程,先让服务端和客户端进行简单的…

深入探索Unity协程:揭开CSharp迭代器背后的神秘面纱

协程是一种特殊类型的迭代器方法,允许你在多个帧之间分段执行代码。可以用来处理时间延迟、异步操作和顺序执行的任务,而不阻塞主线程。Unity协程的实现依赖于C#语言提供的迭代器相关的语言特性,所以想要弄清楚Unity协程的底层原理&#xff0…

单例的饿汉式,懒汉式的线程安全问题

1 单例的饿汉式 对象在类加载的时候就创建了,线程安全,速度块,但是浪费空间, public class Hungry {//唯一对象private static final Hungry HUNGRY new Hungry();byte byte1[]new byte[1024];byte byte2[]new byte[1024];byte…

Java的时间复杂度和空间复杂度和常见排序

目录 一丶时间复杂度 二丶空间复杂度 三丶Java常见排序 1. 冒泡排序(Bubble Sort) 2.插入排序(Insertion Sort) 3.希尔排序(Shell Sort) 4.选择排序(Selection Sort) 5.堆排序&am…

qmt量化交易策略小白学习笔记第61期【qmt编程之期权行情数据--get_market_data_ex函数】

qmt编程之获取期权数据 期权行情数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 获取期权行情数据 获取期权最新数据,首先需要进行数据订阅。完成合约订阅后,用g…

【OpenCV】灰度化处理

文章目录 1. 图像灰度化处理对比2. 代码示例3. 二值化处理 1. 图像灰度化处理对比 2. 代码示例 #include <opencv2/opencv.hpp> using namespace cv;int main() {Mat currentImage imread("path_to_image.jpg"); // 读取彩色图像Mat grayImage;// 将彩色图像…

Rust的常数、作用域与所有权

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学&#xff0c;之一 -CSDN博客 Rust到底值不值得学&#xff0c;之二-CSDN博客 Rust的数据类型-CSDN博客 3.7 常…