动漫风格化—AnimeGANv2
animegan2_face2paint_v2
bryandlee/naver-webtoon-faces
AnimeGANv2
项目
[Project]AnimeGANv2
摘要
在计算机视觉和艺术风格转移方面,将现实世界场景的照片转换为动漫风格的图像是一项有意义且具有挑战性的任务。我们之前提出的AnimeGAN结合了神经风格迁移合生成对抗网络(GAN)来完成这项任务。但是,AnimeGAN仍然存在一些明显的问题,例如模型生成的图像中存在高频伪影。因此,在本研究汇总,我们提出了AnimeGAN的改进版本,即AnimeGANv2。它通过简单的改变网络中特征的归一化来防止高频伪影的产生。此外,我们进一步缩小了生成器网络的规模,以实现更高效的动画风格转换。在新建立的高质量数据集上训练的AnimeGANv2可以生成视觉质量比AnimeGAN更好的动画图像。
方法
AnimeGANv2使用特征成归一化来防止网络在生成的图像汇总产生高频伪影。但是,Anime GAN由于使用了实例归一化,很容易产生高频伪影,这与styleGAN产生高频伪影的原因是一样的。事实上,总变化损失并不能完全抑制高频噪声的产生。实例归一化通常被认为是风格迁移中最好的归一化方法。它可以使特征图中的不同通道具有不同的特征属性,从而促进模型生成的图像中风格的多样性。层归一化可以使特征图中的不同通道具有相同的特征属性分布,可以有效防止局部噪声的产生。
AnimeGANv2中生成器的网络结构如图2所示。K表示卷积核的大小,S表示步长,C表示卷积核的个数,IRB表示反向残差块,resize表示插值上采样方法,SUM表示逐元素相加。AnimeGANv2的生成器参数大小为8.6MB,AnimeGAN的生成器参数大小为15.8MB。AnimeGANv2使用与AnimeGAN相同的判别器,不同之处在于判别器使用层归一化而不是实例归一化。
AnimeGANv2使用的三个动画风格数据集如表1所示。训练中使用的图像尺寸为256*256,这些风格图像均来自对应的高清风格电影中的视频帧。图3显示了AnimeGANv2在三种风格的测试数据集上的定性结果。
Download Style Dataset Link
源码(TensorFlow版本)
TachibanaYoshino/AnimeGANv2
AnimeGANv2的改进
AnimeGANv2的改进方向主要包括以下4点:
- 解决生成图像中高频伪影的问题。
- 训练简单,直接实现论文中的效果。
- 进一步减少生成器网络的参数数量。 (生成器大小:8.17 Mb),精简版具有较小的生成器模型。
- 使用新的高质量风格数据,尽可能来自BD电影。
要求
使用
- inference
python test.py --checkpoint_dir checkpoint/generator_Hayao_weight --test_dir dataset/test/HR_photo --save_dir Hayao/HR_photo
- train
结果
- Photo to Paprika Style
- Photo to Hayao Style
源码(PyTorch版本)
bryandlee/animegan2-pytorch
AnimeGANv2 的 PyTorch 实现。
基本用法
python test.py --input_dir /opt/xxx/data/image --checkpoint_dir ./weights/face_paint_512_v2.pt --device cpu
Torch Hub用法
TORCH.HUB
Pytorch Hub 是一个预训练模型存储库,旨在促进研究的可重复性。
- 发布模型
Pytorch Hub 支持通过添加一个简单的 hubconf.py 文件将预训练模型(模型定义和预训练权重)发布到 github 存储库;
hubconf.py 可以有多个入口点。 每个入口点都定义为一个 python 函数(例如:您要发布的预训练模型)。
如果我们在 pytorch/vision/hubconf.py 中扩展实现,这里有一个代码片段指定 resnet18 模型的入口点。 在大多数情况下,在 hubconf.py 中导入正确的函数就足够了。 这里我们只是想以扩展版本为例来说明它是如何工作的。 你可以在 pytorch/vision repo 中看到完整的脚本。
- 依赖项变量是加载模型所需的包名称列表。 请注意,这可能与训练模型所需的依赖项略有不同。
- args 和 kwargs 被传递给真正的可调用函数。
- 该函数的文档字符串用作帮助消息。 它解释了模型做什么以及允许的位置/关键字参数是什么。 强烈建议在此处添加一些示例。
- 入口点函数可以返回模型(nn.module)或辅助工具以使用户工作流程更顺畅,例如 标记器。
- 以下划线为前缀的可调用对象被视为辅助函数,不会出现在 torch.hub.list() 中。预训练的权重可以本地存储在 github 存储库中,也可以通过 torch.hub.load_state_dict_from_url() 加载。 如果小于 2GB,建议将其附加到项目版本并使用版本中的 url。 在上面的示例中,torchvision.models.resnet.resnet18 处理预训练,或者您可以将以下逻辑放入入口点定义中。
注意:发布的模型应该至少在一个分支/标签中。 它不能是随机提交。
2.从 Hub 加载模型
Pytorch Hub 提供了方便的 API,可以通过 torch.hub.list() 探索 hub 中的所有可用模型,通过 torch.hub.help() 显示文档字符串和示例,并使用 torch.hub.load() 加载预训练模型。
请注意,torch.hub.load() 中的 *args 和 **kwargs 用于实例化模型。 加载模型后,如何找出可以对模型执行的操作? 建议的工作流程是- dir(model) 以查看模型的所有可用方法。
- help(model.foo) 检查 model.foo 需要哪些参数来运行
为了帮助用户在不来回参考文档的情况下进行探索,我们强烈建议 repo 所有者使函数帮助消息清晰简洁。 包含一个最小的工作示例也很有帮助。
默认情况下,我们不会在加载后清理文件。 如果 get_dir() 返回的目录中已经存在缓存,则 Hub 默认使用缓存。
用户可以通过调用 hub.load(…, force_reload=True) 来强制重新加载。 这将删除现有的 github 文件夹和下载的权重,重新初始化一个新的下载。 当更新发布到同一个分支时,这很有用,用户可以跟上最新版本。
Torch hub 通过导入包来工作,就像它已安装一样。 在 Python 中导入会引入一些副作用。 例如,您可以在 Python 缓存 sys.modules 和 sys.path_importer_cache 中看到新项目,这是 Python 的正常行为。
这里值得一提的一个已知限制是用户不能在同一个 python 进程中加载同一个 repo 的两个不同分支。 就像在 Python 中安装两个同名的包一样,不好。 如果您真的尝试,Cache 可能会加入聚会并给您带来惊喜。 当然,将它们加载到单独的进程中是完全可以的。
权重转换(TensorFlow->PyTorch)
- 安装原始仓库的依赖项:python 3.6, tensorflow 1.15.0-gpu
- 安装 torch >= 1.7.1
- 克隆原始仓库并运行
git clone https://github.com/TachibanaYoshino/AnimeGANv2
python convert_weights.py
- 示例
转换后的Paprika
样式模型的结果(从左到右为:输入图像,原始 tensorflow 结果,pytorch 结果)。注意:由于双线性上采样问题,转换权重的结果略有不同。
附加模型权重
Webtoon Face
在 256x256 人脸图像上训练。 从带有 L2 + VGG + GAN 损失和 CelebA-HQ 图像的 webtoon 人脸模型中提取。
Face Portrait v1
在 512x512 人脸图像上训练。
Face Portrait v2
在 512x512 人脸图像上训练。 相比v1,动漫风格化—AnimeGANv2相关推荐
- 【项目实战课】基于Pytorch的UGATIT人脸动漫风格化实战
欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的UGATIT人脸动漫风格化实战>.所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实 ...
- 实现制作动漫版的你---动漫风格迁移网络AnimeGANv2
AI依然火 最近居家太无聊了,无意见逛到了AI社区,发现最近AI算法热度还是很高,什么AI绘画,还有什么AI作诗,写歌.可以说,人工智能领域在一步步挑战人类的高度,从循规蹈矩的简单工作,到高难度的智慧 ...
- MATLAB 手把手教你如何将视频水彩风格化(简易版)
前言 原本想做视频动漫风格化的,动漫风格化要求图片色块分明,所以用到的是保边缘性极强的双边滤波,但由于双边滤波需要每张图片多次滤波才能出效果,等待时机较长,MATLAB处理循环的能力并不太适合. 事实 ...
- 剥茧抽丝做 UI 动效,其实很简单
作者 / Jonas Naimark,Google Material Design 团队动效设计师 动效有助于改善 UI 的表现力和易用性.它拥有很大的潜力,但它也可能是所有设计学科中最不被人了解的一 ...
- 【项目实战课】基于Pytorch的InceptionNet花卉图像分类实战
欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的InceptionNet花卉图像分类实战>.所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行 ...
- 【总结】最系统化的CV内容,有三AI所有免费与付费的计算机视觉课程汇总(2022年12月)...
欢迎大家关注有三AI的计算机视觉课程系列,我们的课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用等. 第2层: ...
- 【重要通知】即将截止 ,2022年国际高性能大数据暨智能系统会议征稿!
第四届国际高性能大数据暨智能系统会议(The 4th International Conference on High Performance Big Data and Intelligent Sys ...
- 【项目实战合集】计算机视觉毕业设计项目怎么选,超30个经典案例供你选择...
每年到了搞毕业设计的时候,很多学生朋友都很头疼,指导老师给不了好题目,自己也没有什么好的想法,怕选的太容易了过不了,怕选的太难了做不出!今年我们在计算机视觉方向出了[超过30个基于Pytorch框架] ...
- 【重要】2022年国际高性能大数据暨智能系统会议征稿了!
第四届国际高性能大数据暨智能系统会议(The 4th International Conference on High Performance Big Data and Intelligent Sys ...
最新文章
- python词频云图_python安娜卡列妮娜词云图制作
- 从0开始学Java——@override的作用
- babel7中 preset-env 完全使用
- 对学校的希望和寄语_家长对孩子的期望寄语精选
- datepick二格式 化时间_考研经验分享(三)英语二作文模板
- MySQL了content函数_MySql字符串函数使用技巧
- Any problem in computer science can be solved with another layer of indirection
- php简单分页,php简单实现分页查询的方法
- 阿里云安全肖力:从RSA2019看安全技术发展的十个机遇
- 5个学习Linux命令站点推荐
- unix环境高级编程-文件和目录(1)
- Ubuntu1404+Django1.9+Apache2.4部署配置1安装
- Maya中英文对照表(四)
- 差点跑进奥运会赛场的“人类计算机之父”
- iOS-Property follows Cocoa naming convention for returning ‘owned‘ objects
- 最好用的视频压缩软件压缩教程
- 计算机桌面右键新建展不开,右键新建中没有excel怎么办
- uniapp开发抖音小程序注意事项
- Confluence创建自动填充序列表格
- Py正则表达式学习笔记:特殊字符——中括号表达式、限定符表达式
热门文章
- 自然语言处理总复习(十一)—— 信息检索
- 一些面试时候可能遇到的问题
- 服务器怎么自动换ip,自动任务给服务器自动换IP,给服务器bat一键设置IP
- dbo.java_开源词袋模型DBow3原理源码(一)整体结构
- 社区力量 | 你的凤霞你来定
- 传感器采集的数据怎么处理、怎么存储【flink】【influxdb】
- spring的redis注解清除指定前缀的数据@CacheEvict
- myeclipse怎样批量重命名变量_360问答 快捷键Shift+Alt+R,选择你要改的,改完后按回车就可以了。修改的是所有的,小心...
- 恋爱算法 - 麦穗理论-推导过程
- 社交直播app开发详细流程
- 【项目实战课】基于Pytorch的UGATIT人脸动漫风格化实战