当前位置: 首页 > article >正文

《StyTr²:基于 Transformer 的图像风格迁移》学习笔记

paper:2105.14576

GitHub:diyiiyiii/StyTR-2: StyTr2 : Image Style Transfer with Transformers

目录

摘要:

1、介绍

2、相关工作

2.1  图像风格迁移:

2.2 Transformer 在视觉任务中的应用:

2.3 位置编码:

3、方法

3.1 内容感知位置编码(CAPE)

3.2  风格迁移 Transformer

3.3 网络优化(Network Optimization)

4、实验

4.1  实现细节 (Implementation Details)

4.2 对比实验

4.3  内容泄漏分析 (Analysis of Content Leak)

4.4 CAPE 分析 (Analysis of CAPE)


摘要:

图像风格迁移的目标是渲染一幅图像,使其具有由风格参考引导的艺术特征,同时保持原始内容。由于卷积神经网络(CNN)具有局部性,提取和维护输入图像的全局信息变得困难。因此,传统的神经风格迁移方法面临着内容表示偏差的问题。为了应对这一关键问题,本文提出了一种基于Transformer 的图像风格迁移方法,称为StyTr²。与其他视觉任务的视觉变换器不同,StyTr²包含两个不同的 Transformer 编码器,分别生成内容和风格的特定领域序列。在这两个编码器之后,采用了多层变换器解码器,根据风格序列对内容序列进行风格化。此外,本文分析了现有位置编码方法的不足,并提出了一种内容感知位置编码(CAPE),该方法具有尺度不变性,更适合图像风格迁移任务。通过定性和定量实验,结果表明,所提出的StyTr²方法在效果上优于当前最先进的基于CNN和基于流的方法。

1、介绍

图像风格迁移是一个有趣且实用的研究主题,它可以使用参考的风格图像渲染内容图像。基于纹理合成的传统风格迁移方法 [1], [2] 可以生成生动的风格化图像,但由于笔触外观和绘画过程的复杂性,它们计算量较大。此后,研究人员将焦点转向基于卷积神经网络(CNN)的神经风格迁移方法。基于优化的风格迁移方法 [3]–[5] 通过迭代的方式,使用学习到的风格表示渲染输入的内容图像。随着编码器-迁移-解码器的流程,任意风格迁移网络 [6]–[14] 通过对内容图像和风格图像的二阶统计量对齐来优化,并能够以前馈方式高效生成风格化结果。然而,由于模型在内容和风格之间关系建模能力的有限性,这些方法在某些情况下无法获得令人满意的结果。为了解决这个问题,最近的一些方法 [15]–[19] 引入了自注意力机制,以改进风格化结果。

前述风格迁移方法都利用CNN学习风格和内容表示。由于卷积操作的感受野有限,CNN在没有足够层数的情况下无法捕捉到长程依赖关系。然而,网络深度的增加可能会导致特征分辨率和细节的丢失 [20]。缺失的细节可能会损害风格化结果,尤其是在内容结构保持和风格展示方面。如图1(a)所示,在卷积特征提取的过程中,一些细节被忽略。An等人 [21] 最近通过可视化风格化过程中的内容泄漏,展示了典型的基于CNN的风格迁移方法在内容表示上存在偏差,即经过多次风格化操作后,输入内容的提取结构会发生剧烈变化。

随着 Transformer 在自然语言处理(NLP)中的成功应用,Transformer 架构已被广泛采用于各种计算机视觉任务。将 Transformer 应用于计算机视觉的魅力体现在两个方面。首先,Transformer 通过自注意力机制可以自由地学习输入的全局信息。因此,在每一层中都可以轻松获得对整体的理解。第二,Transformer 架构可以建模输入形状之间的关系 [23],不同的层次提取相似的结构信息 [24](见图1(b))。因此,变换器具有强大的表示能力,能够精确捕捉内容表示,避免丢失细节。因此,生成的结构可以很好地保持。

在这项工作中,我们的目标是消除基于CNN的风格迁移方法中的偏差表示问题,并提出了一种新的图像风格迁移 Transformer 框架,称为StyTr²。与原始 Transformer 不同,我们在StyTr²框架中设计了两个基于 Transformer 的编码器来获取领域特定的信息。接着,使用 Transformer 解码器来逐步生成图像块的输出序列。此外,针对为NLP提出的位置编码方法,我们提出了两个考虑因素

(1)不同于按逻辑排列的句子,图像序列的标记与图像内容的语义信息相关;

