通过宽松的最优运输和自相似性进行风格转移

文章目录

  • Abstract
  • 1 介绍
  • 2 方法
    • 2.1 特征提取
    • 2.2 Style Loss
    • 2.3 Content Loss
    • 2.4 User Control
    • 2.5 实施细节
  • 3 相关工作
  • 4 实验
    • 4.1 大规模人工评价
    • 4.2 消融研究
    • 4.3 Relaxed EMD 近似质量
    • 4.4 Timing Results
  • 5 结论和未来工作

Abstract

风格转移算法的目标是使用另一个图像的风格来渲染一个图像的内容。我们提出了 “宽松的最优传输和自相似性”(STROTSS)的风格转移,这是一种新的基于优化的风格转移算法。我们扩展了我们的方法,允许用户指定点对点或区域对区域控制风格图像和输出之间的相似度。这种指导可以用来实现特定的视觉效果或纠正无约束的风格转换所带来的错误。为了将我们的方法与之前的工作进行定量比较,我们进行了一项大规模的用户研究,旨在评估风格转换算法中不同设置的风格-内容权衡问题。我们的结果表明,对于任何所需的内容保存水平,我们的方法都能提供比以前的工作更高的风格化质量。

1 介绍

风格转换的主要挑战之一是将 "内容 "和 "风格 "正式化,这两个词唤起了强烈的直觉,但甚至很难从语义上定义。我们提出的每个术语的表述在风格转换领域都是新颖的,但在更广泛的计算机视觉领域有很长的成功应用历史。我们希望完善风格和内容的定义的相关努力最终会导致更强大的识别系统,但在这项工作中,我们只关注它们在风格转移方面的效用。

我们将风格定义为由深度神经网络提取的特征分布,并使用最初在自然语言处理界提出的 the Earth Movers Distance 的有效近似来衡量这些分布之间的距离[14]。这种风格相似性的定义不仅在统计学上有很好的动机,而且也是直观的。风格转移的目标是将风格图像的视觉属性部署到内容图像上,同时对内容的基本布局和语义进行最小的扭曲;实质上是 "优化 "这些视觉属性

我们对内容的定义受到自相似性概念的启发人类的感知系统是强大的,因为它是根据物体相对于周围环境的外观,而不是绝对的外观来识别的以这种方式定义内容相似性,在一定程度上将该术语与像素的精确值相分离,使其比先前工作中使用的定义更容易满足。这使得我们算法的输出能够保持内容图像的感知语义和空间布局,同时在像素空间上有很大的不同

为了提高风格转移作为一种艺术工具的效用,重要的是用户可以轻松和直观地控制算法的输出。我们扩展了我们的表述,允许对风格转换进行区域对区域的约束(例如,确保内容图像中的头发是用风格图像中的云来定型的)和点对点的约束(例如,确保内容图像中的眼睛是以与绘画中的眼睛相同的方式定型的)。

我们利用从Amazon Mechanical Turk(AMT)上的662名工作者那里收集的人类评价,将我们的方法与之前的工作进行了定量比较。workers分别评估了内容保存和风格化的质量。工人们除了看到内容或风格输入外,还看到两种算法对相同内容的输出,然后问哪种算法的内容或风格与显示的输入更相似。通过这种方式,我们能够对每个算法在两个轴上的表现进行量化。通过对我们的方法和先前的工作进行评估,我们还衡量了每种方法在超参数变化时在风格化和内容保存之间的权衡。我们的结果表明,对于任何所需的内容保存水平,我们的方法都能提供比以往工作更高的风格化质量。

图1:我们的无约束(左)和有指导(右)风格转移的输出例子。图片按内容、输出、风格的顺序排列。在右边的内容和风格图像下面,我们可以看到用于生成中间的输出的用户定义的区域对区域的指导。

2 方法

与Gatys等人[4]提出的原始神经风格转移算法一样,我们的方法需要两个输入,一个风格图像IS和一个内容图像IC,并使用梯度下降变体RMSprop[11]来最小化我们提出的关于输出图像X的目标函数(方程1)。

