(2023,DiffWA 水印 攻击 )DiffWA:用于水印攻击的扩散模型

news2024/11/24 19:45:18

DiffWA: Diffusion Models for Watermark Attack

公众号:EDPJ(添加 VX:CV_EDPJ 进交流群获取资料)

目录

0. 摘要

1. 简介

2. 背景 

2.1 HiDDeN 

2.2 去噪扩散模型 

3. 提出的方法 

3.1 准备工作 

3.2 DiffWA 框架 

3.3 估计器加速 

3.4 组合的方法 

4. 实验 

4.1 HiDDeN 

4.2 DiffWA 实验 

4.3 估计器加速 

4.4 组合的方法 

5. 结论 

参考

S. 总结

S.1 主要思想

S.2 DiffWA

S.3 估计器加速


0. 摘要

随着深度神经网络(DNN)的快速发展,许多鲁棒的盲水印算法和框架被提出并取得了良好的效果。 目前水印攻击算法还无法与水印添加算法竞争。 而很多水印攻击算法只关心干扰水印的正常去除,水印攻击会给图像造成很大的视觉损失。 为此,我们提出了 DiffWA,一种用于水印攻击的具有距离引导的条件扩散模型,它可以在去除嵌入水印的同时恢复图像。 我们方法的核心是在无水印图像上训练图像到图像的条件扩散模型,并在采样时使用距离引导来指导条件模型,以便模型生成与原始图像相似的无水印图像。 我们使用我们提出的模型在 CIFAR-10 上进行了实验。 结果表明,该模型能够取得良好的水印去除效果,使水印提取误码率高于 0.4。 同时,攻击图像与原始图像相比仍保持良好的视觉效果,PSNR 大于 31,SSIM 大于 0.97。

1. 简介

盲水印是一种不可见的图像水印,可用于版权保护 [13, 29]。 随着 DNN 的发展,盲水印技术取得了长足的进步。 2018 年,Zhu 等人 [30] 提出了一种名为 HiDDeN 的水印架构,这是第一个端到端水印框架。 同样在 2018 年,Ahmadi 等人提出了差分水印算法框架(ReDMark)[1]。 2020年,Hao 等人 [6] 完成了基于生成对抗网络的水印任务。 同样是在 2020 年,Lee 等人 [10] 提出了一种没有任何分辨率依赖层或组件的水印网络来完成水印任务。

在水印攻击方面,研究人员通过各种方式攻击添加到图像中的水印,试图使嵌入在图像中的水印无法被正确提取。 2018年,Quiring 等人提出了一种基于对抗学习的数字水印黑盒攻击方法 [17]。 2020年,Nam等人 [14] 提出了一种名为 WAN(水印攻击网络)的网络来进行水印攻击。 通过向网络引入残余密集块,他们允许所提出的模型识别图像的局部和全局特征以去除水印。Geng 等人 [4] 提出了一种针对鲁棒水印算法的基于 CNN 的实时攻击方法,该方法能够在没有任何先验知识的情况下对图像进行预处理并破坏水印提取。 

近年来,盲水印的研究通常集中在水印添加上,旨在提高所提出的水印算法的鲁棒性以保护版权。 有些水印算法面对现有的一些水印攻击能够以很低的误码率甚至无损地恢复出水印信息,这说明水印攻击算法已经不能满足水印算法的要求。 为了提高水印模型在模拟攻击中的性能,需要提出新的水印攻击算法。 

受图像生成扩散模型成功的启发,我们建议将扩散模型引入水印攻击领域。 与生成对抗网络 [5] 等其他生成模型不同,扩散模型定义了一个推理过程,用于从随机噪声中对图像进行去噪。 对于去噪扩散概率模型(Denoising Diffusion Probabilistic Models,DDPM)[8],该过程基于马尔可夫链,而对于去噪扩散隐式模型(Denoising Diffusion Implicit Models,DDIM)[22],该过程是非马尔可夫的。 近年来,扩散在图像编辑 [12, 2]、图像修复 [11, 18]、超分辨率 [20, 25] 等方面得到了广泛的应用。 很自然地想到使用扩散模型的推理过程来去除水印。 此外,Dhariwal & Nichol [3] 和 Saharia 等人 [20] 提出了引导扩散模型和条件扩散模型,使扩散模型生成的图像满足一定要求。 对于水印攻击,引导扩散模型和条件扩散模型将使水印攻击后的图像与原始图像保持较高的相似度。 