(2)对于风格迁移任务,我们的目标是生成任意分辨率的风格化图像。

图像分辨率的指数级增加将导致位置编码的显著变化,进而导致位置偏差和较差的输出质量。一般来说,针对视觉任务所需的位置编码应当依赖于输入内容,并对图像缩放变换不敏感。因此,我们提出了一种内容感知位置编码方案(CAPE),它基于图像语义特征学习位置编码,并动态扩展位置以适应不同的图像大小。

总之,我们的主要贡献包括:

  • 提出了一个基于 Transformer 的风格迁移框架StyTr²,用于生成具有良好保留输入内容图像结构和细节的风格化结果。
  • 提出了一个内容感知的位置编码方案,它对尺度具有不变性,适用于风格迁移任务。
  • 通过综合实验表明,StyTr²优于基准方法,能够获得理想的内容结构和风格模式,并取得出色的结果。

2、相关工作

2.1  图像风格迁移:

Gatys等人 [3] 发现CNN中的层级结构可以用来提取图像内容结构和风格纹理信息,并提出了一种基于优化的方法来迭代生成风格化图像。一些方法 [25], [26] 采用了端到端模型,以实现针对特定风格的实时风格迁移。为了更高效的应用,[27]–[29] 将多种风格结合到一个模型中,并取得了出色的风格化效果。近年来,任意风格迁移(arbitrary style transfer)引起了更多的关注。Huang等人 [6] 提出了自适应实例归一化(AdaIN),将内容的均值和方差替换为风格的均值和方差。AdaIN被广泛应用于图像生成任务 [10], [11], [14], [30], [31],用于融合内容和风格特征。Li等人 [7] 设计了一个白化与着色转换(WCT)来对齐内容和风格特征的二阶统计量。此外,许多方法 [21], [32], [33] 也致力于在保证效率的前提下促进生成效果。基于CNN模型,[15]–[17], [19], [34] 将自注意力引入到编码器-迁移-解码器框架中,以实现更好的特征融合。Chen等人 [35] 提出了内部-外部风格迁移算法(IEST),其中包含两种类型的对比损失,可以产生和谐且令人满意的风格化效果。然而,现有的编码器-迁移-解码器风格迁移方法无法处理长程依赖,可能导致细节丢失。

2.2 Transformer 在视觉任务中的应用:

作为递归神经网络(RNN)和卷积神经网络(CNN)的替代,Transformer [22] 最初是为机器翻译任务提出的,并且已广泛应用于各种NLP任务 [36]–[41]。受到Transformer  在NLP中的突破性成功启发,许多研究者为各种图像/视频相关任务开发了视觉Transformer  [42],包括目标检测 [43]–[45],语义分割 [46], [47],图像分类 [48]–[52],图像处理与生成 [20], [50], [53]。与全卷积网络相比,基于Transformer  的网络通过自注意力机制能够捕捉输入图像的长期依赖。在本文中,我们为风格迁移任务引入了基于Transformer  的结构,可以视为图像块的序列到序列生成。

2.3 位置编码:

位置编码通常用于基于Transformer  的模型中,以提供位置信息。位置编码有两种类型:功能性位置编码和参数化位置编码。功能性位置编码是通过预定义函数(如正弦函数)来计算的 [22]。参数化位置编码则是通过模型训练学习的 [38]。为了确保 Transformer  的平移不变性,相对位置编码 [54]–[57] 考虑了图像序列中标记之间的距离。[58] 和 [59] 进一步将位置编码引入到基于CNN的模型中,作为空间归纳。在本文中,我们提出了一种内容感知的位置编码机制,它具有尺度不变性,更适合图像生成任务。

3、方法

为了利用 Transformer 捕捉图像特征长距离依赖的能力 进行风格迁移,我们将该问题建模为 序列化的 patch 生成任务
给定一个 内容图像 I_c \in \mathbb{R}^{H \times W \times 3} 和一个 风格图像 I_s \in \mathbb{R}^{H \times W \times 3} ,我们将两张图像切分成若干 小块(patch)(类似 NLP 任务中的 token),并使用 线性投影层 将输入 patch 投影为 顺序特征嵌入 E 

E \in \mathbb{R}^{L \times C}

其中:

  • L = \frac{HW}{m^2} 是序列长度( m=8 是 patch 尺寸)。
  • C  是特征维度。

 

3.1 内容感知位置编码(CAPE)

