生成对抗网络可以生成高度逼真的图像,通常与真实图像是无法区分的。这样生成的大多数图像都没有包含在训练数据集中,说明用GAN生成的数据对增强数据集的能力很强。尽管在数据有限的情况下这种情况特别重要,但是基于有限数据训练GAN的问题仍然存在。为了弥补这一缺陷,本文结合迁移学习的概念,利用在大规模数据集上经过预训练的现有GAN模型,引入其他知识。通过自然图像生成的演示,证明了预训练GAN的生成器和生成器的低级过滤器可以迁移以促进在训练数据有限的情况下,在感知上不同的目标域中生成图像。为了使传输的滤波器进一步适应目标域,本文提出了自适应滤波器调制(AdaFM)。

1.引言

生成对抗网络生成高质量样本的能力日益增强;展示了GAN在基础数据分布中利用有价值的信息的能力。尽管已发布了许多在大规模数据集上进行了预训练的强大GAN模型,但很少有人利用该模型中有价值的信息,以促进下游任务;这与用于判别性任务的迁移学习(重用预训练分类器的特征提取器)和自然语言处理中的迁移学习(重用昂贵的预训练的BERT模型)形成鲜明对比。

受到已发布的预训练GAN模型的重要价值的激励,本文提出利用其中的信息进而利用有限的训练数据来促进目标域中的下游任务。当有限的训练数据可用时,将专注于GAN模型开发的挑战性场景。启发本文方法的一个关键发现是受过训练的GAN可以生成训练数据集中未观察到的逼真的图像,证明GAN具有捕获训练数据流形的泛化能力。 GAN的这种概括很可能是由于信息/属性/样式的新颖组合而产生的,对于数据有限的情况而言,GAN的这种概括非常有吸引力。例如,GAN可以用于通过现实的数据生成来扩充训练集,以减轻过拟合或为分类,分割或检测提供正则化。

由于GAN通常需要大量的训练数据,因此目标域中有限的数据在学习基础GAN模型时会出现问题。当可用的数据量有限时,训练GAN容易过拟合,因为GAN模型具有许多对于实际生成必不可少的参数。为了减轻过拟合,可以考虑通过迁移学习从其他领域转移信息。但是,大多数迁移学习工作都集中在判别性任务上,基于这样的基础,即在大规模源数据集上经过预训练的分类器的低级过滤器(接近输入观测值的过滤器)相当笼统(如Gabor过滤器),因此可以转移到不同的目标域;低级过滤器提供了附加信息,迁移学习通常会带来更好的性能。与在判别任务上进行迁移学习相比,生成任务上所做的工作较少。

利用上述关于判别任务的迁移学习的见解,假设在大规模源数据集上经过预训练的GAN判别器的低级过滤器可能是通用的,因此可以转移到各种目标域。对于预训练的GAN生成器,它表明低层(接近输出观测值的那些层)捕获了通常适用的局部图案(如材料,边缘和颜色)的属性,而高层(远离观测值的)则与数据的更多特定领域语义方面相关联。考虑迁移/冻结预训练GAN模型的生成器和判别器的低级滤波器,以帮助在训练数据有限的情况下在感知上不同的目标域中生成数据。本文考虑了自然图像生成GAN场景,所提出的技术是通用的,并且可能适用于其他领域,例如医学或生物学领域。本文的主要贡献如下。

本文凭经验证明,在大规模数据集上经过预训练的GAN模型的低级过滤器(在生成器和鉴别器内)可以转移到感知上截然不同的目标域,从而在以下训练数据有限的情况下提高GAN性能

1.量身定制了一个领域专用网络,以与迁移的低级过滤器协作,从而可以进行样式混合以实现多种合成。
2.为了更好地使传输的滤波器适应目标域,引入了一种称为自适应滤波器调制(AdaFM)的方法,该方法可提高性能。
3.进行了广泛的实验,以验证所提出技术的有效性。

2.方法

对于在目标域中数据有限的GAN训练,通过利用在大规模源数据集上进行了预训练的现有GAN的低级过滤器(接近观察值)来转移其他信息。结合低级过滤器中的先验知识,从而提高GAN性能,但是需要进行数据训练的人可能会期望减少过拟合。 具体来说,给定一个经过预训练的GAN模型,在目标域中重用其低层过滤器(称为模型的通用部分或通用部分),并用另一个较小的网络替换高层(称为域特定部分),然后训练使用有限的目标数据的特定零件,同时保持传输的通用零件冻结(请参见图1(f)和(g))。通过这种方法,利用在更大的源数据集上进行训练的迁移的通用部分,并使用简化的领域特定部分,大大减少了需要学习的参数总数,从而与有限的目标域数据保持一致。

