ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

UniMate Stage 4 特征提取完整指南:详解规范化管线与 cond.npy 拓扑条件生成

UniMate Stage 4 特征提取完整指南:详解规范化管线与 cond.npy 拓扑条件生成 UniMate Stage 4 特征提取完整指南详解规范化管线与 cond.npy 拓扑条件生成【免费下载链接】UniMate[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons项目地址: https://gitcode.com/GitHub_Trending/un/UniMateUniMate 是 SIGGRAPH Asia 2026 提出的「一个统一模型驱动多种骨架」的动作生成方法。它的 Stage 4 特征提取负责把 Blender 导出的原始动作规范化成可直接训练的标准片段并为每个骨架生成cond.npy 拓扑条件——这正是让同一个模型适配从人形、四足到鱼类、昆虫等任意拓扑的关键一步。对新手来说Stage 4 是「原始资产 → 可训练数据」的最后一公里输入是前几阶段产出的 NPZ 动作和标注 JSON输出是dataset/features/数据集/下的标准片段、文本描述和一个记录骨架拓扑的cond.npy。理解了它你就懂了 UniMate 为什么「无需为每种骨架重新训练」。Stage 4 在数据管线中的位置UniMate 的数据处理分为下载、导出、渲染、标注、提取、驱动六个阶段。Stage 4Extract是承上启下的一环它读取 Stage 1 的动作 NPZ 和 Stage 2/3 的标注 JSON产出训练直接需要的「规范片段 cond.npy」。完整说明见官方管线文档的 Stage 4: Extract 章节入口脚本是 run_extract_features.sh核心实现分散在以下几个模块驱动逻辑extract_features.py每个对象的处理规范化 拓扑motion_features.py拓扑工具边关系、图距离、谱特征、运动链topology.py骨架几何朝向、缩放、落地、活动度skeleton.py元数据读写与 cond.npy 落盘metadata.py一键运行 Stage 4 特征提取Stage 4 通常只需一条命令即可运行数据集名作为第一个参数# 处理一个数据集truebones / mixamo / objaverse / general bash data_process/scripts/run_extract_features.sh objaverse # 把长动作切成重叠窗口并用 8 进程按「对象类型」并行 APPLY_CLIP1 NUM_WORKERS8 bash data_process/scripts/run_extract_features.sh truebones因为每个对象类型彼此独立NUM_WORKERS能并行加速APPLY_CLIP1会把长动作切成重叠窗口否则默认只保留前 200 帧。所有产出默认写入dataset/features/数据集/。规范化管线四步把动作对齐到同一坐标系不同来源的骨架朝向、大小、落地高度各不相同。Stage 4 会用该对象类型的T-pose先做一次标定再把同一套参数复用到它的所有动作上保证整个数据集处在同一尺度、同一朝向里。四步对齐逻辑在 canonicalize_anim() 中依次执行朝向对齐facing Z用 Stage 3 标注的「左右髋关节对」算出一条左右轴再推出前进方向把骨架首帧转到面向Z。对蛇这类无侧向关节的生物body_axis会额外补一个 -90° 的旋转修正。逐帧朝向四元数由 get_root_facing_quat() 计算并写进片段。XZ 居中把根关节在水平面X、Z平移到原点只减高度不碰 Y。直径缩放先求骨架「叶到叶」的测地直径对按骨长加权的骨架树做两遍 BFS再按target_diameter2.0做等比缩放让所有骨架都缩到同一个直径。落地对齐ground把最低关节压到Y0。默认每条动作按自身最低点落地加--use_tpos_ground_height则复用 T-pose 的地面高度。规范化的最终效果就是上面这类「站在棋盘地面上、尺寸统一、朝向一致」的标准骨架片段——不同物种的动作从此可以用同一套模型参数处理。顺手做的关节重排与降采样在规范化之前motion_features.py 还会按名字对齐关节顺序防止不同导入器枚举同一骨架时顺序不同、把关节重排成BFS 规范序子节点按子树大小降序、骨长升序并把 60fps 以上的源逐次减半降到 60 以下避免速度尺度不一致。质量过滤活动度与跳变检测规范化后Stage 4 会逐片段做两道「体检」不合格的片段会被丢弃并记录原因写入filtered_clips.json低活动度过滤计算每个关节相对根关节的时间离散度标准差与根关节轨迹的活动度若都低于activity_threshold0.02则视为「几乎没动」而被丢弃activity_keep.txt里的人脸转身、挥手等小动作可豁免。跳变/断点过滤当某一帧把骨架挪动 ≥jump_step_threshold0.20个「骨架长度」、且该步长 ≥ 中位步长的jump_ratio_threshold8.0倍时判定为动作拼接或瞬移直接剔除——这正是抓「多段动作被硬拼在一起」的手段。常用过滤参数速查参数默认值作用min_joints/max_joints8 / 150objaverse、general 为 4 / 180骨架关节数在此范围外则整类跳过activity_threshold0.02低于此活动度判定为「几乎静止」jump_step_threshold/jump_ratio_threshold0.20 / 8.0跳变检测的绝对步长与倍率static_threshold1e-5首尾静帧裁剪阈值min_frames8裁剪后的最少帧数target_diameter2.0缩放后的骨架叶到叶直径max_freqs/max_path_len8 / 5谱特征维数 / 图距离钳制上限cond.npy 里到底存了什么cond.npy是整个 Stage 4 最有价值的产出一个{对象类型: 条件字典}的字典记录了每个骨架的拓扑 T-pose 几何 归一化参数。它既是训练时喂给模型的条件也是推理时为「你自己的骨架」重建拓扑的依据。字段由 build_topology_cond() 生成主要包括拓扑关系joint_relationsJ×J 边关系类型0自身、1父、2子、3兄弟、4无、5末端执行器、6时空间 token 连接、joint_graph_distsJ×J BFS 图距离钳制在 5、joint_depthsJ 深度、edge_indexs无向边索引、kinematic_chains根到叶的运动链。谱特征spectral_featsJ×8——骨架图拉普拉斯矩阵最小的非平凡特征向量GRIT / GraphGPS 思路让拓扑相近的关节在不同物种间也能获得相近编码。T-pose 几何parentsBFS 序父节点、offsets/tpos_offsets、tpos_first_frame、tpos_local_rotations/tpos_global_rotations。命名与归一化joint_names/clean_joint_names清洗后的解剖学名、face_joint_idxs朝向关节对、scale_factor、ground_height/ground_height_mode。文本captions每片段的描述与captions.json同源。训练端的 mixture/dataset.py 会读取每个数据集的cond.npy把上述拓扑字段送进模型例如graph_adaln变体用边关系、图距离、深度做注意力偏置并用clean_joint_names让「同一种解剖学关节」在不同骨架上嵌入到相同向量——这正是跨物种泛化的底气。片段 NPZ 存了什么与cond.npy并列的motions/对象-动作-片段号.npz存的是逐帧数据global_positionsF,J,3、local_rotationsF,J,4 四元数、root_facing_quatF,4与fps。训练加载器要求片段为 30fps否则拒绝。用自己的资产生成 cond.npybring your own rig除了训练数据集Stage 4 的代码还被复用来处理「你自己的绑定好骨骼的资产」。rig_preprocess 会把你的一只 GLB / glTF / FBX有无动画都行加工成一个资产目录里面就含一个单条目的cond.npy、规范后的 GLB 和预览图。仓库里 assets/examples/ 就放了三只这样的样例鹰、鲨鱼、宇树 Go2 四足机器人例如 assets/examples/shark/cond.npy 与 summary.json。推理时采样器可直接用--asset 该目录加载这个cond.npy来驱动你的资产见 inference/assets.py。也就是说你不需要重新训练只要跑一次预处理就能让 UniMate 学会「你这只新骨架的拓扑」。断点续跑与缓存机制Stage 4 可能跑上数小时因此它被设计成可断点续跑、原子写按对象缓存每个对象类型处理完会缓存在cond_parts/对象.npy重跑时命中即跳过。智能失效缓存键同时记录处理参数、标注输入captions / face_joints / clean_names的摘要、片段列表、以及导出 NPZ 的名字/大小/修改时间——任何一项变化比如补了描述、改了朝向对都会让对应对象自动重处理不会悄悄用到过期结果。失败隔离某个对象失败只写进extract_errors.log并在下次重试一个坏对象不会拖垮整批。原子落盘cond.npy等产出用临时文件 原子替换写入中断也不会留下半截的cond.npy见 metadata.py。关键文件路径速查运行入口run_extract_features.sh阶段总览与命令data_process/README.mdStage 4 章节规范化与拓扑主逻辑motion_features.py拓扑计算topology.py骨架几何与朝向skeleton.py样例 cond.npyassets/examples/eagle/cond.npy自定义资产预处理data_process/rig_preprocess/一句话总结Stage 4 用「朝向 → 居中 → 缩放 → 落地」四步把任意骨架对齐到同一坐标系再为它生成一份含图关系、谱特征、运动链与 T-pose 几何的cond.npy——这份拓扑条件加上标准化的片段 NPZ就是 UniMate 用一个模型驾驭万千骨架的地基。【免费下载链接】UniMate[SIGGRAPH Asia 2026] UniMate: One Unified Model to Animate Diverse Skeletons项目地址: https://gitcode.com/GitHub_Trending/un/UniMate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表