因此,本文提出使用距离引导的条件扩散模型 DiffWA 来完成水印攻击的任务。 我们首先使用原始图像训练扩散模型。 然后在推理过程的每个步骤中,将通过距离度量来测量生成的图像和水印图像之间的距离,以引导重建图像与水印图像相似,然后与原始图像相似。 同时,由于生成的图像是在有水印图像的情况下生成的,并且模型是在无水印图像上训练的,因此重建的图像将更接近原始图像并且没有水印。 此外,我们提出了一种使用估计器加速推理过程的可能方法,并尝试结合两种水印攻击模型以获得更好的水印去除效果。 本文采用 HiDDeN 作为受攻击水印方案,并在 CIFAR-10 数据集上测试结果 [9]。 结果表明,所提方法提取水印的误码率约为 0.4、最高可达0.48的情况下实现水印去除。 同时,生成的图像与原始图像具有很高的相似度,PSNR(峰值信噪比)约为31,SSIM(结构相似度)[27] 约为 0.97。 

2. 背景 

2.1 HiDDeN 

受到 DNN 对输入图像中小扰动的敏感性的启发,Zhu 等人 [30] 在 2018 年提出了第一个用于盲水印添加的端到端神经网络,名为 HiDDeN。 HiDDeN 由编码器、解码器和鉴别器三部分组成。 编码器的输入是原始图像和一串消息,它将输出编码图像。 解码器接收编码图像,并将编码图像中加密的消息重构。 鉴别器的目的是确定图像是否是由编码器用消息加密的,它扮演了对抗的角色,最终会被编码器欺骗。 在训练网络时,编码器和解码器联合训练,解码器将输入编码图像和失真编码图像(经过噪声层后的编码图像)进行训练,以使水印对各种噪声具有鲁棒性。 结果表明,该模型在鲁棒水印方面具有根本优势,编码图像能够抵抗各种水印攻击,如高斯模糊、JPEG 压缩等。 

2.2 去噪扩散模型 

受非平衡热力学 [21] 的启发,提出了去噪扩散模型。 在这些模型的扩散过程中,图像中会添加随机噪声,从而将真实数据分布改变为易于处理的高斯分布。 在推理过程中,模型将反转扩散过程并学习如何去除添加到图像中的噪声。 最后,该模型将能够从随机选择的噪声中生成图像,并且通过一些适当的指导,该模型可以生成一些满足特定需求的图像。 

DDPM。2020 年 ,Ho 等人 [8] 提出了扩散去噪概率模型(DDPM)。 DDPM 的扩散过程是一个马尔可夫过程,使得噪声逐渐添加到原始图像中。 令 x_0 ∼ p_data,潜在变量 x_1,..., x_T 可以通过以下公式计算: 

其中 β_t 是预定义的小的正常数。根据 Ho 等人的说法,我们定义 α_t = 1 − β_t,

我们有

因此,当 T 足够大时,x_t 可以通过以下等式进行采样: 

DDPM 的推理过程也是一个马尔可夫过程。 在此过程中,模型将估计噪声并去除添加到图像中的噪声。 设 x_T ∼ N(0, I),则 x_T 到 x_0 的推理过程可定义为: 

均值 μ_θ(x_t, t) 可以通过神经网络学习,方差

可以是取决于时间步长的常数 [8],也可以通过神经网络学习 [15]。 

DDIM。 2021年,Song 等人 [22] 提出的去噪扩散隐式模型(DDIM)。 从 x_T ∼ N(0,I) 开始到干净图像 x_0,DDIM 的推理过程是一个确定性的非马尔可夫过程,可以定义为: 

其中 ε_θ (x_t, t) 通过由 θ 参数化的神经网络预测。 

引导扩散。Dhariwal & Nichol [3] 将自适应组归一化(Adaptive Group Normalization,AdaGN)引入扩散模型,并使用分类器来指导 DDPM 和 DDIM 的推理过程,以提高采样的质量和精度。 为了实现这一点,DDPM 的推理过程可以修改为: 

其中 μ 和 Σ 是扩散模型

的输出,p_Φ (y|x_t) 是分类器的输出,y 是预测标签,s 是梯度尺度。 对于 DDIM,公式 4 中的 ε_θ(x_t, t) 将替换为 ˆε,其定义为:

条件扩散。 2021 年,Saharia 等人提出了一种名为 Palette 的图像到图像扩散框架 [19]。 在 Palette 中,神经网络的输入是与条件图像连接的图像,并输出满足特定要求的图像。 在该框架的推理过程中,ε_θ(x_t, t) 将被 f_θ(y, x_t, ¯α_t) 替代,其中 y 是条件图像。

3. 提出的方法 

3.1 准备工作 

HiDDeN分析。 本文攻击的水印方案是 HiDDeN [30]。 原始图像中添加水印的区域决定了水印攻击模型的具体设计。 如果在图像的高频域添加水印,则需要重构图像的高频域并尽可能保留其他域的信息。 因此,我们首先分析水印嵌入的区域。 首先,我们对编码图像进行哈尔小波分解(Haar wavelet decomposition)。 然后,将小波分解后相应的频域信息分别设置为 0,重构消息并测量误码率(BER)。 结果如表1所示。 

表 1 显示 HiDDeN 依靠各种频率分量来添加水印。 最依赖的是 LL 和 HH 部分,其次是 HL 和 LH 部分。 考虑到去除某一频率分量后的每个 BER 都较高,水印攻击模型在重建水印图像时应同时重建低频和高频信息。 

扩散模型的频率视图。在扩散模型的扩散过程中,高斯噪声将应用于高频和低频的图像。 同时,水印也会被破坏。 Yang 等人也证明了这一点 [28],在扩散的推理过程中,在线性的假设下,图像从低频到高频重建。 因此,通过在原始图像上训练扩散模型,我们可以使用扩散模型将图像从低频到高频重建,同时没有水印。 

3.2 DiffWA 框架 

水印攻击模型在去除水印的同时需要尽可能地恢复原始图像。 受引导扩散模型和条件扩散模型的启发,我们提出在推理过程中用距离度量来指导条件扩散模型,这使得模型生成与原始图像或编码图像相似的图像。 

Guided DDPM。 假设编码图像 x_en = x + δ,其中 x 是原始图像,δ 表示添加到原始图像上的水印。 Wang 等人 [26] 以及聂等人[16] 证明了,在 DDPM 的推理过程中,当均值平移

(其中 Σ 为 x_t 的方差,D 为距离度量(可以是 MSE 或 SSIM),s 为梯度尺度)时,生成的图片 x 可以被引导到与另一张图片 x_en 相似。 因此,DDPM的推理过程可以修改为: 

其中 μ 和 Σ 是扩散模型

的输出。此外,梯度尺度与时间相关,定义为: 

其中 γ 衡量水印的范围,a 是选定的超参数,它取决于距离度量、图像分辨率和扩散模型的采样方法。 

Guided DDIM。 上述推导只能适用于随机扩散推理过程,不能用于确定性扩散推理过程,如 DDIM [22]。 为此,我们采用了 Song 等人提出的基于分数的技巧 [23, 24]。 假设我们有一个模型ε_θ,用于去噪,那么它可以用在得分函数中: 

在等式 9 中,我们可以用 p_θ 代替 p_θ,Φ, 

在这里,我们提出了一个启发式公式来近似概率 

最后,我们可以定义 ˆϵ_θ(x_t),它反映了联合分布: 

其中 D 是距离度量,s 是梯度尺度,与上面 Guided DDPM 中的 s 类似。 因此,我们可以将原来的 ε_θ 替换为 ˆε_θ,使得 DDIM 能够在推理过程中进行距离引导。 

图像到图像条件扩散。 p (x|y) 形式的 Palette [19] 框架被训练来预测条件图像 y 下的 x。 类似地,我们的水印攻击模型就是基于这个框架,它可以在条件图像 x_en下预测原始图像x。 神经网络 f_θ 在条件图像 x_en 下训练,损失函数为: 

在推理过程中,用条件网络 f_θ 代替无条件网络 ε_θ,扩散模型可以在有水印图像的情况下对无水印图像进行采样,从而保证输出图像与原始图像相比具有较高的相似度。 总之,算法 1 和算法 2 总结了所提出的使用 DDPM 和 DDIM 进行距离引导的条件扩散采样过程。

这里,我们循环去噪处理 M次,以获得更好的去水印效果,并且对于每次循环的去噪处理,不需要从完整的噪声中采样。 我们可以将图像以及水印扭曲到扩散过程的步骤 T_c,这使得水印无效,然后我们只需要在 T_c 步中进行去噪即可获得无水印的图像。 另外,可以将 s 设置为 0 以仅让条件扩散起作用,并且可以将条件扩散替换为无条件扩散以仅让距离引导起作用。 