接下来,以自然图像生成为例,并回答三个问题来介绍本文的方法

1.如何指定适合转让的通用零件?
2.如何定制特定的零件以使其简化?
3.如何更好地适应已迁移的通用部分?

在详细介绍提出的技术之前,首先讨论源数据集,预训练GAN模型和评估指标。为了实现通用的低级过滤器,希望拥有丰富的多样性的大规模源数据集,其中包含来自1000个类别的120万个高分辨率图像。本文认为这是源数据集。 关于在ImageNet上预训练的公开可用GAN模型,可用的选择包括SNGAN,GP-GAN和BigGAN;本文选择了预训练的GP-GAN模型(分辨率为128×128)。 为了评估生成性能,采用了Frechet起始距离(FID,越低越好),该指标可评估生成样本的真实性和变异性。

图 1

2.1 关于指定通用零件

如引言中所述,生成图像图像和判别式图像模型都具有相似的模式:**较高级别的卷积过滤器描绘更多特定于领域的语义信息,而较低级别的过滤器描绘普遍适用的信息。**给定在ImageNet上经过预先训练的GP-GAN模型,问题是如何指定要迁移到目标域的低级过滤器(即模型的通用部分)。一般而言,根据可用的目标域数据,最佳解决方案可能是一个折衷方案。如果提供了大量数据,则应传输较少的低级过滤器(需要传输的先验知识较少),但是当目标域数据受到限制时,最好传输更多的过滤器(以更多的先验信息为基础)。通过将预训练的GP-GAN模型迁移到CelebA数据集来解决该问题,这与源ImageNet完全不同(请参见图2)。此处发现的一般部分在其他三个数据集上也能提供出色的结果。

图2

2.1.1 生成器的通用部分

为了确定要迁移到目标CelebA数据集的GP-GAN生成器的通用部分,采用GP-GAN体系结构和设计实验,在生成器的迁移/冻结常规部分中包含越来越多的较低层;生成器的其余特定部分(未转移)(参见图1(f))和判别器,将重新初始化并通过CelebA进行训练。

测试了生成器通用部分的四个设置,即要传输的2个,4个,5个和6个较低的组(分别称为G2,G4,G5和G6; G4在图1(f)中进行了说明)。经过60,000次训练迭代(此时,生成质量趋于稳定),在图3中显示了四种设置的生成的样本和FID。转移G2 / G4发生器的通用部分可提供不错的生成质量(请参见眼睛的详细信息,头发纹理和脸颊光滑度)。在预训练的GP-GAN生成器的多达4个较低的组中有低级别过滤器(在实验中的其他三个数据集上也进行了验证)。 G4的FID比G2的FID低表明,在大规模源数据集上接受更多预训练的低级过滤器可能会在目标域中带来更好的性能。但是,当迁移并冻结更多组作为生成器的通用部分时,(即G5和G6),生成质量迅速下降;这是预期的,因为高级过滤器是更特定于源ImageNet的,可能无法满足目标数据CelebA。通过查看图3,选择G4作为要生成的通用零件的设置。

图 3

2.1.2 判别器的通用部分

接下来,基于生成器的G4通用部分,进行实验以指定判别器的通用部分。考虑迁移/冻结0、2、3和4个较低级别的预训练GP-GAN判别器(分别称为D0,D2,D3和D4)。图4显示了每个设置生成的样本和FID。与生成器观察到的类似,经过预训练的GP-GAN鉴别器具有更好的生成性能(将D0的FID与D2的FID进行比较);但是,由于更高级别的过滤器更特定于源数据ImageNet,因此迁移它们可能会导致生成质量下降(请参阅D3和D4的结果)。

图 4

2.2 定制高级特定部分

即使使用了迁移/冻结的G4D2通用部分,其余的特定(目标相关)部分对于有限的目标域数据也可能包含太多可训练的参数(例如,图1(f)中的GPHead模型显示了模式崩溃(请见图 5)在小花数据集上进行训练时);另一个考虑因素是,当使用GAN进行合成增强时,对于数据量有限的应用程序,样式混合具有很高的吸引力。基于这些考虑,本文提出用定制的较小网络替换GP-GAN的高级特定部分(见图1(g)),以减轻过拟合,实现样式混合并降低计算/内存成本。