在 Transformer 结构中,位置编码(Positional Encoding, PE) 是必需的,它帮助模型获取 结构信息
根据 [22] 的方法,第 i 个 patch 和第 j 个 patch 的注意力得分计算如下

A_{ij} = ((\varepsilon _i + P_i) W_q)^T ((\varepsilon _j + P_j) W_k)

展开后:

A_{ij} = W_q^T \varepsilon _i^T \varepsilon _j W_k + W_q^T \varepsilon _i^T P_j W_k + W_q^T P_i^T \varepsilon _j W_k + W_q^T P_i^T P_j W_k

其中:

  • W_q​ 和 W_k 是查询和键的参数矩阵。
  • P_i 代表 第 i 个 patch 的一维位置编码

二维情况 下,patch 之间的相对关系由以下公式描述:

P(x_i, y_i)^T P(x_j, y_j) = \sum_{k=0}^{d/4 - 1} [\cos(w_k (x_j - x_i)) + \cos(w_k (y_j - y_i))]

其中:

  • w_k = 1 / 10000^{2k / 128}d=512

该公式表明:

  • 传统 PE 仅依赖于 patch 之间的空间距离,即 位置越近,编码越相似
  • 然而,在风格迁移任务中,我们希望 内容相似的 patch 具有相似的风格迁移结果
    例如,在 右图 3(a) 中
    • 红色 patch绿色 patch 之间的距离 d((x_0, y_3), (x_1, y_3)) 很小。
    • 红色 patch青色 patch 之间的距离 d((x_0, y_3), (x_3, y_3))较大。
    • 但我们实际上希望 内容相似的 patch 具有更接近的风格迁移结果

此外:

  • 传统 PE 依赖固定的正弦编码,当输入图像的尺寸 指数级扩展 时,patch 之间的相对距离会剧烈变化,使得 PE 无法适用于多尺度视觉任务

为了应对上述问题,我们提出了一种 内容感知位置编码(CAPE), 对尺度变化具有不变性(scale-invariant)更适用于风格迁移任务

传统正弦位置编码(Sinusoidal PE) 仅考虑 patch 之间的 几何相对距离 不同,CAPE 结合了图像内容信息

方法:

(1)固定大小的 PE 表示

设定一个固定大小的n \times n  位置编码矩阵(实验中 n=18)。这样,即使输入图像缩放,也能保持 相对位置关系稳定

(2)PE 重新缩放到对应尺寸

对于输入图像 I \in \mathbb{R}^{H \times W \times 3} ,将n \times n 位置编码 重新缩放为 \frac{H}{m} \times \frac{W}{m}

P_L=F_{pos}(AvgPool_{n \times n}(E))

其中:

\text{AvgPool}_{n \times n} :对特征 E 进行 平均池化

F_{pos}:使用 1×1 可学习卷积 生成 新的 PE

(3) 通过插值计算最终 PE

最终,每个 patch 的 内容感知位置编码 计算如下:

P_{CA}(x, y) = \sum_{k=0}^{s} \sum_{l=0}^{s} (a_{kl} P_L(x_k, y_l))

其中:

a_{kl} 是插值权重。

s 是 patch 邻域大小。

(4) 最终 PE 计算

最后,将 CAPE 加入 patch 特征

 E'_i = E_i + P_{CA}(x, y)

3.2  风格迁移 Transformer

Transformer 编码器

我们通过基于 Transformer 的结构来学习序列化的视觉表示,从而捕获图像块之间的长距离依赖关系。不同于其他视觉任务 [43, 45, 53],风格迁移任务的输入来自两个不同的域,分别对应自然图像和艺术绘画。因此,StyTr² 采用了两个 Transformer 编码器来分别编码不同域的特征,并在后续阶段将一个域的序列转换到另一个域。

给定输入内容序列的嵌入表示:

Z_c = \{\varepsilon _{c1} + P_{CA1}, \varepsilon _{c2} + P_{CA2}, \dots, \varepsilon _{cL} + P_{CAL}\}

我们首先将其输入 Transformer 编码器。编码器的每一层由一个多头自注意力(MSA)模块和一个前馈网络(FFN)组成。输入序列被编码成查询(Q)、键(K)和值(V):

Q = Z_c W_q, \quad K = Z_c W_k, \quad V = Z_c W_v

其中,W_q, W_k, W_v \in \mathbb{R}^{C \times d_{head}}。然后,多头注意力计算如下:

F_{\text{MSA}}(Q, K, V) = \text{Concat}(\text{Attention}_1(Q, K, V), \dots, \text{Attention}_N(Q, K, V)) W_o

