【翻译】A Closed-form Solution to Universal Style Transfer

news/2024/5/2 20:08:47/文章来源:https://blog.csdn.net/zeroheitao/article/details/126623195

在这里插入图片描述
通用风格迁移的闭式解决方案

文章目录

  • Abstract
  • 1. Introduction
  • 2. Related Work
  • 3. 动机
  • 4. Method
  • 5. Results
    • 5.1. 定性结果
    • 5.2. 定量结果
    • 5.3. 更多结果
    • 5.4. 限制条件
  • 6. 结论

Abstract

通用风格转换试图明确地将特征空间的损失降到最低,因此它不需要对任何预先定义的风格进行训练。它通常使用不同层的VGG网络作为编码器,并训练几个解码器来将特征转换为图像。因此,风格转移的效果是通过特征转换实现的。尽管已经有很多方法被提出,但仍然缺少对特征转换的理论分析。在本文中,我们首先提出了一个新的解释,将其视为最优传输问题。然后,我们证明了我们的表述与以前的工作如自适应姿态归一化(AdaIN)和白化和着色变换(WCT)的关系。最后,我们通过考虑Gatys的内容损失,在我们的公式下推导出一个封闭式的解决方案,即最佳风格转移(OST)。相对而言,我们的解决方案可以保留更好的结构并达到视觉上的愉悦效果。它是简单而有效的,我们从数量和质量上证明了它的优势。此外,我们希望我们的理论分析能给未来的神经风格转换工作带来启发。Code is available at https://github.com/lu-m13/OptimalStyleTransfer.

1. Introduction

自Gatys[8]的开创性工作以来,已经提出了各种关于神经风格转移的方法。这些方法可以大致分为图像优化和模型优化[13]。基于图像优化的方法通过最小化内容损失和风格损失直接获得风格化的输出。风格损失可以由Gram矩阵[8]、直方图[25]或马尔科夫随机场(MRF)[16]定义。与此相反,基于模型优化的方法试图在大型数据集上训练神经网络,如COCO[22]。训练损失可以被定义为感知损失[14]或MRFs损失[17]。随后的工作[3, 6, 32]进一步研究了为多种风格训练一个网络的问题。最近,[12]提出使用AdaIN作为特征转换来训练一个网络以适应不同的风格。除了图像和模型优化外,还有许多其他工作研究了语义风格转换[23, 21, 1]、视频风格转换[11, 2, 26, 27]、特征风格转换[28]和立体风格转换[4]等问题。[13]对有关风格转换的工作进行了全面的回顾。

在本文中,我们研究了通用风格转移的问题[19]。我们的动机是明确地使Gatys[8]定义的损失最小化。因此,我们的方法不需要对任何预先定义的风格进行训练。与WCT[19]类似,我们的方法也是基于一个多尺度编码器-特征变换-解码器的框架。我们使用不同层的VGG网络[31]作为编码器,并训练解码器将特征转换为图像。风格转换的效果是通过编码器和解码器之间的特征转换实现的。因此,通用风格转换的关键是特征转换。在这项工作中,我们着重于对特征变换的理论分析,并提出了一个新的闭合式(closed-form)解决方案

尽管AdaIN[12]在一个大型的风格图像数据集上训练其解码器,但AdaIN本身也是一种特征转换方法。它将每个通道的特征视为高斯分布,并假定这些通道是独立的。对于每个通道,AdaIN首先将内容特征归一化,然后将其与风格特征相匹配。这意味着它只匹配协方差矩阵的对角线元素。WCT[19]提出使用白化和着色作为特征变换。与AdaIN相比,WCT通过匹配协方差矩阵的所有元素来改善结果。由于深层卷积神经网络(CNN)的通道是相关的,非对角线元素对于表示风格是至关重要的。然而,WCT只匹配协方差矩阵,这与Gatys的风格损失最小化有类似的精神。它不考虑内容损失,不能很好地保留图像结构。此外,在美白矩阵和着色矩阵之间乘以一个正交矩阵也可以匹配协方差矩阵,这已经被[18]指出。