我们在第2.2节描述了损失的内容项αℓC,在第2.3节描述了风格项ℓm + ℓr + 1/α ℓp。超参数α代表内容保存与风格化的相对重要性。我们的方法是迭代的;让X(t)指的是在时间点t的风格化输出图像。

2.1 特征提取

我们的风格和内容损失条款都依赖于从任意的空间位置中提取丰富的特征表示。在这项工作中,我们使用了从ImageNet[26]上训练的VGG16层的一个子集中提取的超列[21, 8]。设Φ(X)i是网络Φ的第i层从输入图像X中提取的特征激活的张量。给定层指数l1, …, lL的集合,我们使用双线性上采样,使Φ(X)l1…Φ(X)lL的空间维度与原始图像(X)的空间维度相匹配,然后沿特征维度串联所有这些张量。这就产生了每个像素的超列,包括捕捉低层次的边缘和颜色特征、中层次的纹理特征和高层次的语义特征[27]。在所有的实验中,我们使用了VGG16的所有卷积层,除了第9、10、12和13层,因为内存的限制,我们把它们排除在外。

2.2 Style Loss

让A = {A1, . . . , An}是一组从X(t)中提取的n个特征向量,B={B1, . . , Bm}是一组从风格图像IS中提取的m个特征。风格损失是由the Earth Movers Distance (EMD)得出的:
【由于我们认为所有的特征都有相等的质量,这是更一般的EMD[23]的简化版本,它允许在一般的、非均匀的质量分布之间进行传输。】

其中T是 “传输矩阵”,它定义了部分成对的分配,C是 “成本矩阵”,它决定了A中的一个元素离B中的一个元素有多远。EMD(A, B)捕获了A和B集之间的距离,但是找到最佳T的成本是O(max(m, n)3),因此对于基于梯度下降的风格转移来说是站不住脚的(在那里它需要在每个更新步骤计算)。相反,我们将使用宽松的EMD[14]。为了定义这一点,我们将使用两个辅助距离,基本上每个距离都是只带一个约束条件(3)或(4)的EMD:

然后我们可以将the relaxed earth movers distance as定义为:

这相当于:

计算这一点主要是通过计算 cost 矩阵C。我们计算从Ai到Bj的运输成本(ground metric)为两个特征向量之间的余弦距离

我们尝试用向量之间的欧氏距离来代替,但结果明显更差,例子见附录。

虽然ℓr能很好地将源图像的结构形式转移到目标图像上,但余弦距离忽略了特征向量的大小。在实践中,这导致了输出中的视觉假象,最明显的是过饱和/欠饱和。为了解决这个问题,我们增加了一个矩匹配损失

其中,μA、ΣA是集合A中特征向量的平均值和协方差,μB和ΣB的定义相同。

我们还增加了一个颜色匹配损失,ℓp,以鼓励我们的输出和风格图像有一个相似的色调。ℓp是用X(t)和IS中的像素颜色之间的宽松EMD来计算的,这次使用了欧氏距离作为基础指标。我们发现,在计算这个术语时,将颜色从RGB转换到一个与平均颜色相关的色彩空间是有好处的。由于调色板转换与内容保存相抵触,我们将这个项的权重定为1/α。

2.3 Content Loss

我们的内容损失是由这样的观察所激发的:稳健的模式识别可以使用局部自我相似性描述符来建立[25]。这方面的一个日常例子是被称为Pareidolia的现象,无生命物体的自我相似性模式被认为是人脸,因为它们与一个松散的模板相匹配。形式上,让DX成为从X(t)中提取的所有(下列)特征向量的成对余弦距离矩阵,并让DIC为从内容图像中提取的所有特征向量的成对余弦距离矩阵。我们在图3中可视化了DX的几个潜在行。我们将我们的内容损失定义为:


图3:蓝色、红色和绿色的热图直观地显示了特征空间中相对于照片中标记的对应点的余弦相似度。我们的内容损失是为了保持内容图像中随机选择的1024个位置之间的相对成对相似性。

换句话说,从任何一对坐标中提取的图像向量之间的归一化余弦距离应该在内容图像和输出图像之间保持不变。这限制了输出的结构,而没有强制执行任何与内容图像的像素直接相关的损失。这使得语义和空间布局被广泛保留,同时允许X(t)中的像素值与IC中的像素值有很大的不同。

2.4 User Control

我们将用户控制作为对输出风格的约束。也就是说,用户在X(t)和IS中定义了成对的空间位置(区域),这些空间位置必须具有较低的风格损失。在点对点用户指导的情况下,每个集合只包含一个单一的空间位置(通过点击定义)。让我们把输出和风格图像中成对的空间位置集表示为(Xt1, Ss1)…(XtK , SsK )。我们重新定义Relaxed EMD的基本度量如下:

其中β控制用户指定的约束相对于风格损失的无约束部分的权重,我们在所有实验中使用β=5。在点对点约束的情况下,我们发现用8个额外的点对点约束来增加用户指定的约束是非常有用的,这些约束是自动生成的,并以原始约束为中心,形成一个统一的9x9网格。对于512x512的输出,网格中每个点之间的水平和垂直距离被设定为20像素,但这是一个可调整的参数,可以被纳入用户界面中。

2.5 实施细节

我们在增加分辨率的情况下反复应用我们的方法,每次将α减半。我们从内容和风格图像开始,将其缩放为64像素的长边。每个比例的输出被双线性上采样到两倍的分辨率,并作为下一个比例的初始化。默认情况下,我们在四个分辨率下进行风格化,由于我们在每个分辨率下将α减半,我们默认的α=16.0被设置为最终分辨率下的α=1.0。

在最低的分辨率下,我们使用由内容图像(高频梯度)构建的拉普拉斯金字塔的底层,加上风格图像的平均颜色进行初始化。然后我们将初始化的输出图像分解成一个五级拉普拉斯金字塔,并使用RM-Sprop[11]来更新金字塔中的条目,以最小化我们的目标函数。我们发现,优化拉普拉斯金字塔,而不是直接优化像素,大大加快了收敛速度。在每个尺度上,我们使用RMSprop进行200次更新,除最后一个尺度外,所有尺度都使用0.002的学习率,在最后一个尺度上,我们将其降低到0.001。

计算风格和内容损失所需的成对距离计算排除了从输入图像的所有坐标中提取特征的可能性,相反,我们从风格图像中随机抽取1024个坐标,从内容图像中随机抽取1024个x,y偏移的均匀网格中的共同坐标。我们只对从这些位置提取的特征进行损失区分,并在RMSprop的每一步之后对这些位置重新取样

3 相关工作

风格转换算法已经存在了几十年,传统上依赖于手工制作的算法来呈现图像的固定风格[7,9],或者手工制作的特征在任意风格和内容图像之间进行匹配[10,3]。2016年,当Gatys等人[4]引入神经风格转换(Neural Style Trans- fer)时,最先进的技术被极大地改变了。这种方法使用从预先训练好的神经网络中提取的特征来进行图像分类。它用从多层提取的特征的Gram矩阵来定义风格,用从另一组层提取的特征张量来定义内容。风格损失被定义为输出图像和风格图像之间的格拉姆特征矩阵之差的Frobenius norm。内容损失被定义为输出图像和风格图像的特征张量之差的Frobenius规范。与神经风格转换的框架不同,最近有几种方法[17,1]利用深度神经特征之间的相似性来建立内容图像和风格图像之间的对应图,并将风格图像扭曲到内容图像上。这些方法在成对的情况下非常成功,当风格图像和内容图像的内容相似时,但不是为任意图像之间的风格转移而设计的(非成对的或纹理转移)。

