neural-style是一种基于神经网络的图像风格化算法,可以使用已有的艺术作品的风格来生成新的艺术作品。
TensorFlow 中神经风格的实现。
由于 TensorFlow 非常好的 API 和自动微分,这个实现比其他许多实现简单得多。
TensorFlow 不支持L-BFGS(原作者使用的是 L-BFGS),因此我们使用Adam。这可能需要更多的超参数调整才能获得不错的结果。
python neural_style.py --content <content file> --styles <style file> --output <output file>
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
运行python neural_style.py --help
以查看所有选项的列表。
使用--checkpoint-output
和--checkpoint-iterations
保存检查点图像。
用于--iterations
更改迭代次数(默认 1000)。对于 512×512 像素的内容文件,1000 次迭代在 GTX 1080 Ti 上需要 60 秒,在 Maxwell Titan X 上需要 90 秒,在 Intel Core i7-5930K 上需要 60 分钟。由于巨大的加速,强烈建议使用 GPU。
运行它 500-2000 次迭代似乎产生了不错的结果。对于某些图像或输出大小,您可能需要一些超参数调整(尤其 --content-weight
是--style-weight
、 和--learning-rate
)。
以下示例运行 1000 次迭代以生成结果(使用默认参数):
这些是使用的输入图像(我在黑客马拉松和星夜中睡觉):
以下示例演示了样式混合,并运行了 1000 次迭代以生成结果(样式混合权重参数为 0.8 和 0.2):
内容输入图像是麻省理工学院 Stata 中心的图片:
风格输入图像是 Picasso 的“Dora Maar”和 Starry Night,Picasso 图像的风格混合权重为 0.8,Starry Night 的风格混合权重为 0.2:
--style-layer-weight-exp
命令行参数可用于调整样式转换的“抽象”程度。较低的值意味着更精细特征的风格转移将优于更粗糙特征的风格转移,反之亦然。默认值为 1.0 - 所有层都被平等对待。您可以实现的一些极端示例:
(左:0.2 - 更精细的特征风格迁移;右:2.0 - 更粗略的特征风格迁移)
--content-weight-blend
指定内容传输层的系数。默认值 - 1.0,样式转换尝试保留更细粒度的内容细节。该值应在 [0.0; 1.0]。
(左:1.0 - 默认值;右:0.1 - 更抽象的图片)
--pooling
允许选择要使用的池化层(指定 或max
)avg
。原始 VGG 拓扑使用最大池化,但风格转移论文建议将其替换为平均池化。输出在感知上是不同的,最大池通常倾向于具有更精细的细节样式转换,但在较低频率的细节级别可能会遇到麻烦:
(左:最大池化;右:平均池化)
--preserve-colors
布尔命令行参数添加了后处理步骤,它结合了原始图像的颜色和程式化图像(YCbCr 颜色空间)的亮度,从而产生保色风格转移:
(左:原始风格化图像;右:保色风格迁移)
106118b7cf60435e6d8e04f6a6dc3657
) - 把它放在这个存储库的顶层,或者使用选项指定它的位置--network
。您可以使用安装 Python 依赖项pip install -r requirements.txt
,它应该可以正常工作。如果你想手动安装软件包,这里有一个列表:
请参阅此处了解TensorFlow 中快速(前馈)神经风格的实现。
在不安装任何软件的情况下(使用TensorFire )在 Web 浏览器中尝试神经风格客户端 。
如果您在工作中使用此实现,请引用以下内容:
@misc{athalye2015neuralstyle,
author = {Anish Athalye},
title = {Neural Style},
year = {2015},
howpublished = {\url{https://github.com/anishathalye/neural-style}},
}
版权所有 (c) Anish Athalye。在 GPLv3 下发布。有关详细信息,请参阅 LICENSE.txt。
[/hidecontent]