[20]表明,匹配格拉姆矩阵等同于用二阶多项式核使最大平均差异(MMD)最小化。然而,它并没有给出一个封闭式的解决方案。相反,我们的工作将风格转移重塑为一个最优传输问题最佳传输试图找到一个与两个高维分布相匹配的转换。对于神经风格转移,考虑到每次激活的神经特征是一个高维样本,我们假设内容和风格图像的样本来自两个多变量高斯(MVG)分布风格转移相当于将内容样本转化为适合风格样本的分布。假设转换是线性的,我们发现AdaIN和WCT都是我们表述的特殊情况。虽然[18]也假设转换是线性的,但它仍然遵循增白和着色管道,并为增白和着色矩阵训练了两个元网络。与此相反,我们直接找到了最优传输公式下的转换。

正如我们上面所描述的,仍然有无限的变换,例如,在增白和着色矩阵之间乘以一个正交矩阵也可以成为解决方案。因此,我们寻求一种转换,使转换后的特征与原始内容特征之间的差异最小。这与Gatys[8]的内容损失最小化有类似的精神。我们证明,一旦考虑到内容损失,就可以找到一个独特的闭合形式的解决方案,即最佳风格转换(OST)。我们在方法部分展示了OST的详细证明。由于OST进一步考虑了内容损失,与WCT相比,它能更好地保存结构。

我们的贡献可以总结为以下几点:

  1. 我们提出了对神经风格转换的一种新的解释,将其视为一个最佳运输问题,并阐明了我们的解释与特征转换的理论关系,例如,AdaIN和WCT。
  2. 通过考虑内容损失,我们找到了在最优传输解释下唯一的闭合形式的解决方案,即OST。
  3. 我们的闭合式解决方案保留了更好的结构,并取得了视觉上令人满意的结果。

2. Related Work

图像优化(Image Optimization)。基于图像优化的方法通过最小化特征空间中定义的内容损失和风格损失直接获得风格化的输出。优化通常是基于反向传播的。[7, 8]提出使用Gram矩阵来定义一个例子图像的风格。[16]通过将MRFs与卷积神经网络相结合来改善结果。[1]使用语义掩码来定义相关区域内的风格损失。为了改善肖像风格转移的结果,[28]提出修改特征图,将实例绘画的局部颜色分布转移到内容图像上。这与[30]提出的增益图类似。[9]研究了在风格转移过程中控制知觉因素的问题。[25]通过纳入直方图损失来改善神经风格转移的结果。[26]将时间一致性损失纳入视频风格转换的优化过程。由于上述方法都是通过反向传播来解决优化问题的,所以它们本身就很耗时。

模型优化(Model Optimization)。为了解决反向传播的速度瓶颈,[14, 17]提出训练一个前馈网络来接近优化过程。他们不是优化图像,而是优化网络的参数。由于为每种风格训练一个网络是很繁琐的,所以[3, 6, 32]进一步研究了为多种风格训练一个网络的问题。后来,[5]提出了一种基于补丁交换的任意风格转移的方法。首先,内容和风格图像通过深度神经网络被转发以提取特征。然后,风格转移被制定为神经补丁交换,以获得重新构建的特征图。这个特征图被解码器网络反转到图像空间。从那时起,编码器-特征转换-解码器的框架工作已经被广泛探索,用于任意的风格转移。[12]使用AdaIN作为特征变换,在大量的内容和风格图像上训练解码器。[18]按照WCT[19]的表述,为美白和着色矩阵训练了两个元网络。许多其他工作也将神经风格转移扩展到视频[2, 11, 27]和立体风格转移[4]。这些工作通常联合训练除风格转移网络之外的其他网络。