图5

具体来说,定制的特定部分被构造为一个全连接(FC)层,后面是两个连续的样式块(借鉴StyleGAN,请见图1(c))。 与Style-GAN相似,样式块可实现无监督地分解高级属性,有益于对底层数据流形的有效探索。 它们还可以生成具有新属性组合(样式混合)的样本,扩大了生成多样性。 将由定制的特定部分和G4D2通用部分组成的模型称为SmallHead。 本文的特定部分也用于本文的方法中(参见图1(h))。 与GPHead不同,SmallHead被证明可以以稳定的方式进行训练,而Flowers上不会出现模式崩溃(见图5)。 在实验中,发现SmallHead在其他小型数据集上运行良好。

2.3更好地适应迁移的通用部分

根据上述迁移的通用部分和量身定制的特定部分,本文接下来提出一种称为自适应滤波器调制(AdaFM)的新技术,以使迁移的低级滤波器更好地适应目标域以提高性能。 在这种方法中,不再只是在迁移时“冻结”过滤器,而是以目标依赖的方式增强它们。

受样式迁移文献的启发,在该文献中,通过修改图像的潜在特征图的统计量(例如均值或方差)来操纵图像的样式,因此,本文考虑了操纵函数样式(即转移的样式)的变体。 通用部分),通过AdaFM修改其卷积滤波器的统计信息

具体来说,给定一个转移卷积滤波器W∈RCout×Cin×K1×K2W∈R^{C_{out}×C_{in}×K_1×K_2}W∈RCout​×Cin​×K1​×K2​,其中Cin/CoutC_{in} / C_{out}Cin​/Cout​表示输入/输出通道数,K1×K2K_1×K_2K1​×K2​是内核大小,AdaFM引入了少量可学习的参数 例如调整γ∈RCout×Cinγ∈R^{C_{out}×C_{in}}γ∈RCout​×Cin​并且移动β∈RCout×Cinβ∈R^{C_{out}×C_{in}}β∈RCout​×Cin​,以通过下式来调整统计因子

因为i∈{1,2,3,Cout}i∈\{1,2,3,C_{out}\}i∈{1,2,3,Cout​}和j∈{1,2,3,Cin}j∈\{1,2,3,C_{in}\}j∈{1,2,3,Cin​}。 然后使用WAdaFM将输入特征图卷积为输出特征图。 将AdaFM应用于残差块的卷积核(请见图1(a))得到AdaFM块(请参见图1(b))。 将SmallHead的剩余块替换为AdaFM块后,得到生成器,如图1(h)所示,在实验中的性能要比SmallHead好。

为了更好地理解AdaFM的功能,下面将并行连接到两种相关技术,在某种程度上可以将它们视为AdaFM的特例。第一个是最近的StyleGAN2(具有最新生成性能的模型)中显示的权重解调。与AdaFM相比,权重解调采用零位移β= 0和秩1尺度γ=ηsTγ=ηs^Tγ=ηsT,其中样式s∈RCins∈R^{C_{in}}s∈RCin​由可训练的映射网络(通常为MLP)生成,而η∈RCoutη∈R^{C_{out}}η∈RCout​计算为

ϵ\epsilonϵ是一个小常数,以避免数值问题。尽管密切相关,但AdaFM和权重解调的动机不同。本文提出AdaFM使迁移的滤波器更好地适应目标域,同时权重解调用于放松实例规范化,同时保持可控样式混合的能力。

