用Python让小朋友的手绘图跳起来(附源码)

news2025/1/23 9:29:35

2f87758b25888cdc11e336c29a5a01b7.gif

大家好,我是小F~

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

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

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

faa3470d81fb05051fbfa3ee9b633914.gif

项目地址:

https://github.com/facebookresearch/AnimatedDrawings

不方便下载的小伙伴,可以直接去文末,小F都打包好了。

/ 01 /

项目介绍

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

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

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

    • 通过物体检测识别人形

    • 使用角色mask从场景中提升人形

    • 通过「装配」为动画做准备

    • 三维运动捕捉制作2D人物动画

51d4d81ce3567a73ba3fad75ea3faf0b.png

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

/ 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 .

如果没有安装git,无法下载项目,可以直接使用小F提供的文件。

/ 03 /

项目部署-运行

1. 快速开始

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

在终端使用如下代码。

(animated_drawings) AnimatedDrawings % python

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

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

b801d20f2a7040bc63db340662559203.png

包含了以下文件。

character_cfg——目标文件

motion_cfg——动作文件

retarget_cfg——识别目标文件

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

59343e084dddb2c2b97d1de2b23f5b90.png

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

a9041a464695309e9931a2c778b8eb18.png

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

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

7435d76aa492da695e1de411e2b1ea99.png

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

4abf14cac7ca1996f4e9c4f0acd31dbf.png

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

c59f4c8e17144bc6bc67cb5cc87f22e9.png

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

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

ad850d019624ea330073cbb2cf8d5b08.gif

原图是这样的。

743d25b1aadcb714736c9dc5608c83e3.png

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

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

2. 导出MP4视频

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

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

from animated_drawings import render

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

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

bcb8a33d0da56ba14ee5b46af3fd4ab7.png

结果如下。

c726643bed7962c9c97a00ae40f34897.gif

3. 导出透明gif

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

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

from animated_drawings import render

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

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

4cb47b1ac83e5b4d6502928e13b98157.png

4. 无头渲染

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

view:
    USE_MESA: True

5. 绘制你自己的画

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

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

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

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

4b0d65514fe471bca83fc18870b0a5de.png

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

首先需要运行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

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

3b71d277959379bd0bd91cd26cca7683.jpeg

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

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

f699432a45f9d3ff78bd764a1084022c.gif

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

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

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

6. 其它操作

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

f14d16fdec9ae8c860628c1e7c55c557.gif

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

/ 04 /

总结

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

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

相关文件及代码都已上传,公众号回复【儿童绘画】即可获取。

万水千山总是情,点个 👍 行不行

推荐阅读

a44648eafc14f77f0b2fc0d2754a8c48.jpeg

a73a8695728562f6cb0d89ab415a3d9b.jpeg

8fdc8640e7967eda7886d4525e568291.jpeg

···  END  ···

29f8867fc7e5a18f8e1016afdb7697ad.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

波奇学C++:模板和STL

什么是模板?为什么我们需要模板? 先假设一个场景,我们要编写一个函数交换a,b两个数的值 void swap(int& a,int& b) {int cmpa;ab;ba; } swap函数可以帮我们交换两个int型的值,那如果要交换的类型是float,do…

基础篇010.1 STM32驱动RC522 RFID模块之一:基础知识

目录 1. RFID概述 1.1 RFID工作原理 1.2 RFID分类 1.3 RFID模块 1.4 RFID卡片 1.5 IC卡和ID卡介绍 1.6 IC卡和ID的区分 2. Mifare卡结构原理 2.1 Mifare卡概述 2.2 Mifare非接触式 IC 卡性能简介(M1) 2.2.1 Mifare S50与Mifare S70 2.2.2 S5…

操作系统的发展史

█ DOS操作系统 上期提到,20世纪70年代,伴随着计算机技术的成熟,操作系统也进入了一个快速发展阶段。现代操作系统的概念,也在那一时期逐渐形成。 1975年初,MITS电脑公司推出了基于Intel 8080芯片的Altair 8800微型计算…

7 种常见的路由协议

网络路由是网络通信的重要组成部分,通过互联网将信息从源地址移动到目的地的过程。路由发生在 OSI 模型的第 3 层(网络层)。实际网络中通常会将静态和动态路由结合使用。静态路由适用于小型网络,而动态路由适用于大型网络。 什么…

Office project 2013安装

哈喽,大家好。今天一起学习的是project 2013的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