通用风格转换(Universal Style Transfer)。通用风格转换[19]也是基于编码器-特征转换-解码器的框架。与AdaIN[12]不同,它不需要对任何风格的图像进行网络训练。它直接使用VGG网络的不同层作为编码器,并训练解码器以将特征转换为图像。风格转换的效果是通过特征转换实现的。[5]通过风格特征的最相似斑块重新放置内容特征的斑块。然而,近邻搜索实现的转移效果较差,因为它倾向于预先服务于原始外观。AdaIN将每个通道的激活视为高斯分布,并通过平均值和方差来匹配内容和风格图像。然而,由于CNN的通道是相关的,AdaIN不能实现视觉上令人愉悦的转移效果。WCT[19]提出使用特征美白和着色来匹配风格和内容图像的协方差矩阵。然而,正如[18]所指出的,WCT并不是匹配协方差矩阵的唯一方法。[29]提出了一种将补丁匹配与WCT和AdaIN相结合的方法。[29]不是通过原始特征寻找最近的邻居,而是使用投影特征进行匹配。这些投影特征可以由AdaIN或WCT生成。然而,上述方法都没有给出特征转换的理论分析。目前WCT等工作的关键观察点是匹配协方差矩阵,这不足以找到一个好的解决方案。

3. 动机

OST的流水线如图1所示。它与WCT[19]相似。我们使用预先训练好的VGG网络的不同层作为编码器。对于每一个编码器,我们训练相应的解码器来将特征反转为图像,如图1(b,c)所示。尽管[10, 29]建议训练解码器将特征转换为其底层的特征,这可能更有效,但我们在这项工作中使用图像解码器[19],因为该框架不是我们的贡献。

在这里插入图片描述
图1. (a) 用于通用风格转换的OST管道。首先,我们使用编码器提取内容图像和风格图像的特征。然后,我们使用特征转换方法来获得风格化的特征。最后,解码器将风格化的特征反转为图像。顶层的输出被用作底层的输入内容图像。(b) 解码器将某一层的特征反转到图像中。尽管[10, 29]提出训练解码器将特征反转为其底层的特征,这可能更有效,但我们在这项工作中使用图像解码器,因为解码器不是我们的贡献。© 我们使用特征损失(用蓝色箭头表示)和重建损失(用红色箭头表示)来训练解码器X(X=1,2,…,5)。

我们开始研究特征转换的问题,将神经风格转换重新表述为最佳转换问题。我们将内容图像表示为Ic,风格图像表示为Is。对于内容图像和风格图像的特征,我们分别表示为Fc∈RC×HcWc和Fs∈RC×HsWs,其中HcWc和HsWs是激活的数目,C是通道的数目。我们将Fc和Fs的列视为来自两个多变量高斯(MVG)分布N(μc,Σc)和N(μs,Σs)的样本,其中μc,μs∈RC是平均向量,Σc,Σs∈RC×C是方差矩阵。我们进一步将内容分布的样本记为u,风格分布的样本记为v。因此,u∼N(μc,Σc)和v∼N(μs,Σs)。假设最优转换是线性的,我们可以用以下方式表示。
在这里插入图片描述
其中T∈RC×C是转换矩阵。由于我们假设特征来自两个MVG分布,所以T必须满足以下公式才能匹配两个MVG分布。
在这里插入图片描述
当公式2得到满足时,我们可以得到t(u) ∼ N(μs,Σs)。然后我们展示我们的公式与AdaIN[12]和WCT[19]的关系。我们把Σc和Σs的对角线矩阵分别表示为Dc和Ds。对于AdaIn来说,转换矩阵T=Ds./Dc,其中./表示元素相除。因此,AdaIN不满足公式2,因为它忽略了通道的相关性。AdaIN只匹配对角线上的元素。对于WCT,我们可以发现转换矩阵T = Σ1/2s Σ-1/2c 。由于Σ1/2s和Σ-1/2c都是对称矩阵,WCT满足公式2。然而,WCT并不是公式2的唯一解,因为T = Σ1/2s QΣ-1/2c ,其中Q是一个统一的正交矩阵,是公式2的一个解族。这一点也被[18]所指出。理论上,仅考虑公式2,就有无限的解。我们在图2中展示了将一个随机的联合正交矩阵与增白矩阵相乘的风格转换结果。可以看出,尽管T=Σ1/2s QΣ-1/2c满足公式2,但风格转移的结果有很大的不同。