AdaFM的另一个特殊情况是过滤器选择(FS),它采用秩1简化来标度γ和移位β。具体来说,γ=ˆγ1Tγ= ˆγ1^Tγ=ˆγ1T,β=ˆβ1Tβ= ˆβ1^Tβ=ˆβ1T随着γ∈RCout,βˆ∈RCoutγ∈R^{C_{out}}, βˆ∈R^{C_{out}}γ∈RCout​,βˆ∈RCout​和而移动(见图1(d))。 FS的目标是“选择”迁移的过滤器W;例如,如果ˆγˆγˆγ是二元向量,它从{Wi,:,:,:}\{W_i,:,:,:\}{Wi​,:,:,:}中选择。由于FS不会在CinC_{in}Cin​输入通道之间进行调制,因此其基本假设是,源域和目标域在这些通道之间共享相同的相关性,这可能是不正确的。请见图6中的说明性示例,其中源/目标域的基本图案/滤镜具有几乎红色/几乎绿色的正方形(形状相同);显然,只需选择(FS)源过滤器,就不会将匹配结果传递给目标,在(输入)通道中查看调制(AdaFM)。图7显示了具有FS和AdaFM的模型的结果(使用与图1(h)相同的架构)。显然,AdaFM带来了更高的性能,从经验上证明了上述直觉,即每个Wi,j,:::W_i,j,:::Wi​,j,:::内的基本形状/图案通常都适用,而i,j通道之间的相关性可能是目标特定的(这是进一步由AdaFM验证,可以提高实验中其他数据集的性能)。

图 6

图 7

3.实验

以自然图像生成为例,通过迁移在大型ImageNet上预训练的源GP-GAN模型(包含来自1000个类别的120万张图像)来促进在感知上不同的目标域中生成,从而证明所提出技术的有效性。 (i)四个较小的数据集,即CelebA(202,599),Flowers(8,189),Cars(8,144)和Cathedral(7,350); (ii)他们的修改仅包含1,000张图片的变体; (iii)由25张图片组成的两个极为有限的数据集。

实验通过(i)证明本文的方法相对于现有方法的优势;

​ (ii)进行消融研究,以分析本文方法的每个组成部分的作用;

​ (iii)在仅具有1,000或25个目标图像的挑战性环境中验证提出的技术;

​ (iv)分析AdaFM为何/如何提高性能;

​ (v)说明了利用本文模型的定制特定部分来为数据量有限的应用程序进行数据增强的潜力。生成的图像和FID分数用于评估生成性能。

3.1 与现有方法对比

为了证明本文对现有方法的贡献,作者的方法与(i)TransferGAN进行了比较,后者使用预先训练的GP-GAN模型进行初始化(根据相同的网络架构;请参见图1(f)),然后进行微调目标数据上的所有参数。还考虑了(ii)Scratch,它从头开始使用目标数据训练具有与本文相同架构的模型(参见图1(h))。

实验结果如图8所示,最终的FID分数汇总在表1中。由于TransferGAN采用了源(大型)GP-GAN架构,如果目标数据太有限,则可能会出现过度拟合的情况,表现为训练/模式崩溃;因此,TransferGAN在以下三个小型数据集上失败:鲜花,汽车和大教堂。相比之下,由于量身定制的特定部分,Scratch和本文的方法在所有目标上均能稳定地进行训练数据集,如图8所示。与Scratch相比,本文的方法显示出大大提高的训练效率,这要归功于转移的低级过滤器和显着提高的生成质量(表1中更好的FID),这归因于通用部分,并通过AdaFM更好地适应目标域。

图8

表 1

3.2 消融实验

为了揭示每个成分如何有助于本文方法的出色性能,以顺序方式考虑了四个实验设置。 (a)GP-GAN:采用GP-GAN架构(类似于图1(f),但是所有参数都是可训练的并且可以随机初始化),用作不传输任何低级滤波器的基线。 (b)GPHead:使用图1(f)中的模型来演示迁移的通用部分的贡献。 (c)SmallHead:采用图1(g)中的模型,以揭示量身定制的特定部分。 (d)本文:利用图1(h)中的模型来显示所提出的AdaFM的贡献。

训练期间的FID曲线和比较方法的最终FID分数分别如图9和表2所示。通过将CelebA上的GP-GAN与GPHead进行比较,迁移的通用部分通过显着提高训练效率和提供更好的生成性能做出了贡献;这与上一节中揭示的内容一致 (将Scratch与图8和表1中的Our进行比较)。表2中将SmallHead与GPHead和GP-GAN进行比较表明,量身定制的特定部分有助于减轻过度拟合并提供稳定的训练。通过使迁移的通用部分更好地适应目标域,本文的AdaFM对提升性能做出了最大贡献(将SmallHead与图9和表2中的Our进行比较),

图 9 表 2

3.3 有限数据下的生成

