AnimatedDrawings排错完全指南:从环境安装到动画导出的8个高频坑与自救清单
【免费下载链接】AnimatedDrawingsCode to accompany "A Method for Animating Children's Drawings of the Human Figure"项目地址: https://gitcode.com/GitHub_Trending/an/AnimatedDrawings
AnimatedDrawings排错大多卡在这几处:装环境、起标注服务、跑导出。它的作用是把手绘人物图变成带动画的 GIF/MP4。本文按"先定位、再修复"的顺序带你把从安装到导出这一路排一遍,每个环节都给你最短的自救路径。
30秒快速定位:你的错卡在哪一步
先别逐个翻,按下面这张"日志关键词 → 环节"对照表直接跳转:
- 终端里报错含
conda、pip、Python版本字样,或import animated_drawings就失败 → 看环节一:环境安装 - 看到
Empty reply from server或Failed to get bounding box, please check if the 'docker_torchserve' is running and healthy→ 看环节二 - 看到
Could not detect any drawn humanoids in the image或Could not detect any skeletons→ 看环节三 - 看到
Error validating、invalid joint name、Config error(如cannot use interactive controller when USE_MESA is True)→ 看环节四 - 视频没生成、报
output_video_codec must be set、或 SSH 远程环境出不了画面 → 看环节五
所有脚本的详细日志都会写进./logs/log.txt,不确定是哪类错时,先tail -n 30 logs/log.txt看一眼最后的报错行,比翻屏幕快。
环节一:环境安装——先确认 conda 和 pip 这关过了
conda create 卡在架构错误(M1/M2 机器高发)
- 这步常报什么错:
conda create --name animated_drawings python=3.8.13时出现 architecture 相关错误,或安装列表里显示的是osx-64开头的包。 - 30秒自检:打开
~/.condarc,看subdirs里有没有osx-64。 - 一步到位的修复:把
subdirs改成只保留osx-arm64和noarch,然后重跑conda create --name animated_drawings python=3.8.13 --yes。 - 还不行怎么办:执行
conda clean --all清缓存再重建环境;Intel Mac 和 Ubuntu 18.04 以上系统一般不需要动这里。
pip install -e . 失败
- 这步常报什么错:安装 setup.py 里的依赖时报 PyOpenGL 编译错误,或版本冲突。
- 30秒自检:先确认你在对的环境里:
conda activate animated_drawings后跑python --version,应是 3.8.x(setup.py 要求>=3.8.13)。 - 一步到位的修复:在仓库根目录(clone 地址:
https://gitcode.com/GitHub_Trending/an/AnimatedDrawings)直接执行pip install -e .,让依赖按 setup.py 锁定版本一次性装好,不要自己提前pip install别的版本。 - 还不行怎么办:把 PyOpenGL 单独装一遍再重装:
pip install PyOpenGL==3.1.6 && pip install -e .。
装完先跑这条"心跳检查"
装没装好别猜,进仓库根目录开python,粘贴两行:
from animated_drawings import render render.start('./examples/config/mvc/interactive_window_example.yaml')弹出交互窗口就说明环境没问题(空格暂停、方向键倒退、q 退出);如果这里就崩,后面所有环节都不用排了,回到本环节。
环节二:标注服务 TorchServe 起不来
image_to_animation.py背后是一个跑在 8080 端口的 TorchServe 模型服务,它不健康,后面的标注就全跑不了。
curl 返回 Empty reply from server
- 这步常报什么错:
curl http://localhost:8080/ping返回curl: (52) Empty reply from server。 - 30秒自检:跑
docker logs docker_torchserve,看容器是在慢慢初始化、还是直接崩溃退出。 - 一步到位的修复:大概率是初始化没跑完——等 10 秒再 curl 一次;如果日志里反复 OOM/退出,把 Docker Desktop 的内存调到 16GB 再重启容器。
- 还不行怎么办:看到 CUDA 相关报错就改用 CPU 模式启动容器(加
-e CPU_ONLY=true);如果你只是 Mac 上想本地玩玩,可以完全绕开 Docker,用仓库提供的 torchserve/setup_macos.sh 在本机起服务。
检测接口返回 404(模型权重没下全)
- 这步常报什么错:终端里出现
Error performing detection. Check that drawn_humanoid_detector.mar was properly downloaded(或 pose_estimator 的同类提示)。 - 30秒自检:看
torchserve/model-store/目录里有没有drawn_humanoid_detector.mar和drawn_humanoid_pose_estimator.mar两个文件,且大小不是 0。 - 一步到位的修复:缺哪个补哪个——Mac 本地路线重跑一遍 torchserve/setup_macos.sh(它会重新下载两个 .mar);Docker 路线删掉容器重跑
docker run。 - 还不行怎么办:确认服务 ping 通后,直接重跑
python image_to_animation.py drawings/garlic.png garlic_out,模型加载是一次性的,不用重建环境。
环节三:自己的画变角色——标注环节
"Could not detect any drawn humanoids"(画里没检出人物)
- 这步常报什么错:
Could not detect any drawn humanoids in the image. Aborting,输出目录里没有生成char_cfg.yaml。 - 30秒自检:对着原图看一眼——是不是正面、完整的人形?模型对"蝌蚪人""背面、大面积遮挡、背景太花"的图片检出率很低。
- 一步到位的修复:把角色画得居中、占满画面、正面朝前(参考仓库自带的示例图
),再重跑
python image_to_animation.py drawings/你的图.png 输出目录。 - 还不行怎么办:绕开自动检测——照着 examples/characters/char1/ 的目录结构(
char_cfg.yaml+mask.png+texture.png)手工放一份标注,然后用 examples/annotations_to_animation.py 直接渲染,跳过检测这一步。
"Could not detect any skeletons"(框到人了但关节没框出来)
- 这步常报什么错:
Could not detect any skeletons within the character bounding box. Expected exactly 1. Aborting. - 30秒自检:看输出目录里的
joint_overlay.png——关节点是不是全挤成一团或全在身体外。 - 一步到位的修复:关节预测不准则用官方修关节工具:
python fix_annotations.py garlic_out/,浏览器打开http://127.0.0.1:5050,把关节拖到正确位置后点 Submit,再跑python annotations_to_animation.py garlic_out/重新出动画。 - 还不行怎么办:掩膜(
mask.png)残缺会导致角色断肢,用绘图软件把角色区域修成纯白、背景纯黑,再重跑渲染;修完的效果类似仓库示例:
环节四:渲染报错——config 与 BVH 骨骼对不上
配置校验类报错(Error in / Config error)
- 这步常报什么错:
Config error: cannot use interactive controller when USE_MESA is True、output_video_path must be set when using video_render controller,或Error in MODE config parameter。 - 30秒自检:这些报错都是 animated_drawings/config.py 在启动前校验 yaml 时给出的,打开你传进
render.start()的那个 mvc yaml,看controller和view两段即可,不用翻代码。 - 一步到位的修复:交互式窗口 →
controller.MODE: interactive且view.USE_MESA: False;导视频 →MODE: video_render且必须有OUTPUT_VIDEO_PATH。拿不准就直接复制 examples/config/mvc/ 下的现成示例(interactive_window_example.yaml、export_mp4_example.yaml),只改你要动的几行。注意 animated_drawings/mvc_base_cfg.yaml 是基础配置,官方文档明确说不要改它,你新建的 yaml 只会覆盖同名字段。 - 还不行怎么办:对着 examples/config/README.md 逐项核对你写的字段名和类型,大小写错了也是这个报错。
自定义 BVH 骨骼对不上(invalid joint name)
- 这步常报什么错:
Error validating bvh_projection_bodypart_groups: bvh_joint_name not valid、invalid char_joint_name之类,意思是 retarget 配置里写的关节名在你的 BVH(或角色)里不存在。 - 30秒自检:
head -n 40 你的.bvh看文件头里的真实关节名,和 examples/config/retarget/ 里配置写的名字对比。 - 一步到位的修复:换一套与你的 BVH 骨架匹配的配置组合——Rokoko/Mixamo 骨架直接用 examples/config/motion/jesse_dance.yaml + rokoko_motion_example.yaml 这对现成组合验证流程能通,再改自己的。
- 还不行怎么办:骨架确实不同(比如四足动物、六臂角色),就要自己写 motion + retarget 配置,照着 examples/config/README.md 里 Motion / Retarget 两节的字段说明填;四足角色可参考 examples/quadruped/。
角色动作扭曲、翻面
- 这步常报什么错:不报错,但画面里肢体乱转、脸朝下。
- 30秒自检:看你的角色是不是"蝌蚪人"(头和躯干几乎一体)。这种画法下 neck 关节方向反了,重定向时头就会翻面。
- 一步到位的修复:在 retarget 配置的
char_runtime_checks里保留/加上above检查(参考 examples/config/retarget/fair1_ppf.yaml 末尾那几行),它会在 neck 朝向不对时自动跳过对头的驱动。 - 还不行怎么办:换投影方式试试——把对应 bodypart group 的
method在pca/frontal/sagittal间切换,或换一套 retarget 配置(fair1_spf.yaml 等)对比效果。
环节五:导出——MP4、GIF 与无头渲染
MP4 导出报 "output_video_codec must be set"
- 这步常报什么错:
Config error: output_video_codec must be set when using video_render controller,且OUTPUT_VIDEO_PATH以.mp4结尾。 - 30秒自检:打开你的 mvc yaml,
controller段里有没有OUTPUT_VIDEO_CODEC这一行。 - 一步到位的修复:加一行
OUTPUT_VIDEO_CODEC: avc1,完整可抄 examples/config/mvc/export_mp4_example.yaml。 - 还不行怎么办:先用
OUTPUT_VIDEO_PATH: ./video.gif的 GIF 路线(export_gif_example.yaml,GIF 还自带透明背景)验证渲染链路没问题,再回头调 MP4。
无窗口环境(SSH / 服务器)出不来画面
- 这步常报什么错:远程执行时窗口直接打不开,或提示无显示设备;本地则可能表现为
glfw/OpenGL 相关报错。 - 30秒自检:确认你现在是不是在 headless 环境下跑。
- 一步到位的修复:在 mvc yaml 的
view段加USE_MESA: True,同时把controller.MODE设为video_render(两者组合才合法,interactive 不能配 MESA)。 - 还不行怎么办:看 examples/config/mvc/export_gif_example.yaml 这类导出配置的写法照抄,并检查
./logs/log.txt末尾的 OpenGL 报错行。
多角色 / 自定义场景叠加问题
多人同屏时角色互相压住,是char_starting_location没错开导致的:在各自 retarget 配置里把起始位置改成[ -0.5, 0, 0 ]、[ 0.5, 0, 0 ]这样一组值即可,多角色写法见 multiple_characters_example.yaml,效果如下:
避坑清单(每次开工前过一遍)
conda activate animated_drawings后先跑python --version,确认是 3.8.x 再开始干活- M1/M2 机器:
~/.condarc的subdirs不含osx-64 - 跑
image_to_animation.py之前,先curl http://localhost:8080/ping确认 TorchServe 返回 Healthy - 标注结果不对劲时,先打开输出目录的
joint_overlay.png和mask.png看,再决定是修关节(fix_annotations.py)还是修掩膜(改图) - 导出
.mp4时OUTPUT_VIDEO_CODEC必须和OUTPUT_VIDEO_PATH成对出现 - 自己的 mvc 配置只写要覆盖的字段,
mvc_base_cfg.yaml保持原样
排错时最省力的一条经验:每个环节的示例配置(examples/config/、examples/characters/)都是官方验证过的"已知能跑"状态,把你的场景和示例逐行 diff,通常三五分钟就能找到那一处对不上的地方。
【免费下载链接】AnimatedDrawingsCode to accompany "A Method for Animating Children's Drawings of the Human Figure"项目地址: https://gitcode.com/GitHub_Trending/an/AnimatedDrawings
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考