在这里插入图片描述
图2. T=Σ1/2s QΣ-1/2c的风格转换结果,其中Q是一个团结的正交矩阵。虽然T满足公式2,但结果有很大的不同。

我们的动机是通过额外考虑Gatys的内容损失来找到一个最佳解决方案。因此,我们的表述可以表示如下,其中E代表期望值。
在这里插入图片描述

4. Method

在这一部分,我们推导出公式3的闭式解。我们将公式1代入公式3的期望项,得到:
在这里插入图片描述
我们表示u∗= u -μc,v∗= Tu∗,δ=μs -μc。因此,我们可以得到u∗∼N(0,Σc)和v∗∼N(0,Σs)。此外,δ是一个恒定的C维向量。利用u∗、v∗和δ,我们可以将公式4重写为:
在这里插入图片描述
我们将公式5进一步扩展为:
在这里插入图片描述
由于u∗∼N(0,Σc),v∗∼N(0,Σs)和δ是一个恒定的C维向量,我们可以得到E[δT v∗] = E[v∗T δ] = 0,E[u∗T δ] = E[δT u∗] = 0。因此,使公式6最小化等同于使公式7最小化:
在这里插入图片描述
使用矩阵跟踪的表示方法,公式7可以改写如下
在这里插入图片描述
其中tr表示矩阵的迹线。由于E[v∗v∗T ]=Σs,E[u∗u∗T ]=Σc,E[v∗u∗T ]=E[u∗v∗T ]=φ,其中φ表示v∗和u∗的协方差矩阵,公式3的解可以重新表述如下。
在这里插入图片描述
接下来,我们介绍一个已经被[24]证明过的定理。由于篇幅有限,我们不重复证明。该定理可以得出如下结论。

定理4.1 给定两个高维分布X和Y,其中X∼N(0,Σ11)和Y∼N(0,Σ22),我们将(X,Y)的分布定义为N(0,Σ),其中Σ可以表示为:
在这里插入图片描述
max(tr(2φ))的问题有一个唯一的解,可以表示为:
在这里插入图片描述
通过上述定理,让X=v∗,Y=u∗,Σ11=Σs,Σ22=Σc,我们可以得到公式9的修正,可以表示为φ=ΣsΣ1/2c(Σ1/2c ΣsΣ1/2c )-1/2Σ1/2c。我们将协方差矩阵改写为φ = E[v∗u∗T ] = E[v∗(T-1v∗)T ] = E[v∗v∗T ] (T-1)T = Σs(T-1)T 。因此,我们可以得到(T-1)T = Σ1/2c (Σ1/2c ΣsΣ1/2c )-1/2Σ1/2c 。那么最终的T可以表示为Eq12
在这里插入图片描述
备注: 我们方法的最终解决方案是非常简单的。由于我们的方法额外考虑了内容损失,因此与WCT相比,我们可以保留更好的结构。与以前的工作相反,我们为所提出的方法提供了一个完整的理论证明。我们还证明了我们的方法与以前的工作的关系。我们相信,闭合形式的解决方案和理论证明都将激励未来的神经风格转移工作。

5. Results

在本节中,我们首先在第5.1节中将我们的方法与Gatys[8]、Patch Swap[5]、AdaIN(含我们的解码器)[12]、AdaIN+(含其解码器)[12]和WCT[19]进行定性比较。然后我们在第5.2节中提供了我们的方法与Gatys、Patch Swap、AdaIN、AdaIN+和WCT的定量比较。继前人之后,我们还在第5.3节中展示了线性插值和语义风格转换的结果。最后,我们在第5.4节中讨论了我们方法的局限性。

