前段时间,有人根据一篇字节跳动联名的 AI 论文,做了个可将视频、图片一键卡通化的 Web 端应用 Cartoonize。
Cartoonize
Cartoonize 现在已经开源,使用非常简单,只要上传需要转换的图片、视频即可。Cartoonize 转换可以很好地还原原图细节,下面是人像、风景、食物等实景的转化图。
Cartoonize 还支持10秒以内的视频转换,上一段《复仇者联盟》视频转化效果。
(官网转换视频截图,实际视频效果可进官网查看)
据其官网介绍,Cartoonize 适合四种场景的转换:快速制作动画,卡通和游戏的原型;由于它通常可柔化面部特征和信息,因此可用于生成最小单位的艺术做品;无需使用动作捕捉,游戏可以很容易地导入短视频;可以为图形设计师或动画师做建模助手。
对可转换图片视频的大小格式,Cartoonize 做了一定限制,目前只支持转换10秒及以内的视频,视频文件最大为30 MB,支持的格式包括 mp4、webm、avi、mkv。支持的图像文件格式为 jpeg、png,不支持 GIG/TIFF 图像。
算法:
Cartoonize 使用 Algorithmia 的 Serveless AI Layer 产品对视频进行推理。
测试环境:
- python 3.7
- tensorflow 2.1.0
- tf_slim 1.1.0
- Cuda version 10.1
- 操作系统:Linux(Ubuntu 18.04)
安装:
使用 Docker:
运行 Cartoonize 最简单方法是使用 Dockerfile:
cd
到根目录并构建映像
docker build -t cartoonize .
注意:config.yaml
在构建图像之前,请设置适当的值。
2. 通过暴露适当的端口来运行容器
docker run -p 8080:8080 cartoonize
使用 virtualenv
- 使用
virtualenv
并激活虚拟环境
virtualenv -p python3 cartoonize source cartoonize/bin/activate
2. 安装 python 依赖项
pip install -r requirements.txt
3. 运行网络应用。config.yaml
在运行应用程序之前,请确保在文件中设置适当的值。
python app.py
项目官网:https://cartoonize-lkqov62dia-de.a.run.app/cartoonize
White-box-Cartoonization:白盒图像卡通化模型
如果想了解更多影像资料卡通化的训练模型和过程,可以查看 Cartoonize 背后的技术论文和项目。事实上,Cartoonize 是 White-box-Cartoonization 的一个 Demo webapp。Cartoonize 核心技术来自 CVPR 2020的投稿论文《Learning to Cartoonize Using White-box Cartoon Representations》,该论文作者系字节跳动、东京大学、Style2Paints Research 人员。
该论文提出了一种基于 GAN 的白盒可控的图像卡通化模型。
论文指出,各种卡通风格和用处需要基于特定任务或者先验知识才能开发可用的算法。例如有些卡通画更关注全局色调,线条清晰度在次;有些强调稀疏和干净的色块,对主题强调少。然而这些变量因素给黑盒模型带来了不小的挑战,如当面对艺术家不同的需求时,简单地更改训练数据集就于事无补了。使用黑盒模型直接拟合训练数据会降低其通用性和风格化质量,在一些情况下导致较差效果。
通常来说,黑盒模型通常有很高的准确性,但是其内部工作难以理解和改动,并且它们不能估计每个特征对模型预测的重要性,也不容易理解不同特征之间如何相互作用。而白盒模型则可以更为自由地修改模型中的某些算法,使之更加灵活地适应不同需求场景。
论文作者指出,为了解决黑盒模型的一些问题,他们对人们的绘画行为和不同风格的卡通形象进行了大量的观察,并咨询了几位卡通艺术家,建议将图像分解为几种卡通表征方式:提取一个带权重的低频内容,表示图片的轮廓表征;针对输入图像,提取分割图,在每个分割区域使用一个自适应的色彩算法生成结构表征;保持绘画细节和边缘的纹理表征。
The separately extracted cartoon representations enable the cartooniaztion problem to be optimized end-to-end within a Generative Neural Networks (GAN) framework,making it scalable and controllable for practical use casesand easy to meet diversified artistic demands with taskspecific fine-tuning.
单独提取的卡通表征形式使卡通化问题可以在生成神经网络(GAN)框架内进行端到端的优化,在实际使用场景中,使其可扩展和可控,易于满足不同的技术需求,也可以根据需求进行微调。
基于该论文的 White-box-Cartoonization 现在已经部分开源。
安装使用:
先决条件:
- 培训代码:Linux 或 Windows
- NVIDIA GPU + CUDA CuDNN 性能
- 推断代码:Linux,Windows 和 MacOS
安装:
- 假设已经安装了 NVIDIA GPU 和 CUDA CuDNN
- 安装 tensorflow-gpu,已经测试过 1.12.0 和 1.13.0rc0
- 安装 scikit-image == 0.14.5,其他版本可能会带来问题
预训练模型推论:
- 将测试图像存储在/test_code/test_images 中
- 运行/test_code/cartoonize.py
- 结果将保存在/test_code/cartoonized_images 中
训练:
- 将训练数据放在/dataset 中的相应文件夹中
- 运行 pretrain.py,结果将保存在/pretrain 文件夹中
- 运行 train.py,结果将保存在/train_cartoon 文件夹中
- 从生产环境中清除代码,并且未经测试
- 可能会有一些小问题,但应该很容易解决
- 可以在以下网址找到预训练的 VGG_19模型:https://drive.google.com/file/d/1j0jDENjdwxCDb36meP6-u5xDBzmKBOjJ/view
数据集:
- 由于版权问题,无法提供用于训练的卡通图像,但是这些训练数据集很容易准备
- 风景图来自新海诚,宫崎骏和细田守拍摄的电影
- 将影片剪辑成帧,并随机裁剪调整为256x256
- 人像图像来自京都动画和 PA Works
- 使用此仓库(https://github.com/nagadomi/lbpcascade_animeface)检测面部区域
- 手动清理数据将大大提高两个数据集的质量