AnimatedDrawings排错完全指南:从环境安装到动画导出的8个高频坑与自救清单
2026/9/13 14:47:10 网站建设 项目流程

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秒快速定位:你的错卡在哪一步

先别逐个翻,按下面这张"日志关键词 → 环节"对照表直接跳转:

  1. 终端里报错含condapipPython版本字样,或import animated_drawings就失败 → 看环节一:环境安装
  2. 看到Empty reply from serverFailed to get bounding box, please check if the 'docker_torchserve' is running and healthy→ 看环节二
  3. 看到Could not detect any drawn humanoids in the imageCould not detect any skeletons→ 看环节三
  4. 看到Error validatinginvalid joint nameConfig error(如cannot use interactive controller when USE_MESA is True)→ 看环节四
  5. 视频没生成、报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-arm64noarch,然后重跑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.mardrawn_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 Trueoutput_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,看controllerview两段即可,不用翻代码。
  • 一步到位的修复:交互式窗口 →controller.MODE: interactiveview.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 validinvalid 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 的methodpca/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 机器:~/.condarcsubdirs不含osx-64
  • image_to_animation.py之前,先curl http://localhost:8080/ping确认 TorchServe 返回 Healthy
  • 标注结果不对劲时,先打开输出目录的joint_overlay.pngmask.png看,再决定是修关节(fix_annotations.py)还是修掩膜(改图)
  • 导出.mp4OUTPUT_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询