3.3 估计器加速 

为了加速无水印图像的生成,我们在该模型中引入了估计器。 假设 N 是扩散过程中的一个时间步长,与总步数 T 相比较小,x^N 是经过 N 步扩散后的原始图像。 在 x_en 条件下,估计器 f_e 用于拟合 x^N 的分布。 得到估计器的输出

我们只需对图像

进行 N 步去噪即可获得无水印图像。 简单来说,估计器可以是 ResNet[7]。 算法 3 显示了使用估计器进行采样。 

3.4 组合的方法 

为了获得更好的水印去除效果,我们可以使用水印攻击模型对图像进行预处理,将编码图像分布x_en 转变为潜在分布 x_latent。 此时,部分水印被去除,预处理后的图像与原始图像没有太大差异。 然后我们在 x_latent 分布上训练基于扩散的水印攻击模型。 通过该模型,我们可以进一步去除水印并重建与原始图像更相似的图像。 预处理可以是提出的水印攻击框架或基于扩散的水印攻击模型。 

4. 实验 

4.1 HiDDeN 

为了评估所提出的方法,我们首先在 CIFAR-10 [9] 训练集上训练 HiDDeN [30] 模型,消息容量度量 BPP(每像素位数)= 0.2。 为了提高该水印算法的鲁棒性,我们组合了可用的噪声层,包括 Crop layer(p = 0.035)、Cropout layer(p = 0.3)、Dropout layer(p = 0.3)、Gaussian blur layer 和 JPEG 压缩。 为了增强该模型的水印能力和可扩展性,我们引入了残差块 [7],使模型足够宽和足够深,可以在数据集上进行水印。 我们在 RTX3060 上的训练集上对模型进行了 40 个 epoch 的训练,直到在 CIFAR-10 测试集上图像重建损失小于 0.001,消息重建损失小于 0.001。 

我们使用 PSNR(峰值信噪比)和 SSIM(结构相似度)[12] 来衡量编码图像与原始图像之间的差异,这显示了编码器的功能,并使用 Bit 精度来衡量解码器重建消息的能力 。 我们在 CIFAR-10 测试集上使用 PSNR、SSIM 和位精度测试了模型。 结果如表 2 所示。 

我们还测量了编码图像在几种失真情况下的 Bit 精度,以测试水印的鲁棒性。 原始图像和失真图像之间的 PSNR 和 SSIM。 结果如表 3 所示。 

从表 2 和表 3 可知,我们训练的 HiDDeN 模型具有良好的水印能力,并且水印可以抵抗多种扭曲,这为后续的水印攻击实验奠定了基础。 值得注意的是,上述使用的扭曲常常被用作传统水印攻击的手段。 结果还表明,传统的水印攻击方法很难对抗 HiDDeN。

4.2 DiffWA 实验 

我们的条件模型基于 Saharia 等人 [19] 提出的图像到图像框架 Palette,它删除了 AdaGN [3] 层的类别嵌入。 我们在本文中设置总扩散步数 T = 1000。 我们在 RTX3060 上以 64 的批量大小训练模型,进行四万次迭代。 

为了进行比较,还使用 Dhariwal 和 Nichol[3] 提出的架构来训练无条件模型。 该模型也删除了 AdaGN 的类别嵌入。 该无条件的训练损失与 Ho 等人 [8] 提出的

相同,其中 ε_θ 表示扩散 模型。 无条件模型的总扩散步骤和其他训练设置与条件模型相同。 

在推理过程中,为了方便起见,我们在等式8中定义了 η = a/γ。为了获得更好的性能,我们为DDPM 和 DDIM 设置循环时间 M = 2。 对于每个循环,我们为 DDPM 设置去噪步长 Tc = 200,为 DDIM 设置 Tc = 100。 在本实验中,我们将距离度量分别定义为 MSE(均方误差)和 SSIM(结构相似度)。 假设图像已标准化为 0 到 1 的范围。当我们使用 MSE 作为距离度量时,对于具有距离引导的条件模型,我们为 DDPM 设置 η = 0.05,为 DDIM 设置 η = -1。 对于具有距离引导的无条件模型,我们将 DDPM 设置为 η = 6.25,将 DDIM 设置为 η = −125。 当我们使用 SSIM 作为距离度量时,对于具有距离指导的条件模型,我们为 DDPM 设置 η = 255,为 DDIM 设置 η = −25500。 对于具有距离引导的无条件模型,我们为 DDPM 设置 η = 63750,为 DDIM 设置 η = −6375000。 对于没有距离制导的模型,η 设置为0。 