其中,W_o \in \mathbb{R}^{C \times C} 为可学习参数,N 为注意力头的数量,d_{head} = \frac{C}{N}​。残差连接被用于获得编码后的内容序列:

Y'_c = F_{\text{MSA}}(Q, K, V) + Q

Y_c = F_{\text{FFN}}(Y'_c) + Y'_c

其中,前馈网络(FFN)定义如下:

F_{\text{FFN}}(Y'_c) = \max(0, Y'_c W_1 + b_1) W_2 + b_2

并且在每个块后都会应用层归一化(Layer Normalization,LN)。

类似地,输入风格序列的嵌入:

Z_s = \{\varepsilon _{s1}, \varepsilon _{s2}, \dots, \varepsilon _{sL}\}

按照相同的计算过程被编码为序列 Y_s ​,不同之处在于风格输入不考虑位置编码(positional encoding),因为最终输出不需要保留风格输入的结构信息。

 Transformer 解码器

Transformer 解码器的作用是根据编码后的风格序列 Y_s  对编码后的内容序列Y_c 进行转换。与自然语言处理任务中的自回归(auto-regressive)过程不同,我们一次性输入所有序列化的图像块来预测最终结果。

Figure 3(a) 所示,每个 Transformer 解码器层包含 两个多头自注意力(MSA)层和一个前馈网络(FFN)。解码器的输入包括编码后的内容序列:

\hat{Y_c} = \{Y_{c1} + P_{CA1}, Y_{c2} + P_{CA2}, \dots, Y_{cL} + P_{CAL}\}

以及风格序列:

Y_s = \{Y_{s1}, Y_{s2}, \dots, Y_{sL}\}

我们使用内容序列生成查询(Q),使用风格序列生成键(K)和值(V):

Q = \hat{Y_c }W_q, \quad K = Y_s W_k, \quad V = Y_s W_v

Transformer 解码器的输出序列 X 计算如下:

X'' = F_{\text{MSA}}(Q, K, V) + Q

X' = F_{\text{MSA}}(X'' + P_c, K, V) + X''

X = F_{\text{FFN}}(X') + X'

每个块后同样应用层归一化(LN)。

 CNN 解码器

Transformer 的输出序列 X 形状为\frac{H W}{64} \times C ,而不是直接对其进行上采样来构建最终结果,我们采用了一个 三层 CNN 解码器 来对 Transformer 解码器的输出进行细化,类似于 [46] 的方法。

对于每一层,我们使用以下一系列操作来扩展尺度:

3 \times 3 \text{ Conv} + \text{ReLU} + 2\times \text{Upsample}

最终,我们可以获得分辨率为 H \times W \times 3 的最终风格迁移结果。

3.3 网络优化(Network Optimization)

生成的结果应保持原始内容结构,并符合参考风格模式。因此,我们构建了两种不同的感知损失(perceptual loss)来衡量输出图像I_o 与输入内容图像I_c之间的内容差异,以及I_o 与输入风格参考图像 I_s 之间的风格差异。

我们使用经过预训练的 VGG 模型提取特征,构造内容损失和风格损失,方法参照 [6] 和 [21]。

1. 内容感知损失(Content Perceptual Loss)

内容损失 L_c 定义如下:

L_c = \frac{1}{N_l} \sum_{i=0}^{N_l} || \phi_i(I_o) - \phi_i(I_c) ||_2

其中,\phi_i(\cdot) 表示 VGG19 预训练网络的第 i  层提取的特征,N_l 是用于计算损失的网络层数。

2. 风格感知损失(Style Perceptual Loss)

风格损失 L_s 定义如下:

L_s = \frac{1}{N_l} \sum_{i=0}^{N_l}( || \mu(\phi_i(I_o)) - \mu(\phi_i(I_s)) ||_2 + || \sigma(\phi_i(I_o)) - \sigma(\phi_i(I_s)) ||_2

其中:

  • \mu(\cdot)  和 \sigma(\cdot) 分别表示从 VGG19 提取的特征的均值和标准差。

3. 身份损失(Identity Loss)

为了学习更丰富且更准确的内容和风格表示,我们采用身份损失 [15]。具体来说,我们输入两个相同的内容(或风格)图像到 StyTr2 网络,期望生成的输出 I_{cc} (或 I_{ss} ​)应该与输入图像I_c (或 I_s )一致。因此,我们计算两个身份损失项来衡量 I_c(或 I_s )与I_{cc} (或 I_{ss} ​)之间的差异:

L_{id1} = || I_{cc} - I_c ||_2 + || I_{ss} - I_s ||_2

L_{id2} = \frac{1}{N_l} \sum_{i=0}^{N_l} || \phi_i(I_{cc}) - \phi_i(I_c) ||_2 + || \phi_i(I_{ss}) - \phi_i(I_s) ||_2

4. 总损失函数(Total Loss)

整个网络通过最小化以下目标函数进行优化:

L = \lambda_c L_c + \lambda_s L_s + \lambda_{id1} L_{id1} + \lambda_{id2} L_{id2}

其中,超参数设置如下:

\lambda_c = 10, \quad \lambda_s = 7, \quad \lambda_{id1} = 50, \quad \lambda_{id2} = 1

这些超参数用于平衡不同损失项的影响,以避免数值尺度差异过大带来的影响。

4、实验

4.1  实现细节 (Implementation Details)

  • 数据集: 我们使用 MS-COCO [60] 作为内容数据集,WikiArt [61] 作为风格数据集。
  • 训练阶段: 所有图像随机裁剪至固定分辨率 256×256;在测试时,支持任意图像分辨率。
  • 优化器: 采用 Adam 优化器 [62],学习率设置为 0.00005,使用热启动调整策略 [63]。
  • 批量大小: 设置为 8,网络训练 160,000 次迭代。

4.2 对比实验

我们将方法与 AdaIN [6]、Avater [64]、SANet [15]、AAMS [18]、MAST [16]、MCC [17]、ArtFlow [21]、AdaAttN [19]、IEST [35] 和 StyleFormer [34] 进行比较。

  • 方法背景:

    • AdaIN, Avater, SANet, AAMS 和 MAST 是基于 CNN 的图像风格化方法。
    • MCC [17] 是一种视频风格转移方法,但也可以应用于图像,并且不会损害生成效果。
    • ArtFlow [21] 设计了基于流的网络以最小化图像重建误差和恢复偏差。
    • AdaAttN [19] 在每个点上执行注意力归一化,以实现特征分布对齐。
    • IEST [35] 结合了对比学习和外部记忆,以提高视觉质量。
    • StyleFormer [34] 将 Transformer 机制引入传统的 CNN 编码器-解码器结构。
  • 与我们的方法对比: 我们的方法采用纯 Transformer 架构,解决了卷积操作造成的内容细节丢失问题。

a) 时间信息:

我们的模型在两台 NVIDIA Tesla P100 GPU 和两台 NVIDIA GeForce RTX 3090 GPU 上训练约一天。

在表 I 中,我们比较了不同风格转移方法在两种输出分辨率下的推理时间,使用一台 Tesla P100。

b) 质量评估:

图 4 展示了定性比较结果。

由于简化了均值和方差的对齐,AdaIN [6] 的结果风格模式不足,风格化图像出现裂缝伪影,影响了整体转移质量。

AAMS [18] 侧重于内容图像的主要结构,但忽略了其他部分,导致次要结构无法很好地保持。

基于补丁交换的 AAMS 方法产生了模糊过度的伪影。

MCC [17] 使用了自注意力的变换形式,但缺少非线性操作,限制了网络输出的最大值,导致物体边界附近溢出。

ArtFlow [21] 是流式模型,特征表示能力有限,生成结果存在风格不准确和不足的情况,边界可能出现不理想的模式。

AdaAttN [19] 采用每个点的归一化,导致风格退化,生成的结果风格模式与输入参考不一致。

IEST [35] 的视觉质量优于其他方法,但生成的结果的风格可能与输入的风格参考不一致。

StyleFormer [34] 仍然遵循 CNN 基础的“编码器-解码器”流程,结果存在细节丢失的情况。

相比之下: StyTr2 利用 Transformer 架构,能够更好地捕捉输入图像特征的长程依赖关系,避免了内容和风格细节的缺失,能够保留良好的内容结构和理想的风格模式。

c) 定量评估:

我们计算了生成结果与输入内容图像之间的内容差异,以及生成结果与输入风格图像之间的风格差异,作为风格转移质量的两个间接指标。直观上,差异越小,表示输入内容/风格越能保持。

我们随机选择了 40 张风格图像和 20 张内容图像,生成了 800 张风格化图像。对于每种方法,我们基于公式 (9) 计算内容差异,并基于公式 (10) 计算风格差异。表 II 显示了相应的定量结果。

总体而言,我们的方法实现了最低的内容损失,IEST [35] 是第二好的方法。然而,如定性评估中所述,IEST 的风格损失最高,因为生成结果的风格外观与输入风格参考非常接近。在风格损失方面,SANet [15] 和 StyTr2 优于其他方法。因此,我们的结果能够同时有效保留输入内容和参考风格。

4.3  内容泄漏分析 (Analysis of Content Leak)

问题描述: 内容泄漏问题通常发生在风格化过程中,因为基于 CNN 的特征表示可能无法充分捕捉图像内容的细节。经过多轮相同风格化处理后,这种伪影很容易被人眼察觉。内容泄漏问题由以下公式表示:

I_o^i= G_i(G_2(G_1(I_c, I_s), I_s), I_s)

其中 G_i  是第 i 轮生成器,I_o^i ​ 是对应的风格化结果。

