diff --git a/kinesis/config.py b/kinesis/config.py index 28f7d441..18d96f1b 100644 --- a/kinesis/config.py +++ b/kinesis/config.py @@ -3,7 +3,7 @@ import sys import tarfile -BASE_DIR = r"D:\兼职\18\Kinesis" +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) def check_file(path, name): """检查文件是否存在""" @@ -99,11 +99,11 @@ def main(): print("You can now run Kinesis tests:") print() print("Test 1 - Target Reaching:") - print(" cd D:\\兼职\\18\\Kinesis") + print(" cd " + os.path.dirname(os.path.abspath(__file__))) print(" python src\\run.py exp_name=kinesis-target-goal-reach run=eval_run learning=pointgoal epoch=-1 run.headless=True") print() print("Test 2 - Motion Imitation:") - print(" cd D:\\兼职\\18\\Kinesis") + print(" cd " + os.path.dirname(os.path.abspath(__file__))) print(" python src\\run.py exp_name=kinesis-moe-imitation epoch=-1 run=eval_run run.headless=True") print(" run.motion_file=data\\kit_test_motion_dict.pkl") print(" run.initial_pose_file=data\\initial_pose\\initial_pose_test.pkl") @@ -112,7 +112,7 @@ def main(): print("[INFO] Need to convert KIT data") print() print("Run conversion:") - print(" cd D:\\兼职\\18\\Kinesis") + print(" cd " + os.path.dirname(os.path.abspath(__file__))) print(" python src\\utils\\convert_kit.py --path data\\KIT_Data\\KIT") else: print("[ERROR] Missing required files:") diff --git "a/kinesis/\344\270\213\350\275\275\346\214\207\345\215\227.md" "b/kinesis/\344\270\213\350\275\275\346\214\207\345\215\227.md" new file mode 100644 index 00000000..f937e44f --- /dev/null +++ "b/kinesis/\344\270\213\350\275\275\346\214\207\345\215\227.md" @@ -0,0 +1,595 @@ +# Kinesis 必需文件下载指南 + +## 📋 下载清单 + +在开始之前,请确认您有以下信息: +- [ ] 可以访问外网(需要访问德国MPI网站) +- [ ] 有足够的磁盘空间(至少10GB) +- [ ] 已准备好下载目录(建议:`D:\Downloads\`) +- [ ] 有邮箱账户(用于注册) + +--- + +## 步骤1:下载 SMPL 模型 + +### 1.1 访问网站 + +1. 打开浏览器,访问:**https://smpl.is.tue.mpg.de/** + +2. 您会看到SMPL模型的下载页面 + +### 1.2 注册账户 + +1. 点击页面上的 **"Sign up"** 或 **"Register"** +2. 填写注册信息: + - Email: 您的邮箱 + - Password: 设置密码 + - Name: 您的姓名 + - Affiliation: 机构/公司(可选) + - Country: 选择您的国家 +3. 同意许可条款 +4. 点击 **"Sign up"** 或 **"Create Account"** + +5. 检查邮箱,验证账户 + +### 1.3 登录并下载 + +1. 使用注册的邮箱和密码登录 + +2. 找到 **"Download"** 部分 + +3. 您会看到多个下载选项: + - **Male model** - 男性模型 + - **Female model** - 女性模型 + - **Neutral model** - 中性模型 ⬅️ 选择这个 + +4. 点击 **"neutral"** 链接(通常是中间的那个) + - 文件名可能类似: + - `basicModel_neutral_lbs_10_207_0_v1.0.0.pkl` + - 或 `SMPL_NEUTRAL.pkl` + +5. 下载开始,文件大小约 **10-20 MB** + +### 1.4 验证下载 + +下载完成后: +- 文件类型:`.pkl` (Python pickle格式) +- 文件大小:约10-20 MB +- 文件名类似:`basicModel_neutral_lbs_10_207_0_v1.0.0.pkl` + +### 1.5 安装文件 + +1. 打开文件管理器,导航到下载位置 + +2. 如果文件名不是 `SMPL_NEUTRAL.pkl`: + - 右键点击文件 + - 选择 **"重命名"** + - 改为:`SMPL_NEUTRAL.pkl` + +3. 复制文件到目标位置: + ``` + 从: [下载位置]\SMPL_NEUTRAL.pkl + 到: D:\兼职\18\Kinesis\data\smpl\SMPL_NEUTRAL.pkl + ``` + +4. 验证文件位置: + ``` + D:\兼职\18\Kinesis\data\smpl\SMPL_NEUTRAL.pkl ← 应该存在 + ``` + +### 1.6 验证 SMPL 模型 + +完成后,运行以下命令验证: + +```bash +cd D:\兼职\18\Kinesis +python -c "import joblib; import os; path='data/smpl/SMPL_NEUTRAL.pkl'; print('✓ 文件存在:', os.path.exists(path)); data=joblib.load(path); print('✓ 文件可读取,包含:', type(data))" +``` + +预期输出: +``` +✓ 文件存在: True +✓ 文件可读取,包含: +``` + +--- + +## 步骤2:下载 KIT 数据集 + +### 2.1 访问网站 + +1. 打开浏览器,访问:**https://amass.is.tue.mpg.de/** + +2. 这是AMASS数据集的主页 + +### 2.2 注册账户 + +1. 点击 **"Sign up"** 或 **"Create Account"** + +2. 填写注册信息: + - Email + - Password + - First Name + - Last Name + - Institution (可选) + - Country + +3. 同意数据使用许可条款 +4. 点击注册 + +5. 检查邮箱,点击验证链接 + +### 2.3 登录 + +1. 返回 https://amass.is.tue.mpg.de/ +2. 使用邮箱和密码登录 + +### 2.4 查找 KIT 数据集 + +登录后,您会看到数据集列表。查找: + +**KIT (CMU)** +- **描述**:CMU Graphics Lab Motion Capture Database +- **大小**:约 2-5 GB +- **格式**:SMPL-H + +如果找不到,使用搜索功能或滚动查看所有数据集。 + +### 2.5 下载 KIT 数据集 + +1. 找到 KIT 数据集后,点击 **"Download"** 按钮 + +2. 选择格式:**SMPL-H** (这是Kinesis所需的格式) + +3. 下载开始,文件大小约 **2-5 GB** + +4. 下载时间估计: + - 10 Mbps: 约30-60分钟 + - 50 Mbps: 约10-20分钟 + - 100 Mbps: 约5-10分钟 + +### 2.6 解压文件 + +下载完成后(通常是 `.zip` 文件): + +1. 找到下载的 ZIP 文件 +2. 右键点击,选择 **"解压到..."** +3. 选择解压位置,例如:`D:\KIT_Data\` +4. 解压后,目录结构应该类似: + ``` + D:\KIT_Data\KIT\ + ├── 00/ + ├── 01/ + ├── 02/ + ├── ... + └── [多个文件夹,每个包含 .npz 文件] + ``` + +**重要:** 确保解压后能看到 `.npz` 文件 + +### 2.7 验证 KIT 数据 + +验证目录中有 `.npz` 文件: + +```bash +dir D:\KIT_Data\KIT\*.npz /s /b +``` + +或者用文件管理器: +1. 打开 `D:\KIT_Data\KIT\` +2. 搜索 `*.npz` +3. 应该能找到大量 NPZ 文件 + +--- + +## 步骤3:转换 KIT 数据集 + +### 3.1 准备转换 + +1. 打开命令提示符或PowerShell + +2. 导航到Kinesis目录: + ```bash + cd /d "D:\兼职\18\Kinesis" + ``` + +### 3.2 运行转换脚本 + +运行以下命令: +```bash +python src/utils/convert_kit.py --path "D:\KIT_Data\KIT" +``` + +**注意:** +- 将 `"D:\KIT_Data\KIT"` 替换为您实际解压的路径 +- 如果路径中有空格,用引号包围 + +### 3.3 转换过程 + +脚本运行时会: +1. 扫描所有 `.npz` 文件 +2. 加载运动数据 +3. 过滤数据(仅保留KIT相关) +4. 分类为训练集和测试集 +5. 保存为 `.pkl` 文件 + +**预期输出:** +``` +Scanning KIT dataset... [████████████████████] 100% +Found XXXX motion files +Loading motion data... [████████████████████] 100% +Converting to Kinesis format... +Saving train data: data/kit_train_motion_dict.pkl +Saving test data: data/kit_test_motion_dict.pkl +✓ Conversion complete! +``` + +### 3.4 转换时间估计 + +- 扫描:1-2分钟 +- 加载和转换:5-10分钟 +- 保存:1-2分钟 + +**总计:约10-15分钟** + +### 3.5 验证转换结果 + +转换完成后,检查文件是否存在: + +```bash +cd D:\兼职\18\Kinesis\data +if (Test-Path "kit_train_motion_dict.pkl") { Write-Host "✓ kit_train_motion_dict.pkl 存在" } else { Write-Host "✗ kit_train_motion_dict.pkl 不存在" } +if (Test-Path "kit_test_motion_dict.pkl") { Write-Host "✓ kit_test_motion_dict.pkl 存在" } else { Write-Host "✗ kit_test_motion_dict.pkl 不存在" } +``` + +或者运行Python验证: +```bash +python -c "import joblib; train=joblib.load('data/kit_train_motion_dict.pkl'); test=joblib.load('data/kit_test_motion_dict.pkl'); print(f'✓ 训练集: {len(train)} 个动作'); print(f'✓ 测试集: {len(test)} 个动作')" +``` + +预期输出: +``` +✓ kit_train_motion_dict.pkl 存在 +✓ kit_test_motion_dict.pkl 存在 +✓ 训练集: 956 个动作 +✓ 测试集: [数字] 个动作 +``` + +--- + +## 步骤4:验证所有文件 + +### 4.1 运行完整检查脚本 + +创建验证脚本: + +创建文件:`verify_files.py`(放在项目根目录下) + +```python +#!/usr/bin/env python3 +import os +import joblib + +def check_file(filepath, description): + """检查文件是否存在并可读取""" + if os.path.exists(filepath): + print(f"✓ {description}") + print(f" 位置: {filepath}") + if filepath.endswith('.pkl'): + try: + data = joblib.load(filepath) + if isinstance(data, dict): + print(f" 内容: 字典,包含 {len(data)} 个条目") + else: + print(f" 内容: {type(data)}") + except Exception as e: + print(f" 警告: 无法读取 - {e}") + print() + return True + else: + print(f"✗ {description}") + print(f" 位置: {filepath}") + print(f" 状态: 文件不存在") + print() + return False + +def main(): + print("=" * 60) + print("Kinesis 文件验证") + print("=" * 60) + print() + + base_dir = os.path.dirname(os.path.abspath(__file__)) + + results = [] + + # 检查 SMPL 模型 + results.append(check_file( + os.path.join(base_dir, "data/smpl/SMPL_NEUTRAL.pkl"), + "SMPL 模型 (SMPL_NEUTRAL.pkl)" + )) + + # 检查 KIT 训练数据 + results.append(check_file( + os.path.join(base_dir, "data/kit_train_motion_dict.pkl"), + "KIT 训练数据 (kit_train_motion_dict.pkl)" + )) + + # 检查 KIT 测试数据 + results.append(check_file( + os.path.join(base_dir, "data/kit_test_motion_dict.pkl"), + "KIT 测试数据 (kit_test_motion_dict.pkl)" + )) + + # 检查初始姿态 + results.append(check_file( + os.path.join(base_dir, "data/initial_pose/initial_pose_train.pkl"), + "训练集初始姿态 (initial_pose_train.pkl)" + )) + + results.append(check_file( + os.path.join(base_dir, "data/initial_pose/initial_pose_test.pkl"), + "测试集初始姿态 (initial_pose_test.pkl)" + )) + + # 检查预训练模型 + results.append(check_file( + os.path.join(base_dir, "data/trained_models/kinesis-moe-imitation/model.pth"), + "MoE 模仿模型 (model.pth)" + )) + + results.append(check_file( + os.path.join(base_dir, "data/trained_models/kinesis-target-goal-reach/model.pth"), + "目标到达模型 (model.pth)" + )) + + # 检查 XML 配置 + results.append(check_file( + os.path.join(base_dir, "data/xml/myolegs.xml"), + "MuJoCo XML 配置 (myolegs.xml)" + )) + + print("=" * 60) + if all(results): + print("✓ 所有必需文件都已就绪!") + print("您现在可以运行Kinesis了。") + else: + print("✗ 部分文件缺失,请完成下载。") + print(f"完成度: {sum(results)}/{len(results)} ({sum(results)/len(results)*100:.1f}%)") + print("=" * 60) + +if __name__ == "__main__": + main() +``` + +### 4.2 运行验证 + +```bash +cd D:\兼职\18\Kinesis +python verify_files.py +``` + +预期输出: +``` +============================================================ +Kinesis 文件验证 +============================================================ + +✓ SMPL 模型 (SMPL_NEUTRAL.pkl) + 位置: D:\兼职\18\Kinesis\data\smpl\SMPL_NEUTRAL.pkl + 内容: 字典,包含 10 个条目 + +✓ KIT 训练数据 (kit_train_motion_dict.pkl) + 位置: D:\兼职\18\Kinesis\data\kit_train_motion_dict.pkl + 内容: 字典,包含 956 个条目 + +✓ KIT 测试数据 (kit_test_motion_dict.pkl) + 位置: D:\兼职\18\Kinesis\data\kit_test_motion_dict.pkl + 内容: 字典,包含 [数量] 个条目 + +✓ 训练集初始姿态 (initial_pose_train.pkl) + 位置: D:\兼职\18\Kinesis\data\initial_pose\initial_pose_train.pkl + 内容: 字典,包含 1 个条目 + +✓ 测试集初始姿态 (initial_pose_test.pkl) + 位置: D:\兼职\18\Kinesis\data\initial_pose\initial_pose_test.pkl + 内容: 字典,包含 1 个条目 + +✓ MoE 模仿模型 (model.pth) + 位置: D:\兼职\18\Kinesis\data\trained_models\kinesis-moe-imitation\model.pth + 内容: + +✓ 目标到达模型 (model.pth) + 位置: D:\兼职\18\Kinesis\data\trained_models\kinesis-target-goal-reach\model.pth + 内容: + +✓ MuJoCo XML 配置 (myolegs.xml) + 位置: D:\兼职\18\Kinesis\data\xml\myolegs.xml + 内容: None (XML文件) + +============================================================ +✓ 所有必需文件都已就绪! +您现在可以运行Kinesis了。 +============================================================ +``` + +--- + +## 步骤5:测试运行 + +### 5.1 测试目标到达功能 + +下载完成后,先测试较简单的目标到达功能: + +```bash +cd D:\兼职\18\Kinesis +python src/run.py \ + exp_name=kinesis-target-goal-reach \ + run=eval_run \ + learning=pointgoal \ + epoch=-1 \ + run.headless=True +``` + +**预期输出:** +``` +Output directory : D:\兼职\18\Kinesis\data\trained_models\kinesis-target-goal-reach +Using: cpu, setting to deterministic +Loading motion data... +Initializing environment... +Starting policy evaluation on target goal reaching. +[评估进度信息...] +``` + +### 5.2 测试运动模仿功能 + +```bash +cd D:\兼职\18\Kinesis +python src/run.py \ + exp_name=kinesis-moe-imitation \ + epoch=-1 \ + run=eval_run \ + run.headless=True \ + run.motion_file=data/kit_test_motion_dict.pkl \ + run.initial_pose_file=data/initial_pose/initial_pose_test.pkl \ + env.termination_distance=0.5 +``` + +**预期输出:** +``` +Output directory : D:\兼职\18\Kinesis\data\trained_models\kinesis-moe-imitation +Using: cpu, setting to deterministic +Loading motion data from: data/kit_test_motion_dict.pkl +Initializing SMPL parser... +Initializing MyoLegs environment... +Starting policy evaluation... +[评估500个测试动作...] +``` + +### 5.3 带图形界面的测试 + +如果想看仿真动画: + +```bash +# 目标到达(带图形) +python src/run.py exp_name=kinesis-target-goal-reach run=eval_run learning=pointgoal epoch=-1 run.headless=False + +# 运动模仿(带图形) +python src/run.py exp_name=kinesis-moe-imitation epoch=-1 run=eval_run run.headless=False run.motion_file=data/kit_test_motion_dict.pkl run.initial_pose_file=data/initial_pose/initial_pose_test.pkl env.termination_distance=0.5 +``` + +**注意:** `headless=False` 会打开MuJoCo渲染窗口,可以看到3D仿真。 + +--- + +## ❓ 常见问题 + +### Q1: SMPL网站打不开? +**A:** 尝试: +1. 检查网络连接 +2. 使用VPN(如果在中国) +3. 确认URL正确:https://smpl.is.tue.mpg.de/ + +### Q2: AMASS网站登录失败? +**A:** 尝试: +1. 检查用户名和密码 +2. 点击"Forgot Password"重置密码 +3. 使用不同浏览器 +4. 清除浏览器缓存 + +### Q3: 下载速度慢? +**A:** 建议: +1. 使用下载管理器(如IDM、Free Download Manager) +2. 选择非高峰时段下载 +3. 确保网络稳定 + +### Q4: 转换脚本失败? +**A:** 检查: +1. 路径是否正确(使用绝对路径) +2. 是否有足够的权限读取NPZ文件 +3. Python环境是否正确 +4. 查看错误信息,对症下药 + +### Q5: 转换后文件为空? +**A:** 检查: +1. NPZ文件是否正确解压 +2. `kit_train_keys.txt` 和 `kit_test_keys.txt` 是否存在 +3. 查看脚本输出的警告信息 + +### Q6: 运行测试时出错? +**A:** 常见原因: +1. 文件路径错误(使用绝对路径) +2. 文件格式不对(重新下载或转换) +3. CUDA问题(先设置 `headless=True`) + +--- + +## 📞 获取帮助 + +如果遇到问题: + +1. **查看错误信息** + - 仔细阅读终端输出的错误 + - 复制错误信息搜索解决方案 + +2. **查阅文档** + - `D:\兼职\18\Kinesis\README.md` + - `D:\兼职\18\Kinesis\项目解析报告.md` + - `D:\兼职\18\Kinesis\部署说明.md` + +3. **在线资源** + - GitHub Issues: https://github.com/amathislab/Kinesis/issues + - 论文: https://arxiv.org/abs/2503.14637 + +--- + +## ✅ 完成检查清单 + +下载完成后,请确认: + +- [ ] SMPL_NEUTRAL.pkl 已下载到 `data/smpl/` +- [ ] KIT 数据集已下载并解压 +- [ ] 运行了 `convert_kit.py` 转换脚本 +- [ ] kit_train_motion_dict.pkl 存在于 `data/` +- [ ] kit_test_motion_dict.pkl 存在于 `data/` +- [ ] 运行了 `verify_files.py` 验证脚本 +- [ ] 所有必需文件验证通过 +- [ ] 成功运行了目标到达测试 +- [ ] 成功运行了运动模仿测试 + +全部完成后,您就可以: +- ✅ 测试运动模仿功能 +- ✅ 测试目标到达功能 +- ✅ 测试文本到动作控制 +- ✅ 分析手脚协同控制 +- ✅ 训练自己的策略 + +--- + +## 🎯 下一步 + +完成所有下载和配置后: + +1. **阅读项目解析报告** + - 了解项目架构 + - 理解数据流程 + - 熟悉配置系统 + +2. **运行测试** + - 先运行 `headless=True` 模式 + - 再尝试带图形界面的模式 + +3. **开始研究** + - 分析肌肉活动模式 + - 研究手脚协同控制 + - 评估控制精度 + +--- + +**祝您下载顺利!如有问题,随时询问。** + +--- + +**文档版本**: 1.0 +**创建日期**: 2026-01-13 +**项目**: KINESIS diff --git "a/kinesis/\345\237\272\344\272\216\350\277\220\345\212\250\346\250\241\344\273\277\347\232\204\347\224\237\347\211\251\345\220\210\347\220\206\350\202\214\350\202\211\351\252\250\351\252\274\350\277\220\345\212\250\346\216\247\345\210\266\347\256\227\346\263\225\347\240\224\347\251\266(3)(4).docx" "b/kinesis/\345\237\272\344\272\216\350\277\220\345\212\250\346\250\241\344\273\277\347\232\204\347\224\237\347\211\251\345\220\210\347\220\206\350\202\214\350\202\211\351\252\250\351\252\274\350\277\220\345\212\250\346\216\247\345\210\266\347\256\227\346\263\225\347\240\224\347\251\266(3)(4).docx" new file mode 100644 index 00000000..df190a20 Binary files /dev/null and "b/kinesis/\345\237\272\344\272\216\350\277\220\345\212\250\346\250\241\344\273\277\347\232\204\347\224\237\347\211\251\345\220\210\347\220\206\350\202\214\350\202\211\351\252\250\351\252\274\350\277\220\345\212\250\346\216\247\345\210\266\347\256\227\346\263\225\347\240\224\347\251\266(3)(4).docx" differ