为了衡量水印攻击的效果,我们使用 SSIM 和 PSNR 来衡量给定图像的相似度。 我们还评估了干净图像重建消息和原始消息之间的比特精度,以衡量模型的水印攻击能力。 表 4 显示了 PSNR 和 SSIM 的结果。 表 5 显示了比特精度的结果。 

表 4 显示了模型重建图像的能力,表 5 显示了模型的水印攻击能力。 从表 4 中可以看出,具有 SSIM 指导的条件 DDIM 采样器表现最佳。 而模型的图像重建能力体现在其能够使干净图像与原始图像之间的 PSNR 和 SSIM 高于编码图像与原始图像之间的 PSNR 和 SSIM。 表 5 中,无距离引导的条件 DDPM 采样器显示出最好的去水印能力。 此外,我们发现距离引导可以提高干净图像和原始图像之间的相似度,同时保留更多的水印信息。 因此,需要仔细确定距离引导的范围,以平衡水印消息的相似度和去除率。 

η 的选择。图 5 显示了干净图像和原始图像之间的 PSNR 和 SSIM 以及从干净图像中提取的消息的误码率 (BER) 随着 η 的增加而变化。 

对于条件 DDPM,当 η 从零增加到大于 0 时,距离引导开始发挥作用,快速增加 PSNR 和 SSIM,这表明距离引导有助于恢复图像。 随着 η 的增加,PSNR 和 SSIM 在一定范围内增加,然后略有下降,这可能是因为模型过于依赖距离引导,使得干净图像和编码图像与原始图像相比具有相似的 PSNR 和 SSIM 。 此外,BER 随着 η 的增加而降低,这表明距离引导会保留更多消息并削弱水印去除效果的副作用。 因此,应该仔细选择超参数 η。 根据经验,η 不应该太大,并且应该比较接近 0。

对于无条件 DDPM,随着 η 的增加,PSNR 和 SSIM 单调增加,BER 单调减少。 比较条件模型和无条件模型,模型中添加的条件提供了图像恢复和去水印的基本功能。 此外,条件的引入降低了模型对 η 选择的敏感性,增强了模型的鲁棒性。 

4.3 估计器加速 

我们使用没有池化层和全连接层的 ResNet34 [7] 作为我们的估计器,它可以在 N 步扩散后将编码图像映射到原始图像。 本实验中我们设置 N = 100,这意味着扩散模型只需要 100 步去噪即可得到最终结果。 我们在 RTX3060 上对 CIFAR-10 训练集上的估计器进行了 40 个 epoch 的训练。 

这里,为了获得更好的结果,我们在本次实验中仅采用了实验 4.2 中介绍的唯一条件模型和带有距离引导的条件模型。 同样,测量了 PSNR、SSIM、比特精度。 结果如表 6 和表 7 所示。 

表 6 和表 7 显示,尽管使用估计器加速,该模型仍然可以重建原始图像并去除水印,其性能与没有估计器加速的模型相似。 

4.4 组合的方法 

实验 4.3 中使用 DDIM(第一个模型)的 MSE 引导的加速条件扩散模型的输出分布被选择为x_latent,因为它具有更好的恢复图像的能力。 然后我们使用实验 4.2 中描述的训练设置在 x_latent 条件下训练另一个条件扩散模型(第二个模型)。 该组合方法的 PSNR、SSIM、比特精度如表 8 所示。 

组合方法在实验中给出了最好的水印去除能力。 此外,它还可以重建质量相对较高的图像。 

5. 结论 

本文提出使用距离引导的条件扩散模型进行水印攻击,该模型显示出良好的水印去除和图像恢复能力。 同时,通过估计器,我们提出了一种可能的方法来加速这些水印攻击模型的推理过程。 此外,还提出了一种组合方法以获得更好的水印去除效果。 未来的工作可能集中在如何以更高的保真度恢复图像以及如何加速所提出的方法。 此外,我们需要更多的研究来防止这些提出的方法被滥用以侵犯版权。 有必要分析哪些水印技术可以抵抗这种攻击。 

参考

