CV之Drawings:AnimatedDrawings(一款将儿童手绘人物图动画化的工具)简介、安装和使用方法、案例应用之详细攻略
目录
AnimatedDrawings简介
2023年2月18日,AnimatedDrawings 是一个用于将儿童手绘人物图动画化的工具。该项目包含论文“A Method for Animating Children's Drawings of the Human Figure”中描述的算法实现,并旨在成为一个易于使用的创意工具,让用户可以利用自己绘制的人物角色创建动画。 项目还提供了一个基于浏览器的在线演示。
总而言之,AnimatedDrawings 提供了一个功能强大且易于使用的工具,用于将儿童手绘人物图动画化。 其自动标注、模型修正和灵活的配置选项,使得即使是非专业人士也能轻松创建高质量的动画。
GitHub地址:https://github.com/facebookresearch/AnimatedDrawings
项目网站:Animated Drawings
视频讲解:https://www.youtube.com/watch?v=WsMUKQLVsOI
1、AnimatedDrawings 特点
>> 自动动画化儿童手绘人物:核心功能是将手绘人物图自动转换为动画。
>> 鲁棒性:能够处理儿童绘画中固有的多样性和变化。
>> 易用性:操作简单直观,即使是非专业人士也能轻松使用。
>> 灵活的动画创建:允许用户灵活地创建动画,控制角色、动作、场景等。
>> 支持多种输出格式:可以导出 MP4 视频和透明 GIF 图片。
>> 支持无头渲染:可以在远程服务器上进行无头渲染(例如,通过 SSH 访问)。
>> 自动生成标注文件:提供脚本,可根据模型预测自动生成动画所需的标注文件,简化了动画制作流程。
>> 可修正模型预测:提供 Web 界面,允许用户手动修正模型对人物姿势的预测结果。
>> 支持多个角色和背景图片:允许在同一场景中添加多个角色,并添加背景图片。
>> 支持自定义 BVH 文件:可以使用任何 BVH 格式的运动捕捉数据,即使骨骼结构不同,也可以通过创建新的配置文件来适配。
>> 开源:项目代码开源,方便用户查看、修改和扩展。
2、数据集和模型信息
>> 数据集:提供了 Amateur Drawings Dataset,包含超过 178,000 张手绘图及其标注。
>> 预训练模型权重:在仓库发布中提供预训练模型权重 (MIT 许可证)。
>> 形状操作:使用了 As-Rigid-As-Possible (ARAP) 形状操作技术。
业余绘画数据集
要获取业余绘画数据集,请从命令行运行以下两个命令:
# download annotations (~275Mb)
wget https://dl.fbaipublicfiles.com/amateur_drawings/amateur_drawings_annotations.json
# download images (~50Gb)
wget https://dl.fbaipublicfiles.com/amateur_drawings/amateur_drawings.tar
训练模型权重
用于类人形检测和姿势估计的训练模型权重包含在repo 版本中。模型权重根据MIT 许可证发布。.mar 文件是使用 OpenMMLab 框架生成的(OpenMMDet Apache 2.0 许可证、OpenMMPose Apache 2.0 许可证)
尽可能刚性的形状操作
这些字符使用尽可能刚度 (ARAP) 形状操作进行变形。我们有该算法的 Python 实现,位于此处,可能对其他开发人员有用。
地址:https://github.com/fairinternal/AnimatedDrawings/blob/main/animated_drawings/model/arap.py
AnimatedDrawings安装和使用方法
1、安装
强烈建议在安装 AnimatedDrawings 之前创建一个 Python 虚拟环境 (例如使用 Anaconda 的 Miniconda)。 该项目已在 macOS Ventura 13.2.1 和 Ubuntu 18.04 上进行了测试。如果您在其他操作系统上安装,可能会遇到问题。
安装步骤如下:
创建并激活虚拟环境:
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 .
Mac M1/M2 用户需要注意 .condarc 文件中的架构配置。Mac M1/M2 用户,如果遇到架构错误,请确保您的子目录列表中~/.condarc没有osx-64,而只有osx-arm64和noarch。您可以看到它早在 时就会横向移动,conda create因为它会在“将安装以下新软件包”下显示osx-64而不是osx-arm64库版本。
2、使用
快速启动 (交互式窗口)
激活虚拟环境后,在项目根目录下启动 Python 解释器,运行以下代码:
from animated_drawings import render
render.start('./examples/config/mvc/interactive_window_example.yaml')
如果一切安装正确,屏幕上将出现一个交互式窗口。可以使用空格键暂停/继续动画,方向键在时间轴上移动,q 键关闭窗口。
导出 MP4 视频
使用 export_mp4_example.yaml 配置文件。
from animated_drawings import render
render.start('./examples/config/mvc/export_mp4_example.yaml')
导出透明 GIF 图片
使用 export_gif_example.yaml 配置文件。
from animated_drawings import render
render.start('./examples/config/mvc/export_gif_example.yaml')
无头渲染
在配置文件的 view 部分设置 USE_MESA:True。
view:
USE_MESA: True
3、使用自己的绘画
AnimatedDrawings 使用预先标注的绘画进行示例。 要使用自己的绘画,需要创建标注文件。 所以你想为你自己绘制的角色制作动画。我不希望你手动创建这些注释文件。那会很繁琐。为了快速轻松地完成这项工作,我们训练了一个绘制的人形检测器和姿势估计器,并提供了脚本来根据模型预测自动生成注释文件。目前有两种设置选项。如果模型预测结果不准确,可以使用图像编辑软件修改遮罩,或使用 fix_annotations.py 脚本提供的 Web 界面修正关节位置。项目提供了两种方法:
Docker 容器
安装 Docker Desktop,构建并运行 torchserve Docker 镜像,然后使用 image_to_animation.py 脚本将图像转换为动画。
要使其正常工作,需要设置一个运行 TorchServe 的 Docker 容器。这使我们能够快速将您的图像显示给我们的机器学习模型并接收它们的预测。
要设置容器,请按照下列步骤操作:
安装 Docker Desktop
确保 Docker Desktop 正在运行。从 Animated Drawings 根目录开始运行以下命令:
(animated_drawings) AnimatedDrawings % cd torchserve
# build the docker image... this takes a while (~5-7 minutes on Macbook Pro 2021)
(animated_drawings) torchserve % docker build -t docker_torchserve .
# start the docker container and expose the necessary ports
(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"
# }
如果等待之后的响应是curl: (52) Empty reply from server,则可能发生以下两种情况之一。
Torchserve 尚未完成初始化,因此请再等待 10 秒然后重试。
Torchserve 失败,因为它没有足够的 RAM。尝试通过修改 Docker Desktop 的设置将 Docker 容器可用的内存量增加到16GB。
完成上述设置后,您现在可以使用单个命令直接从图像->动画进入:
(animated_drawings) torchserve % cd ../examples
(animated_drawings) examples % python image_to_animation.py drawings/garlic.png garlic_out
等待时,系统会分析位于 的图像drawings/garlic.png,检测、分割和装配角色,并使用来自人类演员的 BVH 运动数据对其进行动画处理。生成的动画保存为./garlic_out/video.gif。
macOS 本地运行
使用提供的 setup_macos.sh 脚本在 macOS 上本地运行 torchserve,然后使用 image_to_animation.py 脚本。让 Docker 工作起来可能很复杂,如果你只是想在本地试用一下,那就没必要了。贡献者 @Gravityrail 提交了一个脚本,可以在 MacOS 上本地设置 Torchserve,不需要 Docker。
cd torchserve
./setup_macos.sh
torchserve --start --ts-config config.local.properties --foreground
当 torchserve 像这样在本地运行时,你可以使用与之前相同的命令让大蒜跳舞:
python image_to_animation.py drawings/garlic.png garlic_out
4、其他功能:
添加多个角色
在配置文件的 scene 部分的 ANIMATED_CHARACTERS 列表中指定多个角色。通过在配置场景的“ANIMATED_CHARACTERS”列表中指定多个条目,可以将多个角色添加到视频中。要亲自查看,请从 AnimatedDrawings 根目录中的 Python 解释器运行以下命令:
from animated_drawings import render
render.start('./examples/config/mvc/multiple_characters_example.yaml')
添加背景图片
在配置文件中指定背景图片路径。假设您想为动画添加背景。您可以通过在配置中指定图像路径来实现。从 AnimatedDrawings 根目录中的 Python 解释器运行以下命令:
from animated_drawings import render
render.start('./examples/config/mvc/background_example.yaml')
使用不同骨架的 BVH 文件
需要创建新的运动配置文件和重定向配置文件。可以使用任何您想要的运动剪辑,只要它是 BVH 格式。如果 BVH 的骨架与本项目中使用的示例不同,则需要创建一个新的运动配置文件和重新定位配置文件。完成这些操作后,您就可以开始了。以下代码和生成的剪辑使用具有完全不同骨架的 BVH。从 AnimatedDrawings 根目录中的 Python 解释器运行以下命令:
from animated_drawings import render
render.start('./examples/config/mvc/different_bvh_skeleton_example.yaml')
添加额外角色骨架
上述所有示例动画都描绘了“类人”角色;他们有两只胳膊和两条腿。我们的方法主要针对这些类人角色进行设计,并且提供的姿势估计模型假设存在类人骨架。但您可以手动指定不同的骨架,character config并修改指定的骨架retarget config以支持它。如果您有兴趣,请查看以下两个示例中指定的配置文件。
from animated_drawings import render
render.start('./examples/config/mvc/six_arms_example.yaml')
from animated_drawings import render
render.start('./examples/config/mvc/four_legs_example.yaml')
创建自定义BVH文件
如果你可能想知道如何创建自己的 BVH 文件。以前您需要一个动作捕捉工作室。但现在,幸运的是,有简单易用的选项可以从单个 RGB 视频中获取 3D 运动数据。例如,通过以下方式创建了此 Readme 的横幅动画:
>> 用自己的手机相机记录下自己跳的傻傻的舞蹈。
>> 使用Rokoko从我的视频中导出 BVH。
>> 创建一个新的运动配置文件并重新定位配置文件以适合 Rokoko 导出的骨架。
>> 使用 AnimatedDrawings 为角色制作动画并导出透明动画 gif。
>> 在 Adobe Premiere 中结合动画 gif、原始视频和原始绘图。
以下是我将动作应用于角色的配置示例。要使用这些配置文件,请确保 Rokoko 使用 Mixamo 骨架预设导出 BVH:
from animated_drawings import render
render.start('./examples/config/mvc/rokoko_motion_example.yaml')
创建自定义配置文件
参考配置文件文档创建自定义配置文件。
地址:https://github.com/facebookresearch/AnimatedDrawings/blob/main/examples/config/README.md
5、在线使用
如果您想为自己的绘图制作动画,但又不想下载代码和使用命令行,请查看我们基于浏览器的演示:
在线使用:https://www.sketch.metademolab.com/
AnimatedDrawings案例应用
项目提供了许多示例配置文件,演示了如何创建不同效果的动画,例如添加多个角色、背景图片,以及使用不同骨骼结构的 BVH 文件。 项目还展示了如何使用 Rokoko 从单一 RGB 视频中导出 BVH 文件,并将其应用于动画制作。