解决方案: An 等人 [21] 提出了可逆网络来替代基于 CNN 的模型来解决内容泄漏问题。然而,严格的可逆性可能不适用于生成任务。相比之下,我们利用 Transformer 架构捕捉长程依赖关系,显著缓解了内容泄漏问题。

对比结果: 图 5 展示了与 CNN 方法和流模型 ArtFlow [21] 比较后的结果。上排显示了 CNN 方法在第一轮风格化后生成的内容结构受到不同程度的损坏,而我们的方法仍能呈现清晰的内容细节。尽管 ArtFlow 保持了清晰的内容结构,风格化效果不理想(例如,边缘缺陷和不合适的风格模式)。

随着风格化轮次增加: CNN 方法生成的内容结构逐渐模糊,而我们的方法则能保持清晰的内容结构。

4.4 CAPE 分析 (Analysis of CAPE)

PE(位置编码)的影响: 在计算 PE 时,我们需要考虑内容图像的语义信息。为了将提出的 CAPE 与不考虑语义的正弦 PE 进行比较,我们展示了两种情况下,输入内容图像存在重复模式或由四个相同的图像拼接而成的情况。

结果: 使用正弦 PE 时,最终结果的风格化区域不一致,尤其在输入内容图像重复或拼接的情况下。

对比实验: 图 7 比较了我们的方法与正弦 PE 在不同输入分辨率下的表现。正弦 PE 在分辨率为 512×512 时会产生垂直轨迹伪影,而我们的 CAPE 方法则能够避免这些问题,支持任意输入分辨率。

CAPE 动态编码: 图 8 展示了不同输入下的 CAPE。与学习型 PE 和正弦 PE 相比,CAPE 动态编码不同输入图像,能够更好地推广到各种分辨率,确保生成的风格化图像保持清晰的内容结构和适当的风格模式。


http://www.kler.cn/a/540239.html

相关文章:

  • Vue设计模式到底多少种?
  • 2025.2.9 每日学习记录2:技术报告写了一半+一点点读后感
  • 速度超越DeepSeek!Le Chat 1100tok/s闪电回答,ChatGPT 4o和DeepSeek R1被秒杀?
  • 【Java基础】为什么不支持多重继承?方法重载和方法重写之间区别、Exception 和 Error 区别?
  • Linux中设置开机运行指令
  • java项目之金华学校社团管理系统源码(ssm+mysql)
  • ES传输带宽优化方案
  • 9.JVM-方法区
  • 第四个Qt开发实例(为Label组件添加显示的文字)
  • 【机器学习与数据挖掘实战】案例13:基于BP神经网络模型的家用热水器用户行为分析与事件识别
  • 哪些情况会导致JVM内存泄露
  • qt制作一个png格式转ico格式的工具
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-metrics.py
  • AGI的基石:什么是机器学习
  • 【DeepSeek × Postman】请求回复
  • UP-VLA:具身智体的统一理解与预测模型
  • USB子系统学习(四)用户态下使用libusb读取鼠标数据
  • 深度学习-与OCR结合
  • react脚手架搭建react项目使用scss
  • windows 边框函数 画笔
  • MIT6.824 Lecture 2-RPC and Threads Lecture 3-GFS
  • Post-trained猜想
  • 长安汽车发布“北斗天枢2.0”计划,深蓝汽车普及全民智驾
  • 安装 Ollama 需要哪些步骤?(windows+mac+linux+二进制+Docker)
  • 云原生(五十四) | RDS数据导入与导出
  • Jenkins设置防火墙规则允许访问本机IP端口