参数(Parameters):我们在COCO数据集[22]上训练解码器。在公式13中平衡特征损失和重建损失的权重被设置为1[19]。在这项工作的结果中,输入的分辨率被固定为512×512。

性能(Performance):我们在一台装有NVIDIA Titan Xp显卡的服务器上实现了所提出的方法。在输入分辨率为512×512的情况下,处理速度比较见表1。我们在我们的服务器上与已发表的实现进行了比较,这可能会导致与论文的轻微差异。
在这里插入图片描述

5.1. 定性结果

我们的方法与Gatys相比。Gatys[8]是神经风格转移的先驱,它可以处理任意的风格。尽管它使用了耗时的反向传播来最小化内容损失和风格损失,但我们仍然与它进行比较,因为它的表述是我们方法的基础。如图3所示,Gatys通常可以取得合理的结果,然而,这些结果并不那么风格化,因为迭代求解器不能在有限的迭代中达到最优解。相反,我们的方法试图找到闭合形式的解决方案明确地使风格损失和内容损失最小。相对而言,我们的结果更有风格,而且也很好地保留了内容图像的结构。

我们的方法与Patch Swap相比。据我们所知,Patch Swap[5]是第一个使用编码器-特征转换-解码器框架的工作。它选择了VGG网络的某一层作为编码器,并训练相应的解码器。特征变换被表述为神经补丁交换。然而,使用原始特征的神经补丁交换倾向于简单地重建特征,因此其结果不是风格化的。此外,Patch Swap只在某一层进行风格转换,这也降低了风格转换的效果。[29]提出在投影域中匹配神经补丁,例如,白化特征[19]。除此以外,[29]使用多层来转移风格,实现了更多的风格化结果。我们的工作没有使用神经补丁匹配的想法,相反,我们专注于理论分析,以提供封闭式的解决方案。从图3中可以看出,与Patch Swap相比,我们的结果更加风格化。

在这里插入图片描述
图3. 定性结果。我们将我们的方法与Gatys[8]、Patch Swap[5]、AdaIN(使用我们的解码器)[12]、AdaIN+(使用他们的解码器)[12]和WCT[19]进行比较。AdaIN忽略了协方差矩阵的非对角线元素,这导致输出的风格化程度较低。WCT不考虑内容损失,不能很好地保留内容图像的结构,如红色矩形所示。我们的方法可以同时实现风格化和内容保护的结果。

我们的方法与AdaIN和AdaIN+相比。正如动机中所讨论的,AdaIN[12]假设CNN特征的通道是独立的。对于每个通道,AdaIN匹配两个一维高斯分布。然而,CNN特征的通道实际上是相互关联的。因此,使用AdaIN作为特征变换不能达到视觉上的风格化结果。AdaIN+[12]不使用AdaIN作为特征转换方法,而是在大量的内容和风格图像集合上训练一个解码器。尽管AdaIN+只在某一层转移特征,但它用定义在多层的风格损失来训练解码器。我们用AdaIN和AdaIN+进行了比较。如图3所示,AdaIN和AdaIN+的结果是相似的,它们都不能达到视觉上的愉悦的转移结果。因此,我们认为AdaIN和AdaIN+失败的原因是它们忽略了CNN特征的通道之间的相关性。相反,我们的工作考虑了相关性,因此取得了更有风格的结果,如图3所示。