为了验证所提出技术在更具挑战性的环境中的有效性,本文考虑仅使用1,000或25个目标样本进行生成。具体来说,从CelebA,Flowers和Cathedral中随机选择了1,000张图像,以形成其有限的1K变体,分别称为CelebA-1K,Flowers-1K和Cathedral-1K。由于TransferGAN在提供约8,000个目标图像时会失败,因此忽略了它,仅将本文的方法与Scratch对比了这些1K变体。关于25个样本的极其有限的设置,从Flowers和FFHQ中选择25张图像以形成Flowers-25和FFHQ-25数据集,并比较它们的BSA和本文的方法。

FID曲线与1K数据集上的训练迭代之间的关系如图10所示,表3总结了最低的FID。在这种具有挑战性的设置中,Scratch和本文的G4D2通用部件(标记为Our-G4D2)的方法都存在过拟合的问题。由于更多的可训练参数,Scratch受的影响更大;由于本文的方法具有更高的训练效率,因此可能会产生错误的影响;为了清楚起见,请参见本文的方法的最佳性能以及其FID曲线的更缓和的最终斜率。为了减轻过拟合,从预训练的GP-GAN模型中迁移了更多的判别过滤器,其结果也显示在图10和表3中。很明显,对更多转移的信息的数据吸引力较小。另一方面,Our-G4D2的可比较FID(请见表3)表明,在前文中发现的G4D2通用部分在这些1K数据集上的效果相当好。

图 10 表 3

在Flowers-25和FFHQ-25上,由于目标数据的数量非常有限,从预先训练的GP-GAN模型中迁移了更多过滤器(即G4D6),并在真实和假样本上应用GP(梯度惩罚)以缓解过拟合。图11显示了从BSA和本文的方法生成的样本和FID分数。即使在数据极为有限的情况下,使用G4D6通用部件的方法也能很好地工作,并且性能要比基于L1 /感知损失的BSA更好。为了说明学习到的数据流形,图12显示了本文方法中两个随机样本之间的平滑插值,证明了所提出的技术在生成极其有限的数据时的有效性。

图 11 图 12

3.4 AdaFM和量身定制的特定部分风格增强的分析

为了更好地理解为什么在模型的已迁移通用部分中采用AdaFM会提高性能,在图13(a)和13(b)中总结了学习尺度γ和来自生成器通用部分不同组的位移β。显然,所有迁移的滤波器都在目标域中使用(没有零值的γ),但具有调制功能(γ/β的值约为1/0)。随着AdaFM提供增强的性能,这些调制对于成功地从源域转移到目标域至关重要。为了说明γ/β在不同目标数据集上的行为,图13(c)中显示了组2中学习到的γ的比较;不同的数据集更适应于不同的调制方式,从而证明了AdaFM的必要性及其性能增益。关于用灰度图像进一步演示AdaFM和医学/生物学应用,本文对大教堂数据集的灰度变体进行了另一项实验;实验发现,如果没有AdaFM来适应转移的过滤器,在生成的图像中(模糊和凌乱的)会有糟糕的细节(模糊和混乱)(也请参见图7),可能是由于源域和目标域之间的通道之间的不匹配相关性。

为了揭示在利用本文模型的定制特定部分进行数据增强以处理有限数据的应用中的潜力,接下来与特定部分进行样式混合。图14显示了Flowers上的结果。样式混合可以通过样式/属性组合来合成大量新图像。因此,模型的定制特定部分可以用于多种合成增强,这被认为对于数据量有限的下游应用极为有吸引力。

​ 图 13

​ 图 14

4 结论

本文发现,在大型源数据集(例如ImageNet)上进行预训练的GAN模型中的有价值的信息(即低级过滤器)可以被传输,以促进有限的数据在感知上不同的目标域中的生成; 这种迁移在生成器和判别器上均执行。 为了减轻由于目标域数据有限而导致的过拟合,本文采用了一个小型的专用网络在迁移的低级过滤器的顶部,可以进行样式混合,以实现各种合成增强。 为了使传输的滤波器更好地适应目标域,本文提出了自适应滤波器调制(AdaFM),可在数据有限的情况下提高性能。 在有限的数据(例如1,000或25个样本)的挑战性环境中,本文的技术显示出良好的效果。

AI算法后丹修炼炉是一个由各大高校以及一线公司的算法工程师组建的算法与论文阅读分享组织。我们不定期分享最新论文,资讯,算法解析,以及开源项目介绍等。欢迎大家关注,转发,点赞。同时也欢迎大家来平台投稿,投稿请添加下方小助手微信。

QQ交流群:216912253

查看更多交流方式

微信公众号:AI算法后丹修炼炉

小助手ID:jintianandmerry

