拒绝黑盒,可调可控,你喜欢的样子我都有:CVPR2020年代的图像卡通化

拒绝黑盒,可调可控,你喜欢的样子我都有:CVPR2020年代的图像卡通化

2020.08.02更新:原来的模型在人脸图片上效果不太好,更新了一版人脸模型,pytorch代码和模型已开源到github:

https://github.com/SystemErrorWang/FacialCartoonization/blob/master/README.mdgithub.com


2020.07.01更新:因为标题里面用了white-box,在introduction里面阐述了为何black-box方法有缺点,white-box方法更好,而且在展示人物效果时没有选用黑人,这篇文章在外网被锤racial了。发现那个帖子的我被笑死,链接就不放了,有兴趣可以google一下。另外听朋友说,一个美国公司在软件中未经允许使用了这个项目的cc-by 4.0开源代码,看来要考虑如何律师函警告了。

大家好,我是练习时长两年半的个人炼丹师,爱好是唱跳rap和神经网络。还在两年多以前,刚开始自学CV的(因为喜爱acg而去日本留学的)我(乔鲁诺乔巴拿)就有一个梦想:通过(神)人(经)工(病)智(网)能(络)将三次元的场景变成二次元。当时还是菜鸡的我试过很多不靠谱的方法:各种Style Transfer,CycleGAN,UNIT,但是效果都不好。正当我忙着打工赚钱找工作写毕业论文的时候,CaroonGAN在CVPR2018上发表了,一看效果居然还不错。那段时间正好在经历回国被甩被裁员等一系列社会教做人,于是暂时搁置了。


19年4月底偶然看见一篇论文,觉得拿来做这个task说不定挺有效,顿时老夫聊发少年狂,熬夜写了代码洗了数据开始跑。大约调了一个半月有了初步的效果,也找到了合作者,但是万里长征从这里才开始。能上CVPR的工作肯定是Novelty和效果都要好,为此我们开始了长达四个月的黑科技探索,毙掉了无数不靠谱的没效果的和没有新意的方法。作为白天还有其他正式工作的社畜,不知道熬了多少个夜(还把自己电脑烧坏了),终于有了这个主打白盒可控的图像卡通化算法。


作为一个小透明在CV圈子里默默吃了这么久的瓜,感觉天下苦黑盒久矣。每隔一段时间都能看到大佬喷black box,说有些工作直接暴力怼一个大网络做end2end,然后加一个fancy的损失函数,最后性能提升也不知道是更多的网络参数,更大的数据集还是方法本身在起作用。穷B的我既没钱买数据集,也没钱买很多显卡,于是只能把心思放在分析卡通图像本身的特征上。通过找到卡通图像的特征,用图像处理方法简易近似地提取这些特征,再分别用损失函数和判别器来学习它们的分布,最终得到卡通化网络。这样做的好处在于,每个部分在整个框架中的功能是非常明确的,因此可以通过调整损失函数的权重,来调整最终学习到的风格。另外由于学习目标明确,模型也可以做得很小。我们最终训练好的模型在gpu上可以实时处理720*1280p的视频(接近60fps),在手机上处理单张图片也不会耗时太久。

好啦,我也知道Talk is cheap,so I will show you the code here:

项目主页:systemerrorwang.github.io

代码:github.com/SystemErrorW

视频:bilibili.com/video/av56

也有喜闻乐见的真相:

编辑于 08-03