我们的方法与WCT的比较:WCT[19]提出使用特征美白和着色作为风格转换的解决方案。它在论文中选择了ZCA美白,我们用ReLU3 1的特征测试了其他一些美白方法,如图4所示。可以看出,只有ZCA增白取得了合理的结果。这是因为ZCA增白是最佳选择,它使内容特征和增白后的特征之间的差异最小。尽管ZCA增白后的图像可以保留内容图像的结构,但对最终转换后的特征没有约束。与此相反,我们考虑的是使内容特征和最终转换后的特征之间的差异最小。正如我们在动机部分所分析的,WCT满足公式2。因此,它完美地匹配了两个高维的高斯分布。然而,它忽略了Gatys的内容损失。相反,我们寻求闭合形式的解决方案,它还能使内容损失最小化。从图3中可以看出,我们的变换可以保留更好的结构(见红色矩形)。

在这里插入图片描述
图4. 不同白化方法的说明。我们用ReLU3 1的特征来测试一些美白方法。可以看出,ZCA美白取得了较好的效果。cor指相关的和美白方法的细节可以在[15]中找到。

我们还注意到,最终的特征可以是原始内容特征和转换后的特征的线性组合,如公式13所示。其中,α是转化后的特征的权重。
在这里插入图片描述
我们在图5中展示了不同α值的结果。如图5所示,调整权重可以改变风格转移的程度。在较小的α值下,WCT可以预先服务于更多的内容图像的结构。然而,即使在小α的情况下,仍然有明显的假象。相反,我们的方法持续地取得了视觉上令人愉悦的结果。
在这里插入图片描述
图5. 线性插值的说明。上面一行是我们的方法的结果,下面一行是WCT的结果。将内容特征与转换后的特征进行线性组合,有助于保留结构。如果公式13中的α较小,WCT可以保留更多的结构。但是,仍然有明显的人工痕迹。相反,我们的方法始终取得了令人满意的结果。

5.2. 定量结果

用户研究。风格转换是一个非常主观的研究课题。尽管我们已经从理论上证明了我们方法的优势,但我们进一步进行了用户研究,将我们的工作与Gatys、Patch Swap、AdaIN、AdaIN+和WCT进行定量比较。这项研究使用了16张内容图片和35张风格图片,这些图片是从已发表的实施方案中收集的,因此每种方法都产生了560张风格化的图片。我们向测试者展示了内容、样式和风格化的图像。我们要求测试者在1(最差)-5(最好)之间选择一个分数,以评估风格转换的质量。我们在网上对50名测试者进行了这项用户研究。平均分数列于表3。这项研究表明,我们的方法改善了以前的工作成果。
在这里插入图片描述
内容损失和风格损失:除了用户研究之外,我们还评估了Gatys[8]定义的内容损失和风格损失。我们用用户研究的图像来计算每种方法的平均内容损失和风格损失。我们将内容损失与神经行为的数量归一化。平均损失列于表2。可以看出,与WCT相比,我们的方法取得了较低的内容损失和类似的风格损失。至于Gatys、Patch Swap、AdaIN和AdaIN+,正如我们在质量比较部分所分析的那样,它们未能取得风格化的结果,而且风格损失很高。

在这里插入图片描述
表2. 平均内容损失和风格损失。*指完全符合内容和风格特征的统计。

5.3. 更多结果

我们在图6中展示了更多的结果来证明我们方法的通用性,其中α被设定为1。 为了进一步评估线性插值,我们在图7中展示了两个不同α值的样本。我们还将我们的方法与语义风格转移相结合,如图7所示。尽管我们在证明中假设神经特征是从MVG分布中取样的,但这些结果都是视觉上令人满意的,这表明了所提方法的泛化能力。

在这里插入图片描述
图6. 更多结果。我们展示更多的结果,其中α被设定为1。

在这里插入图片描述
图7. 线性内插和语义风格转移。尽管我们在证明中假设神经特征是从MVG分布中采样的,但这些结果在视觉上都是令人满意的,这证明了我们工作的概括能力。

5.4. 限制条件

我们的方法仍然有一些局限性。例如,我们评估了视频风格转移的逐帧结果。尽管我们的方法与以前的工作相比能够更好地保留结构,但逐帧的结果仍然包含明显的抖动。我们发现,时间上的抖动不仅是由特征转换造成的,也是由编码器网络的信息损失造成的。即使没有特征变换,深层编码器网络也会引起明显的时间抖动。