ICML2020:预训练的GAN在有限数据下的生成器相关推荐

  1. KDD 2022 | 图“预训练、提示、微调”范式下的图神经网络泛化框架

    ©作者 | 社媒派SMP 来源 | 社媒派SMP 本文是SIGKDD 2022入选论文"GPPT: Graph Pre-training and Prompt Tuning to Gener ...

  2. 直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类

    一个审核员一天只能审核5000条文本信息,而在线的UGC资讯网站往往平均一个小时接收的文本信息可能超过百万条.与此同时,还需要将杂乱的内容进行分类并发布到不同的专栏页面--信息爆炸的时代,海量信息的处 ...

  3. 预、自训练之争:谷歌说预训练虽火,但在标注数据上自训练更有效

    公众号关注 "视学算法" 设为 "星标",重磅干货,第一时间送达! 来源 | 机器之心 预训练是当前计算机视觉领域的主要范式,但何恺明等人先前的研究发现,预训练 ...

  4. 《预训练周刊》第6期:GAN人脸预训练模型、通过深度生成模型进行蛋白序列设计

    No.06 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第6期< ...

  5. 达摩院开源预训练数据微调框架UOT NeurIPS论文深入解读

    一.论文 论文链接: Improved Fine-Tuning by Better Leveraging Pre-Training Data 代码链接:https://github.com/ziqua ...

  6. 《预训练周刊》第16期:中科院推出全球首个图文音三模态预训练模型、顶会论文探索100层序列推荐模型的加速训练...

    No.16 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第16期&l ...

  7. 自然语言处理中的预训练技术发展史

    公众号关注 "视学算法" 设为 "星标",重磅干货,第一时间送达! 本文作者:张俊林 https://zhuanlan.zhihu.com/p/49271699 ...

  8. 《预训练周刊》第29期:Swin Transformer V2:扩大容量和分辨率、SimMIM:用于遮蔽图像建模的简单框架...

    No.29 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了10篇预训练相关的论文,涉及图像处理.图像屏蔽编码.推荐系统.语言模型解释.多模态表征.多语言建模.推 ...

  9. 《预训练周刊》第8期:首个千亿中文大模型「盘古」问世、谷歌等提出视频音频文本转换器VATT...

    No.08 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第8期< ...

最新文章

  1. ibaits插入即获取主键(mssql,mysql,oracle)
  2. thinkphp5 mysql uuid_TP6_基类控制器如何向中间件传参
  3. VC MFC界面上显示BMP图片
  4. 有医学又有计算机系的学校,中山最好的中专学校有哪些 十大中专学校排名
  5. 省市县联动javascript版..
  6. vba 执行网页javascript_JavaScript秘密笔记 第一集
  7. 分支定义之Trunk vs Master
  8. 排序算法之 归并排序
  9. matlab详细手册,matlab详细手册
  10. python判断是否登录成功_python-42: 怎么判断模拟登录是否成功
  11. android 垂直方向布局,Android详解4种基本布局
  12. 常用应届生Java开发笔试面试题(更新中)
  13. uni-app App和H5平台上传视频截取视频第一帧生成图片
  14. 中国石油沥青行业市场供需与战略研究报告
  15. Docker容器化开发流程(一)介绍
  16. Qt总结(六)-- 图表数据曲线
  17. hp打印机一直显示正在打印中_HP打印机提示文档正在打印,但就是打印不了?...
  18. FSA-Net: Learning Fine-Grained Structure Aggregation for Head Pose Estimation from a Single Image
  19. 面试笔记@MySQL
  20. WordPress插件-WP Mail SMTP

热门文章

  1. Wex5 组件的bind-visible属性控制显隐
  2. 如何查询计算机已连接wife的密码错误,三种方法查询已连接 WiFi 的密码,简单实用!...
  3. 5、三色旗问题_python版本(附神图)
  4. Django实战搭建mock系统(六)_邮件发送令牌,点击令牌激活账号
  5. c语言实验平台答案,山东理工大学ACM平台题答案 C语言实验——打印数字图形 1179...
  6. 微信支付开发出现redirect_uri参数错误的解决方法
  7. RTSP协议,感觉还不错
  8. OneNET物联网平台01 创建MQTTS产品和设备
  9. 用matlab实现数字水印,应用MATLAB实现数字水印算法(1)
  10. webpack 通用模块(每个页面都用到的js)编译