在[4]的基础上,随后的工作沿着许多轴线探索了改进和修改。最常见的创新形式可能是对两个图像之间的 "风格相似性 "进行量化的建议[15, 2, 22, 20]。例如,为了捕捉长距离的空间依赖性,Berger等人[2]建议使用翻译过的特征张量(使外积在固定的空间偏移的特征向量之间得到)来组合多个 Gram 矩阵。4]和[2]都放弃了关于风格特征完整分布的有价值的信息,这些信息并没有被 Gram 矩阵所捕捉。

在[15]中,Li等人将风格损失表述为最小化马尔科夫随机场的能量函数,即从预训练的CNN的后一层中提取的特征,鼓励目标图像中的斑块(产生深度特征)与特征空间中风格图像的最近邻居相匹配。其他功能类似的损失出现在[22]中,该方法将风格转移视为匹配两个特征直方图,而[20]则匹配风格和目标之间明显比其他任何配对更接近的特征。在所有这些方法中,广义上讲,输出的特征被要求位于从风格图像中提取的特征分布的支持上,但不需要覆盖它。这些损失都类似于放松EMD(RA)的一个组成部分。然而,我们的方法与这些方法不同,因为我们的风格项也鼓励覆盖风格图像中的整个特征分布(RB)。我们的风格损失在精神上与Gu等人[6]提出的风格损失最为相似,后者也包括鼓励保真和分歧的条款。他们的损失最小化了明确配对的个体斑块之间的距离,而我们的损失最小化了特征分布之间的差距。

另一个主要的创新类别是用训练有素的神经网络取代[4]的基于优化的算法,以进行风格转移,实现实时推断。这一领域的最初努力被限制在一组有限的预选样式上[13],但随后的工作放松了这一限制,允许在测试时使用任意样式[12]。相对于速度较慢的基于优化的方法,这些工作在结果的质量上做了一些牺牲以换取速度。然而,Sanakoyeu等人[24]介绍了一种将同一艺术家的风格图像纳入实时框架的方法,它能实时产生高质量的输出,但与我们的工作相比,它依赖于对具有相同风格的多个图像的访问,并且需要为每个新风格单独训练风格转移机制。

已经提出了各种方法来控制风格转换的输出。在[5]中,Gatys等人提出了两种 "全局 "控制方法,它们影响整个输出,而不是一个特定的空间区域。 一种方法是将图像分解为色调、饱和度和亮度,只对亮度进行风格化处理,以保留内容图像的调色板。来自[5]的第二种方法是生成一个辅助的风格图像,要么保留颜色,要么只从一个特定的比例转移风格(例如,只转移笔画,而不是更大和更复杂的风格元素)。这些类型的用户控制与我们的方法是正交的,并且可以被纳入其中。

另一种类型的控制是空间控制,允许用户确保输出的某些区域应该只使用风格图像中手动选择的区域的特征进行风格化(或者输出图像的不同区域应该基于不同的风格图像进行风格化)。在[5,18]中,作者提出了基于用户定义图像的匹配区域的空间控制形式,即为样式和内容图像创建一个密集的掩码。我们证明,将这种类型的用户控制纳入我们的风格转移的表述中是很简单的。在附录中,我们展示了一个比较我们的方法和[5]的空间控制的例子,并证明两者都产生了与所提供的空间指导相匹配的视觉上的愉悦的结果。

评估和比较风格转换算法是一项具有挑战性的任务,因为与物体识别或分割相比,输出没有既定的 “基础真理”。最常见的方法是对不同算法的输出进行定性的、纯主观的比较。一些方法也提供了更精细的定性比较,如纹理合成[22,6]和画中画[2]。虽然这些比较提供了对每个算法行为的洞察力,但如果没有量化的比较,就很难对算法的平均性能得出结论。最常见的量化评估是要求用户根据美学吸引力对每个算法的输出进行排名[6, 16, 19]。最近Sanakoyeu等人[24]提出了两种新的定量评价形式。第一种是测试在真实画作上为艺术家分类而预先训练的神经网络是否能根据算法的输出正确地对风格图像的艺术家进行分类。第二种是询问艺术史方面的专家,哪种算法的输出与风格图像最接近。我们设计了我们的人类评估研究,在第4.1节中描述,以更全面地了解每种算法在其超参数变化时在内容和风格之间的权衡。就我们所知,这是第一次这样的努力。