Li X. DiffWA: Diffusion Models for Watermark Attack[J]. arXiv preprint arXiv:2306.12790, 2023.

S. 总结

S.1 主要思想

目前许多水印攻击算法只关心水印的正常去除,会给图像造成很大的视觉损失。 为此,本文提出了 DiffWA,它可以在去除嵌入水印的同时恢复图像。

本文的主要贡献:

  • 提出使用距离引导的条件扩散模型 DiffWA 来完成水印攻击。 本方法的核心是在无水印图像上训练图像到图像的条件扩散模型,并在推理过程使用距离引导来指导条件模型,以便模型生成与原始图像相似的无水印图像。 
  • 提出了一种使用估计器加速推理过程的可能方法,并尝试结合两种水印攻击模型以获得更好的水印去除效果。 

S.2 DiffWA

DiffWA 的实现流程如图 2 所示。其中,循环去噪处理多次,以获得更好的去水印效果,并且对于每次循环的去噪处理,不需要从完整的噪声中采样。可以将图像以及水印扭曲到扩散过程的某一步, 使得水印无效,然后只需要从该步开始,基于距离的引导完成去噪即可获得无水印的图像。 

S.3 估计器加速

估计器加速的流程如图 3 所示。使用估计器估计加水印地图像在扩散过程第 N 步(相比于总步骤 T 很小),然后进行 N 步去噪即可获得无水印图像。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xshell只能打开一个会话、左边栏消失不见、高级设置在哪儿、快捷键设置解决

Xshell只能打开一个会话、左边会话栏消失不见、高级设置在哪儿解决 1.问题: xshell会话(窗口)上方切换栏不见了的处理办法 解决方法:ctrl shift t 2.问题: 左边会话管理器不见了 解决方法: 3.问题…

国内访问香港服务器选择什么路线?

​  国内访问香港服务器可以选择多种路线。首先,我们了解下各个线路的速度延迟。 一、CN2直连:解决了不同互联网服务提供商之间访问的难题,不需要绕到国际网络再从中国的三个网络入口进入。 二、优化直连:全国平均延迟60ms&…

【C++】递归,搜索与回溯算法入门介绍和专题一讲解

个人主页:🍝在肯德基吃麻辣烫 我的gitee:C仓库 个人专栏:C专栏 前言 从本文开始进入递归,搜索与回溯算法专题讲解。 文章目录 前言一、名词解释1、什么是递归?2、为什么会用到递归?3、如何理解…

ARKit功能初学

文章目录 一、ARKit简介二、ARKit API 中的几个主要的类1. ARSCNView2. ARSession3. ARFrame4.ARAnchor5. ARWorldTrackingSessionConfiguration6. ARSCNViewDelegate7. ARSessionDelegate 三、ARKit示例1. 导入框架2. 设置SceneKit View3. 配置ARSCNView Session4. Camera 授权…

MyBatis数据库操作

文章目录 前言一、MyBatis的各种查询功能1.查询一个实体类对象2.查询一个List集合3.查询单个数据4.查询一条数据为map集合5.查询多条数据为map集合方法一方法二 6.测试类 二、特殊SQL的执行1.模糊查询2.批量删除3.动态设置表名5.添加功能获取自增的主键6.测试类 三、自定义映射…

CentOS 7 openssl 3.0.10 rpm包制作 —— 筑梦之路

源码下载地址&#xff1a; https://www.openssl.org/source/openssl-3.0.10.tar.gz 编写spec文件&#xff1a; cat << EOF > openssl.specSummary: OpenSSL 3.0.10 for CentosName: opensslVersion: %{?version}%{!?version:3.0.10}Release: 1%{?dist}Obsoletes…

Azure + React + ASP.NET Core 项目笔记一:项目环境搭建(一)

不重要的目录标题 前提条件第一步&#xff1a;新建文件夹第二步&#xff1a;使用VS/ VS code/cmd 打开该文件夹第三步&#xff1a;安装依赖第四步&#xff1a;试运行react第五步&#xff1a;整理项目结构 前提条件 安装dotnet core sdk 安装Node.js npm 第一步&#xff1a;新…

【最新!七麦下载量analysis参数】逆向分析与Python实现加密算法

文章目录 1. 写在前面2. 请求分析3. 加密分析4. 算法实现 1. 写在前面 之前出过一个关于榜单analysis的分析&#xff0c;有兴趣的可以查看这篇文章&#xff1a;七麦榜单analysis加密分析 最近运营团队那边有同事找到我们&#xff0c;说工作中偶尔需要统计分析一下某APP在一些主…

