用Python让小朋友的手绘图跳起来

今天给大家介绍一个非常有趣的项目,基于AI识别,制作儿童手绘图舞蹈图

只需几分钟,就能自动生成儿童手绘人物或类人角色(即具有双臂、两条腿等的角色)的动画,而且生成的动画还能做到栩栩如生。

不仅可以跳舞,还能打跆拳道、空中飞踢,模拟人的动作。

img

/ 01 /

项目介绍

这个项目目前仅在macOS和Ubuntu系统上测试过,Windows系统会出问题。

本人使用的是Ubuntu20.04系统,基本没什么问题。

大致就是通过一下几个流程进行实现的。

    • 通过物体检测识别人形
    • 使用角色mask从场景中提升人形
    • 通过「装配」为动画做准备
    • 三维运动捕捉制作2D人物动画

图片

接下来就来教大家如何去部署。

/ 02 /

项目部署-Python

首先需要安装Anaconda(版本4.11.0),方便创建Python环境。

Anaconda的安装方法,大家可以自行百度,还是比较容易的。

安装好以后,创建虚拟环境,下载项目,安装所需的依赖。

# 创建虚拟环境
conda create --name animated_drawings python=3.8.13

# 激活环境
conda activate animated_drawings

# 下载项目
git clone https://github.com/facebookresearch/AnimatedDrawings.git

# 打开目录文件
cd AnimatedDrawings

# 安装依赖
pip install -e .

/ 03 /

项目部署-运行

1. 快速开始

现在一切都已设置好,让我们为绘图制作动画吧!

在终端使用如下代码。

(animated_drawings) AnimatedDrawings % python

# 在Python终端里运行如下代码
from animated_drawings import render
render.start('./examples/config/mvc/interactive_window_example.yaml')

我们看一下这个yaml配置文件的内容。

图片

包含了以下文件。

character_cfg——目标文件

motion_cfg——动作文件

retarget_cfg——识别目标文件

其中目标文件可以使用以下几类,对于目标的具体情况可以查看joint_overlay.png。

图片

动作文件则可以使用以下几类,包含爵士舞、开合跳等动作。

图片

目标识别文件是可以使用以下几类,不同类型的目标,不单单是类人的目标

还有四条腿的猪,六个胳膊的甲壳虫~

图片

有四条腿的目标识别文件。

图片

还有六个胳膊的目标识别文件。

图片

最终运行上述命令,会在桌面弹窗生成一个动画。

使用空格键暂停/取消暂停场景,箭头键可以控制前后移动,q键关闭屏幕。

图片

原图是这样的。

图片

是不是感觉非常有趣,将小朋友的杰作,变成一个个活蹦乱跳的目标。

如果你想修改角色、动作、场景的话,便可以按照上面的说明,替换interactive_window_example.yaml文件中的内容来实现。

  1. 导出MP4视频

如果你是想将动画保存为视频文件而不是直接在窗口中查看。

可以在Python解释器中使用如下代码。

from animated_drawings import render

# 导出MP4视频
render.start('./examples/config/mvc/export_mp4_example.yaml')

配置文件内容,相比上面的文件,多了几个参数。

在这里插入图片描述

结果如下。

在这里插入图片描述

3. 导出透明gif

也许你想要是透明的gif文件而不是mp4文件。

可以在Python解释器中复制运行如下代码。

from animated_drawings import render

# 导出GIF文件
render.start('./examples/config/mvc/export_gif_example.yaml')

同样看一下配置文件内容,和导出mp4的设置差不太多。

在这里插入图片描述

4. 无头渲染

如果你想无头生成视频(例如在通过 ssh 访问的远程服务器上),可以在配置文件中添加如下代码。

view:
    USE_MESA: True

5. 绘制你自己的画

说了这么多示例,大家一定很想知道,如何把自己画的图,也给动起来。

下面小F就给大家介绍如何实现。

对于不同的目标我们需要生成目标文件,恰好作者也提供了便捷的生成方式。

作者训练了一个绘制的人形图形检测器和姿势估计器,并提供了脚本以根据模型预测自动生成注释文件。

在这里插入图片描述

至于动作文件和目标识别文件可以先用作者提供的。

首先需要运行TorchServe Docker容器,使得能够快速将提供的图像输送给我们的机器学习模型并得到预测结果

对于Docker大家可以自行去安装,使用到如下命令进行环境搭建。

(animated_drawings) AnimatedDrawings % cd torchserve

# 创建镜像
(animated_drawings) torchserve % docker build -t docker_torchserve .

# 运行容器
(animated_drawings) torchserve % docker run -d --name docker_torchserve -p 8080:8080 -p 8081:8081 docker_torchserve

等待约10秒后,通过ping服务器来确保Docker和TorchServe正常工作。

(animated_drawings) torchserve % curl http://localhost:8080/ping

# should return:
# {
#   "status": "Healthy"
# }

服务搭建好以后,可以通过如下命令,使得图像生成动画。

(animated_drawings) torchserve % cd ../examples
(animated_drawings) examples % python image_to_animation.py drawings/garlic.png garlic_out

原图是这样子的,委托一位朋友画的,在绘制过程中还发现了不少问题。

在这里插入图片描述

来看看小F绘制的结果吧,魔性舞蹈。

通过修改配置文件的动作类型,还有开合跳,哈哈哈。

在这里插入图片描述

发现必需要用空白的纸绘图,否则目标分割会出问题。

而且绘图要保证一整个目标都是闭合的(其实着上了颜色就差不多),要不然容易报错,而且有空白。

比如上图的手部和脚部,颜色就不太一样,就是因为轮廓没有闭合。

6. 其它操作

此外还有修复错误的预测、向场景添加多个角色、添加背景图片、使用具有不同骨架的BVH文件、自定义BVH文件(动作文件)、添加额外的角色骨架等操作。

在这里插入图片描述

感兴趣的小伙伴,可以自行去学习学习。

/ 04 /

总结

以上操作,就能通过AI实现儿童绘画跳舞。

感兴趣的小伙伴们,可以自行去尝试,给小朋友提供快乐。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值