4 实验

我们在图2和图4中列出了有代表性的定性结果,并在图6中说明了内容权重α的影响。图5展示了使用我们的方法进行用户指导的情况。


图2:不同内容的图像对同一风格的影响实例,反之亦然。


图4:我们的方法与之前的工作进行定性比较。所有方法使用的默认超参数

图5:使用引导来达到审美效果(左,点对点))和纠错(右,区域对区域)的例子。在最上面一行,图像按内容、输出、风格的顺序排列。在每个内容和风格图像的下面,我们显示了引导的掩码,在它们之间是引导的输出。

图6:改变α(内容损失权重)对我们的无约束风格转移输出的影响,因为我们在四个分辨率下进行风格化,并且每次将α减半,我们默认的α=16.0被设置为在最终分辨率下α=1.0。

4.1 大规模人工评价

由于任意内容和风格对之间的风格转换是一项广泛的任务,我们提出了三种制度,我们认为它们涵盖了风格转换的主要用例。成对 "指的是当内容图像和风格图像都是相同事物的代表时,这主要是指同一类别的图像(例如,都是狗的图像),但也包括同一实体的图像(例如,都是伦敦天际线的图像)。未配对 "指的是当内容和风格图像不是同一事物的代表时(例如,一张中美洲神庙的照片和一幅马戏团的画)。纹理 "指的是当内容是一张脸的照片,而风格是一个同质的纹理(如砖墙,火焰)。对于每个制度,我们考虑了30个风格/内容配对(共90个)。

为了将我们的方法与先前的工作进行定量比较,我们使用AMT进行了一些研究。图7显示了工人界面的一个例子。图片A和B是同样的输入到[4]、[6]、[15]、[20]中提出的算法或我们的方法的结果。在图7中,图像C是相应的风格图像,工人被要求选择图像的风格是否与之最匹配。A"、“B”、"两者都一样 "或 “都不是”。如果图片C是一张内容图片,工人被提出同样的问题,涉及内容匹配,而不是风格。对于除[6]以外的每个竞争算法,我们测试了三组超参数,即作者推荐的默认参数、内容权重为14的相同参数(高风格化),以及内容权重为两倍的相同参数(低风格化)。因为对内容权重的这些修改并没有明显改变[4]的行为,我们还用1/100和100倍的默认内容权重测试了[4]。我们还用4倍的内容权重来测试我们的方法。我们只能测试[6]的默认超参数,因为作者提供的代码没有将内容权重作为一个参数暴露给用户。我们测试了不同算法和它们的超参数之间所有可能的A和B的配对(也就是说,我们不把一个算法和它自己的不同超参数进行比较,而是把它和其他算法的所有超参数设置进行比较)。在每次展示中,输出的顺序(将方法分配给界面中的A或B)是随机的。每个配对都是由平均4.98个不同的工人(最小4个,最大5个),总共662个工人投票决定的。平均而言,有3.7名工人同意每个配对的多数票。本次评估中使用的所有图像都将被提供,以便进行进一步的基准测试。


图 7:人工评估界面

对于算法/超参数组合,我们将其内容得分定义为工作人员选择其内容与 IC 相对于显示的其他输出具有更接近或相等内容的次数除以总数它出现在实验中的数量。这始终是一个介于0和1之间的分数。 风格得分的定义是分析性的。我们在图8中展示了这些结果,按制度分开。每个点的分数是在平均1580个配对中计算出来的(包括相同的配对被展示给不同的工人,最低1410,最高1890)。总的来说,在给定的内容得分水平下,我们的方法提供了比以前的工作更高的风格得分。