此外,风格迁移是一个非常主观的问题。尽管Gatys提出的Gram矩阵表示法已被广泛使用,但从数学角度对人们对风格的真实感受进行建模仍是一个未解决的问题。探讨深度神经网络与风格的关系是一个有趣的话题。

6. 结论

在本文中,我们首先提出了一个对神经风格转换的新解释,将其视为一个最佳运输问题。然后,我们证明了我们的解释与以前的工作之间的理论关系,例如AdaIN和WCT。基于我们的表述,我们通过额外考虑内容损失,推导出唯一的闭合式解决方案。由于内容损失的最小化,我们的解决方案与以前的工作相比,保留了更好的结构。我们希望本文能对未来的风格转换工作有所启发。

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

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

相关文章

牛视源码定制,抖音矩阵系统,别和谐啊、、、

抖音SEO内容如何制作? 现在网上有很多这种关于自己行业的一些数据分析的一些文章,大家可以去看一下。 所以看到这里,我们把做好抖音SEO需要的步骤其实也就四步,但是过程是需要不断的测试和优化。 四、SEO如何优化? …

配置本地Maven仓库——IDEA配置本地Maven源

Maven基础配置 现在大多数都是使用maven管理项目所需的资源文件,可是因为maven的远程仓库多数都很难下载,所以我们可以通过配置国内镜像,配置本地maven源。 1、下载maven maven下载链接 2、maven下载后是一个压缩包,直接解压即可…

利用HFSS-API设计指数渐变传输线

学个Antenna是以天线仿真和调试为主,理论原理为辅的干货天线技术专栏,包括天线入门知识以及各类天线的原理简介、仿真软件建模、设计、调试过程及思路。如有想看到的内容或技术问题,可以在文尾写下留言。 ​摘要: 上节学个Antenna…

纵横网络靶场 刷题记录

目录 Modbus协议 MMS协议分析 大工UDP协议 工控蜜罐日志分析 隐信道数据安全分析 工控安全取证 隐藏的黑客 Modbus协议 黑客通过外网进入一家工厂的控制网络,之后对工控网络中的操作员站系统进行了攻击,最终通过工控协议破坏了正常的业务。我们得…

Linux学习笔记

Linux安装在VM上 直接安装即可,或者打开VMX文件,挂载到VM上 Linux的目录结构 /代表根目录。~不同的用户,代表的目录不同。 超级管理员用户:root,终端中显示~,表示/root目录 普通用户:在hom…

手写一个泛型双向链表

前言 在当前大环境的背景下面试不问点算法都不算个合格的面试了(卷),而与算法紧密相关的数据结构也是经常问到的,像集合、链表、树、图、栈、堆、队列、矩阵 等等等等。 是不是感觉难度如下: 集合:有手就…

分布式缓存Hazelcast的部署及与SpringBoot整合使用

目录一、简介二、安装2.1 使用Docker形式部署2.2 客户端命令行2.3 Web管理页面三、与SpringBoot项目整合3.1 pom依赖3.2 配置类3.3 使用方式一、简介 官方文档:https://docs.hazelcast.com/hazelcast/latest/clients/java Github地址:https://github.com/hazelcast…

《MeInGame: Create a Game Character Face from a Single Portrait 》论文解读

一:论文干了件什么事 从单张图片生成一个游戏中的虚拟形象,且,论文的方法对光照强度,光照阴影遮挡等具有很好的鲁棒性,可以忠实还原肤色、妆容和皱纹等个性化细节。 摘要: 近年来,基于深度学习…

使用iptables动态映射Docker容器端口

0x0. 安装telnet telnet介绍:https://zh.wikipedia.org/wiki/Telnet 本文用于测试指定端口是否开放,命令如下: telnet [ip] [port]参数解释: ip:ip地址port:端口 如果指定端口开放则结果如下&#xff1a…

