python简笔画程序_只用C++和Python,让你的简笔画实时动起来!
原标题:只用C++和Python,让你的简笔画实时动起来!
大数据文摘出品
作者:刘俊寰
让蒙娜丽莎笑起来对AI来说已经不是什么新鲜事了。
试想,如果在画纸上创作的图像能够实时地生成动画,达芬奇可能会吓个半死。
没错,文摘菌今天要给大家介绍的,就是捷克技术大学和Snap研究小组合作开发的一种全新的样式转换技术,在论文“使用基于少量补丁的培训进行交互式视频样式化”中,他们提出,该技术将够 将某种绘画风格的静态图像实时格转换为动态动画。
效果嘛还是自己看了才知道:
据了解,研究小组利用了 深度学习,在将手写样式转换为图像或视频的过程中, 仅仅对样式进行转换,内容原型的创作风格丝毫不会受到影响。
同时,与此前的转换方法相比而言,这项技术 无需借助庞大的数据集,甚至无需进行预训练,对关键帧进行的样式设置就是训练网络的唯一数据来源。
20万参数设置,每秒17帧进行风格转换
整个实验中,研究人员主要利用的编程语言是 C++和Python。
对于选定的评估序列中的帧,研究人员计算了它们的样式化,在有48个Nvidia Tesla V100 GPU环境下模拟3天后就完成了。
整个实验总共 抽查了大约200,000个不同设置的超参数(hyperparameters),并在以下区间内进行了对比实验,Wp∈(12,188),Nb∈(5,1000),Nr∈(1,40),α∈(0.0002,0.0032),最终发现 最佳的补丁大小(optimal patch size)为Wp=36。
下图比较了不同超参数设置的视觉质量,其中超参数优化一个很有趣的结果是,在左边的图像中,一个批次的补丁Nb=40相对较少,这与选择的基于补丁的训练方案相互作用。虽然常见的策略是尽可能扩大Nb,以利用GPU能力,但在案例中,增加Nb实际上却只会适得其反,因为它将训练方案变成了全帧方案,往往会使网络在关键帧上过度拟合。
中间的图像即是最佳补丁大小Wp=36,较小的补丁可能无法提供足够的上下文,较大的补丁可能会使网络对目标对象的变形,从而使得网络对目标对象的变形引起的外观变化的抵抗力较差。
但在右图中,令人惊讶的是,ResNet区块数Nr对质量没有明显影响,尽管有一个微妙的鞍点(saddle point),对学习率参数α进行实验也能发现类似的效果。
在将所有的超参数优化后,研究人员发现,对于有效像素10%、分辨率640×640的视频序列,可以 以每秒17帧的速度进行风格转换。
研究人员利用了一组分辨率从350×350到960×540的视频序列对系统进行了评估,这些视频包含不同的视觉内容,如人脸、人体等,以及不同的艺术风格,如油画、粉笔画等。
对于相对简单的序列而言,仅使用一个关键帧就可以进行样式转换,更复杂的序列则需要使用多个关键帧。在训练前,研究人员利用双侧时间滤波器(bilateral temporal filter)对目标序列进行了预滤波,当序列包含有不明确内容时,计算一个辅助输入层利用到了随机有色的高斯混合,以跟踪目标序列中的运动。
在训练阶段,研究人员从所有关键帧k中随机抽取掩码Mk内的补丁,将它们分批反馈给网络来计算丢失和反向传播错误,随后在Nvidia RTX 2080 GPU上进行训练和推理。训练时间与输入补丁数量成正比,例如,对于包含掩码内所有像素的512×512关键帧,训练时间为5分钟。训练完成后,整个序列可以以大约每秒17帧的速度进行风格转换。
实时样式转换如何炼成?
相关样式转换的技术早在2016年就有人想到了,当时,在一篇名为“使用卷积神经网络进行图像样式转换”的论文中,研究人员提出了一种 结合了VGG与CNN的转换技术,能够做到把内容与样式有效区分的同时,保留内容转换样式。
在这之后,出现了一些将该项技术推广到电影或视频领域的应用,其中 找到分离图像内容和样式的损失函数是关键。
2019年,有研究人员提出了一种机制更改视频的一个关键帧,并将其传输到另一个序列(整个视频)中的方法,这种基于补丁的输出能够得到高质量的结果输出。
不过,这些转换技术仍然只能针对连续视频进行样式转换,也就是说,它们不支持 随机访问、并行处理和实时交互,而这些正是能够实时转换图像的技术核心。
为了实现实时样式转换,研究人员在进行系统设计时对之前的研究进行了一定程度的参考,比如在设计滤波器时,他们采用了一种基于U-net的图像到图像转换框架,这种自定义网络架构能够保留原始风格范例的重要高频细节。
但是在训练过程中,他们发现系统产生的结果质量无法达到标准,这是因为原始网络是基于FaceStyle算法产生的大量风格样本数据集训练,这导致该方法在很多场景下不可使用。同时,原始方法没有考虑到时间的连贯性,生成的序列也包含了明显的时间闪烁。
为此,研究人员改变了网络的训练方式,并提出了一个优化问题,允许对网络的结构和超参数进行微调,以获得与当前最先进的风格化质量相媲美的风格化质量,这样的话,即使只有少量的训练样本也可实现目的,而且训练时间较短。
当然,除了滤波器设计之外,要实现实时样式的转换,研究团队还做出了不少创新,文摘菌在这里就不过多剧透了,想要了解更多细节的小伙伴们快去原文挖宝吧~
论文链接:
https://ondrejtexler.github.io/res/Texler20-SIG_patch-based_training_main.pdf
提供300分钟视频讲解,教学大纲、课件、教案、习题答案、程序源码等配套资源。
扫码,优惠购书
凡是在京东购书的用户,可以将订单信息和评价发到itbook8@163.com,将会获取超值大礼包(包括案例源码,超多的视频教程,数据集等资源)返回搜狐,查看更多
责任编辑:
python简笔画程序_只用C++和Python,让你的简笔画实时动起来!相关推荐
- python简笔画大全_只用C++和Python,让你的简笔画实时动起来!
原标题:只用C++和Python,让你的简笔画实时动起来! 大数据文摘出品 作者:刘俊寰 让蒙娜丽莎笑起来对AI来说已经不是什么新鲜事了. 试想,如果在画纸上创作的图像能够实时地生成动画,达芬奇可能会 ...
- python中终止程序_如何结束运行python程序
有时当一个条件成立的情况下,需要终止程序,可以使用sys.exit()退出程序. sys.exit()会引发一个异常 1.如果这个异常没有被捕获,那么python编译器将会退出,后面的程序将不会执行. ...
- python怎么导出程序_[272]如何把Python脚本导出为exe程序
一.pyinstaller简介 pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行 最新版是pyinstaller 3.1.1.支持python2.7和py ...
- python回测代码_只用3行Python回测你的交易策略
作者|Lorenzo Ampil 编译|VK 来源|Towards Data Science 自从我开始学习投资,我接触了不同的股票分析方法-技术分析和基本面分析.我甚至读过很多关于这些技巧的书和文章 ...
- python求众数程序_求众数(python实现)
题目描述: 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...
- python嵌入到程序_在应用中嵌入Python:转
前面的章节讨论如何扩展Python,如何生成适合的C库等.不过还有另一种情况:通过将Python嵌入C/C++应用以扩展程序的功能.Python嵌入实现了一些使用Python更合适的功能.这可以有很多 ...
- Python 图像 一样大小_#带你学Python# 表白利器:用Python发微信表情画-带你认识图片的秘密...
首先感谢大家对上篇文章"python实现传染病模型"的肯定: 孙小白:#带你学Python# 疫情当前,在家没事?你也可以用Python预测疫情发展zhuanlan.zhihu. ...
- python编程第一程序_第一个Python程序_Python编程开发教程
第一个Python程序 用notepad++编写程序代码 语言设置为python(高量显示函数和关键字)(注意:行首不能有空格,Python对缩进要求严格) 命令提示符运行 cd \文件名 #打开py ...
- python写机器人程序_用Python写的一个多线程机器人聊天程序
本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...
最新文章
- 过年回家抢票不求人,试试这个开源抢票神器吧!
- Java 压缩字符串
- MySQL-MMM架构部署(有图)
- 模拟银行取钱 (多线程操作的好处)
- 如何设计一门语言(三)——什么是坑(面向对象和异常处理)
- LeetCode 12/13 罗马数字与整型互转(哈希,贪心)
- 检测Linux系统是否支持某系统调用
- 六、访问CGI变量 (基础教程6)
- FPGA时钟激励编写(方法三)
- c++ std::async的注意事项
- 【零基础学Java】—类的定义(七)
- SharePoint 2010 使用代码创建视图查询条件
- 点线面的意义_如何运用设计中的点线面?
- 二元序列游程编码c语言,基于游程编码数据压缩算法设计与实现.doc
- NAT64实例(ENSP实现)
- CUDA入门2——获取显卡参数
- centos格式化优盘命令_Centos7 格式化分区并挂载
- Endnote X9 插入参考文献、设置参考文献格式
- bitbucket搭建
- 十七、电话号码的字母组合