图8:对我们的方法和先前的工作进行定量评价,我们估计通过线性插值评价的方法的帕累托前沿(虚线)。

4.2 消融研究

在图9中,我们探讨了我们的风格损失的不同条款的效果,它是由矩匹配损失ℓm、rEMD ℓr和调色板匹配损失ℓp组成的。如图9所示,ℓm单独在传递风格方面做得很好,但未能捕捉到风格图像的较大结构。单独的ℓRA不能利用整个风格特征的分布,而且重建的内容比ℓr更差。单独的ℓRB使每个风格特征都有一个附近的输出特征,这就太容易满足了。将ℓRA和ℓRB结合到rEMD ℓr中,可以得到比任何一个单独术语更高的输出质量,然而由于使用的EMD是余弦距离,特征的大小不受限制,导致饱和问题。将ℓr和ℓm结合起来可以缓解这个问题,但输出的调色板仍然存在一些问题,这些问题可以通过增加ℓp来解决。


图9:对我们提出的低内容损失(α=4.0)的风格术语的效果进行消减研究。每个术语的效果分析见文本。最好在屏幕上放大观看。

4.3 Relaxed EMD 近似质量

为了衡量Relaxed EMD在多大程度上接近准确的Earth Movers Distance,我们从我们的AMT实验中使用的30个内容和风格图像所形成的900个可能的内容/风格配对中的每一个来衡量无配对制度。对于每个配对,我们计算从随机坐标中提取的1024个特征之间的REMD,以及基于相同特征集的精确EMD。然后分析REMD(A,B) / EMD(A,B)的分布,因为REMD是一个下限,这个量总是≤1。在900个图像对中,其平均值为0.60,标准差为0.04。一个更好的EMD近似值,或者一个上限而不是下限的近似值,可能会产生更好的风格转换结果。另一方面,REMD的计算很简单,根据经验很容易优化,并产生良好的结果。

4.4 Timing Results

我们使用英特尔i5-7600 CPU @ 3.50GHz CPU和NVIDIA GTX 1080 GPU来计算计时结果。我们使用方形风格和内容的图像,将其按比例调整为表1顶行所示的边缘长度。对于1024x1024大小的输入,[15]和[20]的方法耗尽了内存(表中的’X’)。由于作者[6]提供的代码只在Windows上运行,我们不得不在不同的计算机上运行。为了大致了解他们的方法在我们的硬件上的速度,我们根据他们的硬件和我们的硬件之间对[15]的相对加速,预测了他们论文中报告的512x512图像的计时结果。对于低分辨率的输出,我们的方法相对较慢,但是对于分辨率为512及以上的输出,它的扩展性比[15]和[20]要好,但仍然比[4]和我们对[6]的预测结果要慢。


表1:我们的方法与其他方法的时间比较(以秒为单位)。风格和内容图片的尺寸相同,并且是正方形。*:一个预测的结果,详见正文。-:我们无法预测这些结果。X:方法的内存用完了。

5 结论和未来工作

我们为风格转移提出了新的风格和内容的形式化,并表明所产生的算法在风格化质量和内容保存方面与先前的工作相比较好。通过我们的消融研究,我们表明,风格相似性损失更准确地衡量了特征分布之间的距离,从而导致更好的风格转移。我们使用的 the Earth Movers Distance 的近似值很简单,但很有效,我们把探索更准确的近似值留给未来的工作。未来工作的另一个方向是通过使用我们提出的目标函数训练前馈风格转移方法来提高我们方法的速度。