Libra论文阅读笔记-A unified congestion control framework for diverse application

目录一、Overview二、问题背景三、Libra方案overview四、Libra方案设计五、RL-based CCA算法总结论文题目:《A unified congestion control framework for diverse application preferences and network conditions》 CoNEXT’21 一、Overview 目前的拥塞控制算法(…

Python代码优化工具——memory_profiler

Python代码优化工具——memory_profiler一、工具介绍二、安装三、分析结果注解四、使用1、使用python命令进行分析(1)使用姿势1(2)示例1(3)该姿势的利弊1(4)使用姿势2(5&…

Python 程序员过中秋

Python 程序员过中秋 又是一年中秋至-----花好月圆夜,佳文当共鉴。Python PyQt5制作音乐播放界面 CSDN官方活动征文入口 文章目录1. 引言1.1 编写目的1.2 术语1.3 项目开发环境2. 业务概述3.PyQt5简单介绍3.1 手机上的Qt无处不在3.2 惊人的图形能力和性能3.3 Qt 5…

多线程编程(二):List组装

在日常工作中,难免遇到在循环体中组装List的场景,一般来说,不考虑多线程的话,实现起来非常简单。 比如,拟定一个场景,给定0-9999,共10000个数字,组装2个列表:奇数列表、…

Windows与网络基础-7-windows基本命令-目录文件操作

Windows基础命令 目录 一、目录和文件的应用操作 1.1 cd命令 1.2 dir命令 1.3 md或mkdir 1.4rd或rmdir 1.5 move 1.6 copy 1.7 Xcopy 1.8 Del或rease 目标: 掌握windwos系统文件及目录操作的一些命令 掌握windwos网络相关的命令 Window输入命令&#xff…

odoo15 联系人只看自己的设置注意点

今天设置crm模块权限时,联系人单加一个权限,不起作用 经反复设置,最后发现,最后一条无论如何设,不起作用。 class Partner(models.Model):_description = Contact_inherit = [format.address.mixin, avatar.mixin]_name = "res.partner"_order = "displa…

python神经网络编程 豆瓣,用python构建神经网络

python深度学习框架学哪个 Python深度学习生态系统在这几年中的演变实属惊艳。pylearn2,已经不再被积极地开发或者维护,大量的深度学习库开始接替它的位置。这些库每一个都各有千秋。 我们已经在indico的产品或者开发中使用了以下列表中的大部分的技术…

Django-(2)

今日内容概览 静态文件及相关配置请求方法request对象方法pycharm连接MySQLDjango谅解MySQLDjango ormorm语法orm外键关联 静态文件及相关配置 静态文件:html页面上使用的,不会进程改变的资源 第三方框架文件css文件js文件图片文件 针对静态文件资源…

token、cookie、session

目录 cookie session token cookie和token对比 刚刚下班的时候,路上碰到以前带的新人,他说他们那边最近在给一个新系统做新的权限校验,采用JWT的方式,这个新人也做没多久,说自己不了解token、cookie、session的区别…

datawhale8月组队学习《pandas数据处理与分析》(中)(变形、连接、缺失数据)

文章目录五、变形5.1 长宽表变形5.1 pivot5.2 pivot_table 处理非唯一值5.3 melt(宽表变长表)5.4 wide_to_long5.2 索引的变形5.3 其他变形函数5.3.1 crosstab5.3.2 explode5.3.3 get_dummies5.4 第五章练习5.4.1 美国非法药物数据集5.4.2 特殊的wide_to…

mfc 改变字体颜色

笔者最新的项目是mfc开发的,现在好多软件为了支持国产化操作系统,就客户端界面开发都使用了QT,底层的数据都用纯c实现了。 这里记录下,OnCtlColor(控件颜色事件),mfc的事件很多,毕竟其一大特色为消息映射机…