DOM渲染与优化 - CSS、JS、DOM解析和渲染阻塞问题

文章目录 DOM渲染面试题DOM的渲染过程DOM渲染的时机与渲染进程的概述浏览器的渲染流程1. 解析HTML生成DOM树&#xff1a;遇到<img>标签加载图片2. 解析CSS生成CSSOM(CSS Object Model): 遇见背景图片链接不加载3. 将DOM树和CSSOM树合并生成渲染树&#xff1a;加载可视节点…

【动手学深度学习】--语言模型

文章目录 语言模型1.学习语言模型2.马尔可夫模型与N元语法3.自然语言统计4.读取长序列数据4.1随机采样4.2顺序分区 语言模型 学习视频&#xff1a;语言模型【动手学深度学习v2】 官方笔记&#xff1a;语言模型和数据集 在【文本预处理】中了解了如何将文本数据映射为词元&…

ATFX汇市:美初请失业金人数21.6万人,连降四期,劳动力供需偏紧

ATFX汇市&#xff1a;9月7日&#xff0c;美国劳工部数据显示&#xff1a;美国至9月2日当周初请失业金人数最新值21.6万人&#xff0c;低于前值22.9万人&#xff08;修正前22.8万人&#xff09;&#xff0c;低于预期值23.4万人。回顾历史数据&#xff0c;美国初请失业率人数从25…

【数学建模】2023数学建模国赛C题完整思路和代码解析

C题第一问代码和求解结果已完成&#xff0c;第一问数据量有点大&#xff0c;经过编程整理出来了单品销售额的汇总数据、将附件2中的单品编码替换为分类编码&#xff0c;整理出了蔬菜各品类随着时间变化的销售量&#xff0c;并做出了这些疏菜品类的皮尔森相关系数的热力图&#…

NIFI实现JSON转SQL并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的&#xff0c;所有的配置参考&#xff1a;docker安装Apache NIFI 需求背景 现在有一个文件&#xff0c;里面存储的是一些json格式的数据&#xff0c;要求将文件中的数据存入数据库表中&#xff0c;以下是一些模拟的数据和对应的数据库…

传输层协议 --TCP报文格式详细介绍

一、 TCP协议格式 TCP如何将报头与有效载荷进行分离&#xff1f; 当TCP从底层获取到一个报文后&#xff0c;虽然TCP不知道报头的具体长度&#xff0c;但报文的前20个字节是TCP的基本报头&#xff0c;并且这20字节当中涵盖了4位的首部长度。 因此TCP是这样分离报头与有效载荷的…

Java——》ThreadLocal

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

ChatGPT:深度学习和机器学习的知识桥梁

目录 ChatGPT简介 ChatGPT的特点 ChatGPT的应用领域 ChatGPT的工作原理 与ChatGPT的交互 ChatGPT的优势 ChatGPT在机器学习中的应用 ChatGPT在深度学习中的应用 总结 近年来&#xff0c;随着深度学习技术的不断发展&#xff0c;自然语言处理技术也取得了显著的进步。其…

软件设计模式(二):工厂、门面、调停者和装饰器模式

前言 在这篇文章中&#xff0c;荔枝将会梳理软件设计模式中的四种&#xff1a;工厂模式、Facade模式、Mediator模式和装饰器Decorator模式。其中比较重要的就是工厂模式和装饰器模式&#xff0c;工厂模式在开发中使用的频数比较高。希望荔枝的这篇文章能讲清楚哈哈哈哈&#xf…

OpenCV(三十一):形态学操作

​​​​​​1.形态学操作 OpenCV 提供了丰富的函数来进行形态学操作&#xff0c;包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数&#xff1a; 腐蚀操作&#xff08;Erosion&#xff09;&#xff1a; erode(src, dst, kernel, anchor, iteration…

【LeetCode】剑指 Offer <二刷>(6)

目录 题目&#xff1a;剑指 Offer 12. 矩阵中的路径 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 13. 机器人的运动范围 - 力扣&#…

docker-compose安装mysql

基于docker-compose快速安装mysql 目录 一、目录结构 1、 docker-compose.yml 2、 my.cnf 3、error.log 二、执行安装 三、连接使用 一、目录结构 1、 docker-compose.yml version: 3 services:mysql:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 #…