【翻译】Style Transfer by Relaxed Optimal Transport and Self-Similarity相关推荐

  1. hist seg, find peaks, tps, pava单调拟合, isotonic-regression,REGULARIZED DISCRETE OPTIMAL TRANSPORT

    文章目录 1. 相关内容 1.1 hist seg: 1.2 pava(parallel Pool Adjacent Violators) 1.3 TPS(thin plate splines) 2. ...

  2. 【翻译】In the light of feature distributions: moment matching for Neural Style Transfer

    根据特征分布:神经风格迁移的矩匹配 文章目录 Abstract 1. 绪论 2. 相关工作 3. 办法 3.1. 神经风格转移 3.2. Style as feature distribution 3 ...

  3. [论文翻译]FLOT: Scene Flow on Point Clouds Guided by Optimal Transport(ECCV 2020)

    论文翻译: FLOT: Scene Flow on Point Clouds Guided by Optimal Transport 摘要: 我们提出并研究了一种在点云上估计场景流的方法FLOT.我们 ...

  4. 神经风格迁移(Neural Style Transfer)程序实现(Keras)

    前言 以前翻译了神经风格迁移的论文:一个艺术风格化的神经网络算法(A Neural Algorithm of Artistic Style)(译),这篇文章中会给出其基于Keras的实现.github ...

  5. 深度学习(三十五)——Style Transfer(2), YOLOv3, Tiny-YOLO, One-stage vs. Two-stage

    Style Transfer Texture Networks: Feed-forward Synthesis of Textures and Stylized Images 这篇论文属于fast s ...

  6. Computational Optimal Transport 笔记——第二章(2)

    Computational Optimal Transport 笔记--第二章(2) 符号说明 2. 理论基础 2.3 Kantorovich Relaxation SUM 2.4 Optimal T ...

  7. style transfer/domain adaption简介

    style transfer和domain adaption还是有很多相似之处的,本文挑选几篇文章进行简略介绍 Texture Synthesis Using Convolutional Neural ...

  8. 李宏毅DLHLP.21.Text Style Transfer

    文章目录 介绍 Cycle GAN Generator Gumbel-softmax Continuous Input for Discriminator Reinforcement Learning ...

  9. 神经风格迁移综述论文分享(neural style transfer review)

    本文是论文的"神经风格迁移模型综述"简要总结和一丢丢笔者自己的理解,该论文发表于<计算机工程与应用> 当前主流方法主要可分为以下几类方法: 基于图像迭代的慢速神经风格迁 ...

最新文章

  1. recyclerview 滑动到当前_Android recyclerview的滑动到指定的item
  2. VTK:Cell Edge Neighbors用法实战
  3. r语言ggplot2一夜多图_ggplot2绘图:多张图合并为一张
  4. JavaScript事件代理和委托
  5. 一个简单的网页抓取工具
  6. 【Angular 4】管道
  7. android:inputType 参数详解
  8. Vue之Promise
  9. 字符串类型:不能忽略的 COLLATION
  10. LeetCode Remove K Digits
  11. 【项目分析】利用J#类库解决项目中数据压缩以及解压的问题
  12. 我的电脑缩略图模式盘符名字不见了
  13. media query学习笔记
  14. VBA操作WORD(二):替换字符(含空格、全角字符、换行符等)
  15. Win10内置一台虚拟机的安装
  16. codeblocks下载安装及问题解决
  17. VOCALOID5学习笔记——界面篇
  18. 机器学习入门——线性回归预测广告投入数据集
  19. 关于认识五线谱和简谱的基础知识
  20. android 手机分辨率怎么查看,android获取手机屏幕分辨率

热门文章

  1. analy32.xll下载_Android Studio 4.0添加了Motion Editor和Build Analyzer
  2. 客户满意度调查表怎么做?
  3. 英文字母间隔突然增大(全角与半角转换)
  4. php notice undefined offset,PHP 使用数组 疯狂提示 Notice: Undefined offset
  5. 搜狗2020校招【后端】笔试(第二场)
  6. Java8-19新特性一览 ,认识全新的前沿技术
  7. 基因组学(Geonomics)
  8. 小新pro13睡眠后无法唤醒_小新air12、air13、air13pro睡眠后无法唤醒的调试方法
  9. Envi处理MODIS流程
  10. 大学物理/量子物理基础/康普顿效应