Anthropic 推出 Claude ,一款与ChatGPT竞争的聊天机器人

最近,谷歌承诺向 Anthropic 投资 3 亿美元,收购这家初创公司 10% 的股份。 Anthropic 是一家由前 OpenAI 员工共同创立的初创公司,近日推出一款与ChatGPT对标的产品。 Anthropic 名为 Claude 的人工智能聊天机器人,可以被指示执行…

【Zero to One系列】window系统安装Linux、docker

1、在window系统安装Linux(开启微软的Linux子系统功能-WSL) 1.1 什么是WSL? 传送门:适用于 Linux 的 Windows 子系统安装指南 (Windows 10) 链接里有全部的步骤 1.2 开启 WSL 在 控制面板-->程序和功能 页面找到 Windows 功…

【运维知识进阶篇】Ansible自动化运维-PlayBook详解

这篇文章给大家介绍下PlayBook,我们叫它剧本,它是以一种固定的格式,将多个ad-hoc放入yml文件中。在Ansible中,剧本文件是yml结尾的,在SaltStack中剧本文件是sls结尾的,但是两者语法都是使用的yaml语法。 P…

军用电子元器件质量如何界定?

为了保证元器件的质量,我国制定了一系列的元器件标准。在上世纪70年代末期制定了“七专”7905技术协议和80年代初制定了“七专”8406技术协议,已具备了军用器件标准的雏形,但标准是在改革开放之前制定的,有很多局限性,…

Studio One6简体中文版全新版本功能详解

Studio One 6是一款强大的音乐编曲软件,可以帮助您使用灵活的和弦轨道功能实现音乐创作。通过新的智能模板、直观的拖放工作流、可定制的用户界面和强大的集成工具,使创建快速而轻松。 无论你选择 Studio One 哪个版本,你都可以得到无限的音轨、通道和插…

ChatGPT强到离谱,这么十一款ChatGPT浏览器插件你值得拥有

🔗 运行环境:ChatGPT 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f9…

【ChatGPT功能挖掘】论文绘图救星!

前言 💗未来全网粉丝100W、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战💗 今天分享一个使用ChatGPT来解决绘图没有思路、不知如何下手的问题! 注意看!全文干货,无废话&#xff01…

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 图解RRT*算法原理2 ROS C算法实现3 Python算法实现4 Matlab算法实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA…

chatgpt赋能python:使用Numpy在Python中进行科学计算

使用Numpy在Python中进行科学计算 对于需要进行科学计算和数据分析的程序员,Python是一个非常有用的编程语言。而Numpy(Numerical Python)则是Python生态系统中最受欢迎和广泛使用的科学计算库之一。该库提供了高效的数组操作,线…

跟着我学 AI丨知识图谱,搜索的根

搜索是现在大家都很熟悉的功能,同时也是我们搜集信息离不开的重要手段。而搜索之所以能帮助我们获取到对应的信息,其实离不开知识图谱的重要支撑。知识图谱是什么呢?为什么能够支撑起搜索的提升呢?今天我们就来认识一下知识图谱。…

36从零开始学Java之到底什么是方法的重载?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 壹哥在之前给大家讲解构造方法的时候说过,在一个类中,可以定义多个构造方法&a…

老胡的周刊(第092期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 chathub[2] ChatHub 是款全能聊天机器人客户…

Kubernetes最佳实战案例:优化容器化部署与扩展性

▲ 点击上方"DevOps和k8s全栈技术"关注公众号 Kubernetes(简称为K8s)作为目前最流行的容器编排平台,为企业提供了强大的容器管理和自动化部署能力。在实践中,许多组织已经成功地应用了Kubernetes来提高应用程序的可靠性…

旗舰手机割不动年轻人了,纷纷降价千元贱卖,苹果也未能幸免

618促销即将开启,而手机企业的促销优惠更早,在5月中旬就已开始,苹果率先降价1200元促销,随即国产手机第一大品牌跟进,苹果再反击,如今国产手机开始全面降价,就连最顽强的某国产手机品牌也开始跟…

自动化测试之JUnit单元测试框架

目录 一、什么是 JUnit 二、JUnit5 相关技术 1.注解 1.1 Test 1.2 Disabled 1.3 BeforeAll、AfterAll 1.4 BeforeEach、AfterEach 2.参数化 2.1 单参数 2.2 CSV 获取参数 2.3 方法获取参数 2.4 多参数 3.测试用例的执行顺序 3.1 顺序执行:TestMethodO…