diff --git a/.gitignore b/.gitignore index 23c2352..9928f75 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,10 @@ ext/diff_gaussian_rasterization_hair/third_party .vscode # Executable files -resource scripts +resource +condabin +pkgs # Byte-compiled / optimized / DLL files __pycache__/ @@ -177,21 +179,3 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ - -# Project specific -resource/ -micromamba/ -cache/ -ext/ -*.exe - -# Python -__pycache__/ -*.py[cod] -*$py.class -*.so - -# Build -build/ -dist/ -*.egg-info/ diff --git a/README.md b/README.md index 724b416..02bee10 100644 --- a/README.md +++ b/README.md @@ -1,212 +1,210 @@ -# Gaussian Haircut: Human Hair Reconstruction with Strand-Aligned 3D Gaussians +# Gaussian Haircut:使用股线对齐 3D 高斯模型进行人体头发重建 -[**中文**](README_CN.md) | [**English**](README.md) +[**中文**](README.md) | [**English**](README_EN.md) -This repository contains the official implementation of Gaussian Haircut, a strand-based human hair reconstruction method from monocular video. +本仓库包含了 Gaussian Haircut 的官方实现,这是一种基于股线的人体头发重建方法,用于单目视频。 -[**Paper**](https://arxiv.org/abs/2409.14778) | [**Project Page**](https://eth-ait.github.io/GaussianHaircut/) +[**论文**](https://arxiv.org/abs/2409.14778) | [**项目页面**](https://eth-ait.github.io/GaussianHaircut/) -## Overview +## 概述 -The reconstruction process includes the following main stages: +重建过程包括以下主要阶段: -1. **Preprocessing Stage** - - Video frame extraction and organization - - COLMAP camera reconstruction - - Hair and body segmentation - - Image quality assessment and filtering - - Orientation map calculation - - Facial keypoint detection - - FLAME head model fitting +1. **预处理阶段** + - 视频帧提取和整理 + - COLMAP相机重建 + - 头发和身体分割 + - 图像质量评估和筛选 + - 方向图计算 + - 人脸关键点检测 + - FLAME头部模型拟合 -2. **Reconstruction Stage** - - 3D Gaussian reconstruction - - FLAME mesh fitting - - Scene cropping and optimization - - Hair strand reconstruction +2. **重建阶段** + - 3D高斯体重建 + - FLAME网格拟合 + - 场景裁剪和优化 + - 头发股线重建 -3. **Visualization Stage** - - Export reconstructed strands - - Blender rendering visualization - - Generate result video +3. **可视化阶段** + - 导出重建的股线 + - Blender渲染可视化 + - 生成结果视频 -Expected output: +预期输出: ``` [your_scene_folder]/ -├── raw.mp4 # Input video -├── 3d_gaussian_splatting/ # 3D Gaussian reconstruction results -├── flame_fitting/ # FLAME head model fitting results -├── strands_reconstruction/ # Hair strand reconstruction intermediate results -├── curves_reconstruction/ # Final hair strand results -└── visualization/ # Rendering results and video +├── raw.mp4 # 输入视频 +├── 3d_gaussian_splatting/ # 3D高斯体重建结果 +├── flame_fitting/ # FLAME头部模型拟合结果 +├── strands_reconstruction/ # 头发股线重建中间结果 +├── curves_reconstruction/ # 最终头发股线结果 +└── visualization/ # 渲染结果和视频 ``` -## Directory Structure +## 目录结构 ``` -├── cache/ # Cache directory -│ ├── gdown/ # gdown cache -│ ├── torch/ # PyTorch cache -│ └── huggingface/ # Hugging Face cache -├── ext/ # External dependencies -│ ├── NeuralHaircut/ # NeuralHaircut repository -│ ├── Matte-Anything/ # Matte-Anything repository -│ ├── openpose/ # OpenPose repository -│ ├── pytorch3d/ # PyTorch3D repository -│ ├── simple-knn/ # Simple KNN repository -│ ├── kaolin/ # Kaolin repository -│ └── hyperIQA/ # HyperIQA repository -├── resource/ # Resource files -│ ├── NeuralHaircut/ # NeuralHaircut models -│ ├── Matte-Anything/ # Matte-Anything models -│ ├── openpose/ # OpenPose models -│ ├── PIXIE/ # PIXIE models -│ └── hyperIQA/ # HyperIQA models -├── src/ # Source code -├── micromamba/ # Micromamba installation -├── micromamba.exe # Micromamba executable -├── install.bat # Installation script -├── download_resource.bat # Resource download script -└── run.bat # Execution script +├── cache/ # 缓存目录 +│ ├── gdown/ # gdown缓存 +│ ├── torch/ # PyTorch缓存 +│ └── huggingface/ # Hugging Face缓存 +├── ext/ # 外部依赖 +│ ├── NeuralHaircut/ # NeuralHaircut仓库 +│ ├── Matte-Anything/ # Matte-Anything仓库 +│ ├── openpose/ # OpenPose仓库 +│ ├── pytorch3d/ # PyTorch3D仓库 +│ ├── simple-knn/ # Simple KNN仓库 +│ ├── kaolin/ # Kaolin仓库 +│ └── hyperIQA/ # HyperIQA仓库 +├── resource/ # 资源文件 +│ ├── NeuralHaircut/ # NeuralHaircut模型 +│ ├── Matte-Anything/ # Matte-Anything模型 +│ ├── openpose/ # OpenPose模型 +│ ├── PIXIE/ # PIXIE模型 +│ └── hyperIQA/ # HyperIQA模型 +├── src/ # 源代码 +├── micromamba/ # Micromamba安装目录 +├── micromamba.exe # Micromamba可执行文件 +├── install.bat # 安装脚本 +├── download_resource.bat # 资源下载脚本 +└── run.bat # 执行脚本 ``` -## Environment Variables -Required environment variables: +## 环境变量 +需要设置的环境变量: ```batch -set "PROJECT_DIR=C:\path\to\project" # Project root directory +set "PROJECT_DIR=C:\path\to\project" # 项目根目录 set "CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" set "BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6" set "VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" ``` -## Getting Started +## 环境配置 -### Linux Platform +### Linux 平台 -1. **Install CUDA 11.8** +1. **安装 CUDA 11.8** - Follow instructions at https://developer.nvidia.com/cuda-11-8-0-download-archive + 按照 https://developer.nvidia.com/cuda-11-8-0-download-archive 上的说明进行操作。 - Make sure: - - PATH includes /bin - - LD_LIBRARY_PATH includes /lib64 + 确保: + - PATH 包含 /bin + - LD_LIBRARY_PATH 包含 /lib64 - The environment was tested only with this CUDA version. + 该环境仅在此 CUDA 版本下进行了测试。 -2. **Install Blender 3.6** for strand visualization +2. **安装 Blender 3.6** 以创建股线可视化 - Follow instructions at https://www.blender.org/download/lts/3-6 + 按照 https://www.blender.org/download/lts/3-6 上的说明进行操作。 -3. **Clone repository and run installation script** +3. **克隆仓库并运行安装脚本** - ```bash - git clone git@github.com:eth-ait/GaussianHaircut.git - cd GaussianHaircut - chmod +x ./install.sh - ./install.sh - ``` + ```bash + git clone git@github.com:eth-ait/GaussianHaircut.git + cd GaussianHaircut + chmod +x ./install.sh + ./install.sh + ``` -### Windows Platform +### Windows 平台 -1. **Install CUDA 11.8** - - Download and install from https://developer.nvidia.com/cuda-11-8-0-download-archive - - Default installation path: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 - - Ensure CUDA version is compatible with your system +1. **安装 CUDA 11.8** + - 从 https://developer.nvidia.com/cuda-11-8-0-download-archive 下载并安装 + - 默认安装路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 + - 确保CUDA版本与系统兼容 -2. **Install Blender 3.6** - - Download and install from https://www.blender.org/download/lts/3-6 - - Default installation path: C:\Program Files\Blender Foundation\Blender 3.6 +2. **安装 Blender 3.6** + - 从 https://www.blender.org/download/lts/3-6 下载并安装 + - 默认安装路径:C:\Program Files\Blender Foundation\Blender 3.6 -3. **Install Visual Studio 2019 Build Tools** - - Download and install from https://visualstudio.microsoft.com/vs/older-downloads/ - - Select "C++ Build Tools" workload - - Default installation path: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools +3. **安装 Visual Studio 2019 Build Tools** + - 从 https://visualstudio.microsoft.com/vs/older-downloads/ 下载并安装 + - 选择"C++构建工具"工作负载 + - 默认安装路径:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools -4. **Install COLMAP** - - Download from https://github.com/colmap/colmap/releases - - Download CUDA version of COLMAP (e.g., COLMAP-3.8-windows-cuda.zip) - - Extract to a path without spaces (e.g., C:\COLMAP) - - Add COLMAP directory to system PATH: - 1. Open "System Properties" > "Environment Variables" - 2. Under "System Variables", find "Path" - 3. Click "Edit" > "New" - 4. Add COLMAP directory path - 5. Click "OK" to save - - Restart terminal for PATH changes to take effect +4. **安装 COLMAP** + - 从 https://github.com/colmap/colmap/releases 下载并安装 + - 下载CUDA版本的COLMAP (例如:COLMAP-3.8-windows-cuda.zip) + - 解压到不含空格的路径 (例如:C:\COLMAP) + - 将COLMAP目录添加到系统PATH: + 1. 打开"系统属性" > "环境变量" + 2. 在"系统变量"中找到"Path" + 3. 点击"编辑" > "新建" + 4. 添加COLMAP目录路径 + 5. 点击"确定"保存 + - 重启终端使PATH生效 -5. **Install 7-Zip** - - Download and install from https://7-zip.org/ - - Add 7-Zip installation directory to system PATH: - 1. Open "System Properties" > "Environment Variables" - 2. Under "System Variables", find "Path" - 3. Click "Edit" > "New" - 4. Add 7-Zip installation directory (default: C:\Program Files\7-Zip) - 5. Click "OK" to save - - Restart terminal for PATH changes to take effect +5. **安装 7-Zip** + - 从 https://7-zip.org/ 下载并安装 + - 将7-Zip安装目录添加到系统PATH: + 1. 打开"系统属性" > "环境变量" + 2. 在"系统变量"中找到"Path" + 3. 点击"编辑" > "新建" + 4. 添加7-Zip安装目录(默认为C:\Program Files\7-Zip) + 5. 点击"确定"保存 + - 重启终端使PATH生效 -6. **Download pre-trained models and resources** +6. **下载预训练模型和资源** ```cmd git clone https://github.com/Jeffreytsai1004/GaussianHairCut cd GaussianHairCut - # Run in PowerShell: - # The script will automatically install gdown and download required resources + # 在PowerShell中运行: + # 脚本会自动安装gdown并下载所需资源 .\download_resource.bat ``` - Note: - - Download time varies from minutes to tens of minutes depending on network speed - - If download fails, you can rerun the script - - Ensure stable network connection + 注意: + - 下载过程可能需要几分钟到几十分钟,取决于网络速度 + - 如果下载失败,可以重新运行脚本 + - 确保有稳定的网络连接 -7. **Clone repository and run installation script** - ```cmd - git clone https://github.com/Jeffreytsai1004/GaussianHairCut - cd GaussianHairCut - # First download required resources - .\download_resource.bat - # Run installation script - .\install.bat - # Run reconstruction script - .\run.bat - ``` +## 使用说明 -## Usage +1. **录制单目视频** + - 参考项目页面上的示例视频 + - 录制要求: + * 拍摄对象应缓慢转动头部,确保捕捉到所有角度 + * 保持头发和面部清晰可见 + * 避免快速移动导致的运动模糊 + * 保持光照条件稳定 + * 建议视频长度:10-20秒 + * 建议分辨率:1920x1080或更高 + 注意: + - DATA_PATH 应指向包含 raw.mp4 的目录 + - 目录路径不应包含空格或特殊字符 + - 确保有足够的磁盘空间(建议至少20GB) -1. **Record Monocular Video** - - - Reference example videos on the project page - - Recording requirements: - * Subject should rotate head slowly to capture all angles - * Keep hair and face clearly visible - * Avoid motion blur from fast movements - * Maintain stable lighting conditions - * Recommended length: 10-20 seconds - * Recommended resolution: 1920x1080 or higher - -2. **Setup Scene Directory** +2. **设置重建场景目录** + - 新建一个文件夹,例如:C:\path\to\scene\folder + - 将 raw.mp4 放入该文件夹 +3. **运行安装和重建脚本** + - 在 install.bat 和 run.bat 中设置环境变量 PROJECT_DIR 和 DATA_PATH + - 例如: + ```cmd + set "PROJECT_DIR=C:\path\to\project" + set "DATA_PATH=C:\path\to\scene\folder" + ``` + - 在 install.bat 和 run.bat 中修改环境变量 CUDA_HOME,BLENDER_DIR,VS_DIR + ```cmd + set "CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" + set "BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6" + set "VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" + ``` + - 运行安装脚本 + ```cmd + .\install.bat + ``` + - 运行重建脚本 ```cmd - # In CMD: - set PROJECT_DIR=[path\to\]GaussianHaircut - set DATA_PATH=[path\to\scene\folder] - run.bat - - # Or in PowerShell: - $env:PROJECT_DIR="[path\to\]GaussianHaircut" - $env:DATA_PATH="[path\to\scene\folder]" .\run.bat ``` - - Note: - - DATA_PATH should point to directory containing raw.mp4 - - Directory paths should not contain spaces or special characters - - Ensure sufficient disk space (at least 20GB recommended) -## License +## 许可证 -This code is based on the 3D Gaussian Splatting project. See LICENSE_3DGS for terms and conditions. The rest of the code is distributed under CC BY-NC-SA 4.0. +此代码基于 3D Gaussian Splatting 项目。有关条款和条件,请参阅 LICENSE_3DGS。其余代码根据 CC BY-NC-SA 4.0 分发。 -## Citation +## 引用 -If you find this code helpful for your research, please cite our paper: +如果此代码对您的项目有帮助,请引用以下论文: ```bibtex @inproceedings{zakharov2024gh, @@ -217,11 +215,11 @@ If you find this code helpful for your research, please cite our paper: } ``` -## Related Projects +## 相关项目 - [3D Gaussian Splatting](https://github.com/graphdeco-inria/gaussian-splatting) -- [Neural Haircut](https://github.com/SamsungLabs/NeuralHaircut): FLAME fitting pipeline, strand prior and hairstyle diffusion prior -- [HAAR](https://github.com/Vanessik/HAAR): Hair upsampling -- [Matte-Anything](https://github.com/hustvl/Matte-Anything): Hair and body segmentation -- [PIXIE](https://github.com/yfeng95/PIXIE): FLAME fitting initialization -- [Face-Alignment](https://github.com/1adrianb/face-alignment), [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose): Keypoint detection for FLAME fitting +- [Neural Haircut](https://github.com/SamsungLabs/NeuralHaircut): FLAME 拟合管线、股线先验和发型扩散先验 +- [HAAR](https://github.com/Vanessik/HAAR): 头发上采样 +- [Matte-Anything](https://github.com/hustvl/Matte-Anything): 头发和身体分割 +- [PIXIE](https://github.com/yfeng95/PIXIE): FLAME 拟合的初始化 +- [Face-Alignment](https://github.com/1adrianb/face-alignment), [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose): 用于 FLAME 拟合的关键点检测 \ No newline at end of file diff --git a/README_CN.md b/README_CN.md deleted file mode 100644 index 54b0d84..0000000 --- a/README_CN.md +++ /dev/null @@ -1,221 +0,0 @@ -# Gaussian Haircut:使用股线对齐 3D 高斯模型进行人体头发重建 - -[**中文**](README_CN.md) | [**English**](README.md) - -本仓库包含了 Gaussian Haircut 的官方实现,这是一种基于股线的人体头发重建方法,用于单目视频。 - -[**论文**](https://arxiv.org/abs/2409.14778) | [**项目页面**](https://eth-ait.github.io/GaussianHaircut/) - -## 概述 - -重建过程包括以下主要阶段: - -1. **预处理阶段** - - 视频帧提取和整理 - - COLMAP相机重建 - - 头发和身体分割 - - 图像质量评估和筛选 - - 方向图计算 - - 人脸关键点检测 - - FLAME头部模型拟合 - -2. **重建阶段** - - 3D高斯体重建 - - FLAME网格拟合 - - 场景裁剪和优化 - - 头发股线重建 - -3. **可视化阶段** - - 导出重建的股线 - - Blender渲染可视化 - - 生成结果视频 - -预期输出: -``` -[your_scene_folder]/ -├── raw.mp4 # 输入视频 -├── 3d_gaussian_splatting/ # 3D高斯体重建结果 -├── flame_fitting/ # FLAME头部模型拟合结果 -├── strands_reconstruction/ # 头发股线重建中间结果 -├── curves_reconstruction/ # 最终头发股线结果 -└── visualization/ # 渲染结果和视频 -``` - -## 目录结构 -``` -├── cache/ # 缓存目录 -│ ├── gdown/ # gdown缓存 -│ ├── torch/ # PyTorch缓存 -│ └── huggingface/ # Hugging Face缓存 -├── ext/ # 外部依赖 -│ ├── NeuralHaircut/ # NeuralHaircut仓库 -│ ├── Matte-Anything/ # Matte-Anything仓库 -│ ├── openpose/ # OpenPose仓库 -│ ├── pytorch3d/ # PyTorch3D仓库 -│ ├── simple-knn/ # Simple KNN仓库 -│ ├── kaolin/ # Kaolin仓库 -│ └── hyperIQA/ # HyperIQA仓库 -├── resource/ # 资源文件 -│ ├── NeuralHaircut/ # NeuralHaircut模型 -│ ├── Matte-Anything/ # Matte-Anything模型 -│ ├── openpose/ # OpenPose模型 -│ ├── PIXIE/ # PIXIE模型 -│ └── hyperIQA/ # HyperIQA模型 -├── src/ # 源代码 -├── micromamba/ # Micromamba安装目录 -├── micromamba.exe # Micromamba可执行文件 -├── install.bat # 安装脚本 -├── download_resource.bat # 资源下载脚本 -└── run.bat # 执行脚本 -``` - -## 环境变量 -需要设置的环境变量: -```batch -set "PROJECT_DIR=C:\path\to\project" # 项目根目录 -set "CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -set "BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6" -set "VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" -``` - -## 环境配置 - -### Linux 平台 - -1. **安装 CUDA 11.8** - - 按照 https://developer.nvidia.com/cuda-11-8-0-download-archive 上的说明进行操作。 - - 确保: - - PATH 包含 /bin - - LD_LIBRARY_PATH 包含 /lib64 - - 该环境仅在此 CUDA 版本下进行了测试。 - -2. **安装 Blender 3.6** 以创建股线可视化 - - 按照 https://www.blender.org/download/lts/3-6 上的说明进行操作。 - -3. **克隆仓库并运行安装脚本** - - ```bash - git clone git@github.com:eth-ait/GaussianHaircut.git - cd GaussianHaircut - chmod +x ./install.sh - ./install.sh - ``` - -### Windows 平台 - -1. **安装 CUDA 11.8** - - 从 https://developer.nvidia.com/cuda-11-8-0-download-archive 下载并安装 - - 默认安装路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 - - 确保CUDA版本与系统兼容 - -2. **安装 Blender 3.6** - - 从 https://www.blender.org/download/lts/3-6 下载并安装 - - 默认安装路径:C:\Program Files\Blender Foundation\Blender 3.6 - -3. **安装 Visual Studio 2019 Build Tools** - - 从 https://visualstudio.microsoft.com/vs/older-downloads/ 下载并安装 - - 选择"C++构建工具"工作负载 - - 默认安装路径:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools - -4. **安装 COLMAP** - - 从 https://github.com/colmap/colmap/releases 下载并安装 - - 下载CUDA版本的COLMAP (例如:COLMAP-3.8-windows-cuda.zip) - - 解压到不含空格的路径 (例如:C:\COLMAP) - - 将COLMAP目录添加到系统PATH: - 1. 打开"系统属性" > "环境变量" - 2. 在"系统变量"中找到"Path" - 3. 点击"编辑" > "新建" - 4. 添加COLMAP目录路径 - 5. 点击"确定"保存 - - 重启终端使PATH生效 - -5. **安装 7-Zip** - - 从 https://7-zip.org/ 下载并安装 - - 将7-Zip安装目录添加到系统PATH: - 1. 打开"系统属性" > "环境变量" - 2. 在"系统变量"中找到"Path" - 3. 点击"编辑" > "新建" - 4. 添加7-Zip安装目录(默认为C:\Program Files\7-Zip) - 5. 点击"确定"保存 - - 重启终端使PATH生效 - -6. **下载预训练模型和资源** - ```cmd - git clone https://github.com/Jeffreytsai1004/GaussianHairCut - cd GaussianHairCut - # 在PowerShell中运行: - # 脚本会自动安装gdown并下载所需资源 - .\download_resource.bat - ``` - 注意: - - 下载过程可能需要几分钟到几十分钟,取决于网络速度 - - 如果下载失败,可以重新运行脚本 - - 确保有稳定的网络连接 - -7. **运行安装和重建脚本** - ```cmd - # 运行安装脚本 - .\install.bat - # 运行重建脚本 - .\run.bat - ``` - -## 使用说明 - -1. **录制单目视频** - - 参考项目页面上的示例视频 - - 录制要求: - * 拍摄对象应缓慢转动头部,确保捕捉到所有角度 - * 保持头发和面部清晰可见 - * 避免快速移动导致的运动模糊 - * 保持光照条件稳定 - * 建议视频长度:10-20秒 - * 建议分辨率:1920x1080或更高 - -2. **设置重建场景目录** - ```cmd - # 在CMD中运行: - set PROJECT_DIR=[path\to\]GaussianHaircut - set DATA_PATH=[path\to\scene\folder] - run.bat - - # 或在PowerShell中运行: - $env:PROJECT_DIR="[path\to\]GaussianHaircut" - $env:DATA_PATH="[path\to\scene\folder]" - .\run.bat - ``` - - 注意: - - DATA_PATH 应指向包含 raw.mp4 的目录 - - 目录路径不应包含空格或特殊字符 - - 确保有足够的磁盘空间(建议至少20GB) - -## 许可证 - -此代码基于 3D Gaussian Splatting 项目。有关条款和条件,请参阅 LICENSE_3DGS。其余代码根据 CC BY-NC-SA 4.0 分发。 - -## 引用 - -如果此代码对您的项目有帮助,请引用以下论文: - -```bibtex -@inproceedings{zakharov2024gh, - title = {Human Hair Reconstruction with Strand-Aligned 3D Gaussians}, - author = {Zakharov, Egor and Sklyarova, Vanessa and Black, Michael J and Nam, Giljoo and Thies, Justus and Hilliges, Otmar}, - booktitle = {European Conference of Computer Vision (ECCV)}, - year = {2024} -} -``` - -## 相关项目 - -- [3D Gaussian Splatting](https://github.com/graphdeco-inria/gaussian-splatting) -- [Neural Haircut](https://github.com/SamsungLabs/NeuralHaircut): FLAME 拟合管线、股线先验和发型扩散先验 -- [HAAR](https://github.com/Vanessik/HAAR): 头发上采样 -- [Matte-Anything](https://github.com/hustvl/Matte-Anything): 头发和身体分割 -- [PIXIE](https://github.com/yfeng95/PIXIE): FLAME 拟合的初始化 -- [Face-Alignment](https://github.com/1adrianb/face-alignment), [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose): 用于 FLAME 拟合的关键点检测 \ No newline at end of file diff --git a/README_EN.md b/README_EN.md new file mode 100644 index 0000000..2ba675b --- /dev/null +++ b/README_EN.md @@ -0,0 +1,225 @@ +# Gaussian Haircut: Human Hair Reconstruction with Strand-Aligned 3D Gaussians + +[**中文**](README.md) | [**English**](README_EN.md) + +This repository contains the official implementation of Gaussian Haircut, a strand-based human hair reconstruction method from monocular video. + +[**Paper**](https://arxiv.org/abs/2409.14778) | [**Project Page**](https://eth-ait.github.io/GaussianHaircut/) + +## Overview + +The reconstruction process includes the following main stages: + +1. **Preprocessing Stage** + - Video frame extraction and organization + - COLMAP camera reconstruction + - Hair and body segmentation + - Image quality assessment and filtering + - Orientation map calculation + - Facial keypoint detection + - FLAME head model fitting + +2. **Reconstruction Stage** + - 3D Gaussian reconstruction + - FLAME mesh fitting + - Scene cropping and optimization + - Hair strand reconstruction + +3. **Visualization Stage** + - Export reconstructed strands + - Blender rendering visualization + - Generate result video + +Expected output: +``` +[your_scene_folder]/ +├── raw.mp4 # Input video +├── 3d_gaussian_splatting/ # 3D Gaussian reconstruction results +├── flame_fitting/ # FLAME head model fitting results +├── strands_reconstruction/ # Hair strand reconstruction intermediate results +├── curves_reconstruction/ # Final hair strand results +└── visualization/ # Rendering results and video +``` + +## Directory Structure +``` +├── cache/ # Cache directory +│ ├── gdown/ # gdown cache +│ ├── torch/ # PyTorch cache +│ └── huggingface/ # Hugging Face cache +├── ext/ # External dependencies +│ ├── NeuralHaircut/ # NeuralHaircut repository +│ ├── Matte-Anything/ # Matte-Anything repository +│ ├── openpose/ # OpenPose repository +│ ├── pytorch3d/ # PyTorch3D repository +│ ├── simple-knn/ # Simple KNN repository +│ ├── kaolin/ # Kaolin repository +│ └── hyperIQA/ # HyperIQA repository +├── resource/ # Resource files +│ ├── NeuralHaircut/ # NeuralHaircut models +│ ├── Matte-Anything/ # Matte-Anything models +│ ├── openpose/ # OpenPose models +│ ├── PIXIE/ # PIXIE models +│ └── hyperIQA/ # HyperIQA models +├── src/ # Source code +├── micromamba/ # Micromamba installation +├── micromamba.exe # Micromamba executable +├── install.bat # Installation script +├── download_resource.bat # Resource download script +└── run.bat # Execution script +``` + +## Environment Variables +Required environment variables: +```batch +set "PROJECT_DIR=C:\path\to\project" # Project root directory +set "CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" +set "BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6" +set "VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" +``` + +## Getting Started + +### Linux Platform + +1. **Install CUDA 11.8** + + Follow instructions at https://developer.nvidia.com/cuda-11-8-0-download-archive + + Make sure: + - PATH includes /bin + - LD_LIBRARY_PATH includes /lib64 + + The environment was tested only with this CUDA version. + +2. **Install Blender 3.6** for strand visualization + + Follow instructions at https://www.blender.org/download/lts/3-6 + +3. **Clone repository and run installation script** + + ```bash + git clone git@github.com:eth-ait/GaussianHaircut.git + cd GaussianHaircut + chmod +x ./install.sh + ./install.sh + ``` + +### Windows Platform + +1. **Install CUDA 11.8** + - Download and install from https://developer.nvidia.com/cuda-11-8-0-download-archive + - Default installation path: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 + - Ensure CUDA version is compatible with your system + +2. **Install Blender 3.6** + - Download and install from https://www.blender.org/download/lts/3-6 + - Default installation path: C:\Program Files\Blender Foundation\Blender 3.6 + +3. **Install Visual Studio 2019 Build Tools** + - Download and install from https://visualstudio.microsoft.com/vs/older-downloads/ + - Select "C++ Build Tools" workload + - Default installation path: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools + +4. **Install COLMAP** + - Download from https://github.com/colmap/colmap/releases + - Download CUDA version of COLMAP (e.g., COLMAP-3.8-windows-cuda.zip) + - Extract to a path without spaces (e.g., C:\COLMAP) + - Add COLMAP directory to system PATH: + 1. Open "System Properties" > "Environment Variables" + 2. Under "System Variables", find "Path" + 3. Click "Edit" > "New" + 4. Add COLMAP directory path + 5. Click "OK" to save + - Restart terminal for PATH changes to take effect + +5. **Install 7-Zip** + - Download and install from https://7-zip.org/ + - Add 7-Zip installation directory to system PATH: + 1. Open "System Properties" > "Environment Variables" + 2. Under "System Variables", find "Path" + 3. Click "Edit" > "New" + 4. Add 7-Zip installation directory (default: C:\Program Files\7-Zip) + 5. Click "OK" to save + - Restart terminal for PATH changes to take effect + +6. **Download pre-trained models and resources** + ```cmd + git clone https://github.com/Jeffreytsai1004/GaussianHairCut + cd GaussianHairCut + # Run in PowerShell: + # The script will automatically install gdown and download required resources + .\download_resource.bat + ``` + Note: + - Download time varies from minutes to tens of minutes depending on network speed + - If download fails, you can rerun the script + - Ensure stable network connection + +## Usage + +1. **Record Monocular Video** + - Reference example videos on the project page + - Recording requirements: + * Subject should rotate head slowly to capture all angles + * Keep hair and face clearly visible + * Avoid motion blur from fast movements + * Maintain stable lighting conditions + * Recommended length: 10-20 seconds + * Recommended resolution: 1920x1080 or higher + Note: + - DATA_PATH should point to directory containing raw.mp4 + - Directory paths should not contain spaces or special characters + - Ensure sufficient disk space (at least 20GB recommended) + +2. **Setup Scene Directory** + - Create a new folder, e.g., C:\path\to\scene\folder + - Place raw.mp4 in this folder + +3. **Run Installation and Reconstruction Scripts** + - Set environment variables PROJECT_DIR and DATA_PATH in install.bat and run.bat + - For example: + ```cmd + set "PROJECT_DIR=C:\path\to\project" + set "DATA_PATH=C:\path\to\scene\folder" + ``` + - Modify environment variables CUDA_HOME, BLENDER_DIR, VS_DIR in install.bat and run.bat + ```cmd + set "CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" + set "BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6" + set "VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" + ``` + - Run installation script + ```cmd + .\install.bat + ``` + - Run reconstruction script + ```cmd + .\run.bat + ``` + +## License + +This code is based on the 3D Gaussian Splatting project. See LICENSE_3DGS for terms and conditions. The rest of the code is distributed under CC BY-NC-SA 4.0. + +## Citation + +If you find this code helpful for your research, please cite our paper: + +```bibtex +@inproceedings{zakharov2024gh, + title = {Human Hair Reconstruction with Strand-Aligned 3D Gaussians}, + author = {Zakharov, Egor and Sklyarova, Vanessa and Black, Michael J and Nam, Giljoo and Thies, Justus and Hilliges, Otmar}, + booktitle = {European Conference of Computer Vision (ECCV)}, + year = {2024} +} +``` + +## Related Projects + +- [3D Gaussian Splatting](https://github.com/graphdeco-inria/gaussian-splatting) +- [Neural Haircut](https://github.com/SamsungLabs/NeuralHaircut): FLAME fitting pipeline, strand prior and hairstyle diffusion prior +- [HAAR](https://github.com/Vanessik/HAAR): Hair upsampling +- [Matte-Anything](https://github.com/hustvl/Matte-Anything): Hair and body segmentation +- [PIXIE](https://github.com/yfeng95/PIXIE): FLAME fitting initialization +- [Face-Alignment](https://github.com/1adrianb/face-alignment), [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose): Keypoint detection for FLAME fitting diff --git a/activate_gaussian_splatting_hair.bat b/activate_gaussian_splatting_hair.bat index 40d41d2..6fdb47e 100644 --- a/activate_gaussian_splatting_hair.bat +++ b/activate_gaussian_splatting_hair.bat @@ -1,18 +1,2 @@ -@echo off - -REM 设置环境变量 -SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -SET PATH="%CUDA_HOME%\bin;%PATH%" -SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6" -SET VS_DIR="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" -SET VS_VCVARS="%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" -SET PROJECT_DIR=%~dp0 -SET MICROMAMBA_EXE=%~dp0micromamba.exe -SET MAMBA_ROOT_PREFIX=%PROJECT_DIR%\micromamba -SET PYTHONDONTWRITEBYTECODE=1 -SET GDOWN_CACHE=cache\gdown -SET TORCH_HOME=cache\torch -SET HF_HOME=cache\huggingface - -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -IF EXIST %VS_VCVARS% CALL %VS_VCVARS% +@CALL "%~dp0micromamba.exe" shell init --shell cmd.exe --prefix "%~dp0\" +start cmd /k "%~dp0condabin\micromamba.bat" activate gaussian_splatting_hair \ No newline at end of file diff --git a/activate_matte_anything.bat b/activate_matte_anything.bat index 76783ba..1476b69 100644 --- a/activate_matte_anything.bat +++ b/activate_matte_anything.bat @@ -1,18 +1,2 @@ -@echo off - -REM 设置环境变量 -SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -SET PATH="%CUDA_HOME%\bin;%PATH%" -SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6" -SET VS_DIR="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" -SET VS_VCVARS="%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" -SET PROJECT_DIR=%~dp0 -SET MICROMAMBA_EXE=%~dp0micromamba.exe -SET MAMBA_ROOT_PREFIX=%PROJECT_DIR%\micromamba -SET PYTHONDONTWRITEBYTECODE=1 -SET GDOWN_CACHE=cache\gdown -SET TORCH_HOME=cache\torch -SET HF_HOME=cache\huggingface - -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\matte_anything -IF EXIST %VS_VCVARS% CALL %VS_VCVARS% +@CALL "%~dp0micromamba.exe" shell init --shell cmd.exe --prefix "%~dp0\" +start cmd /k "%~dp0condabin\micromamba.bat" activate matte_anything \ No newline at end of file diff --git a/activate_openpose.bat b/activate_openpose.bat index 8ecb84d..4df15d0 100644 --- a/activate_openpose.bat +++ b/activate_openpose.bat @@ -1,18 +1,2 @@ -@echo off - -REM 设置环境变量 -SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -SET PATH="%CUDA_HOME%\bin;%PATH%" -SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6" -SET VS_DIR="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" -SET VS_VCVARS="%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" -SET PROJECT_DIR=%~dp0 -SET MICROMAMBA_EXE=%~dp0micromamba.exe -SET MAMBA_ROOT_PREFIX=%PROJECT_DIR%\micromamba -SET PYTHONDONTWRITEBYTECODE=1 -SET GDOWN_CACHE=cache\gdown -SET TORCH_HOME=cache\torch -SET HF_HOME=cache\huggingface - -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\openpose -IF EXIST %VS_VCVARS% CALL %VS_VCVARS% \ No newline at end of file +@CALL "%~dp0micromamba.exe" shell init --shell cmd.exe --prefix "%~dp0\" +start cmd /k "%~dp0condabin\micromamba.bat" activate openpose \ No newline at end of file diff --git a/activate_pixie-env.bat b/activate_pixie-env.bat index 748ecd0..147073a 100644 --- a/activate_pixie-env.bat +++ b/activate_pixie-env.bat @@ -1,18 +1,2 @@ -@echo off - -REM 设置环境变量 -SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -SET PATH="%CUDA_HOME%\bin;%PATH%" -SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6" -SET VS_DIR="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" -SET VS_VCVARS="%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" -SET PROJECT_DIR=%~dp0 -SET MICROMAMBA_EXE=%~dp0micromamba.exe -SET MAMBA_ROOT_PREFIX=%PROJECT_DIR%\micromamba -SET PYTHONDONTWRITEBYTECODE=1 -SET GDOWN_CACHE=cache\gdown -SET TORCH_HOME=cache\torch -SET HF_HOME=cache\huggingface - -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\pixie-env -IF EXIST %VS_VCVARS% CALL %VS_VCVARS% +@CALL "%~dp0micromamba.exe" shell init --shell cmd.exe --prefix "%~dp0\" +start cmd /k "%~dp0condabin\micromamba.bat" activate pixie-env \ No newline at end of file diff --git a/download_resource.bat b/download_resource.bat index f91dec8..5f7cc06 100644 --- a/download_resource.bat +++ b/download_resource.bat @@ -1,6 +1,7 @@ @echo off @CALL SET PROJECT_DIR=%~dp0 +<<<<<<< Updated upstream @CALL python -m pip install --upgrade pip @CALL python -m pip install gdown @@ -30,4 +31,49 @@ @CALL cd %PROJECT_DIR%\resource\openpose @CALL python -m gdown 1Yn03cKKfVOq4qXmgBMQD20UMRRRkd_tV @CALL tar -xvzf models.tar.gz -@CALL rm models.tar.gz \ No newline at end of file +@CALL rm models.tar.gz +======= + +@CALL python -m pip install --upgrade pip +@CALL python -m pip install gdown + +@CALL mkdir %PROJECT_DIR%\resource\NeuralHaircut\PIXIE +@CALL mkdir %PROJECT_DIR%\resource\hyperIQA\pretrained +@CALL mkdir %PROJECT_DIR%\resource\Matte-Anything\pretrained +@CALL mkdir %PROJECT_DIR%\resource\openpose + +@CALL cd %PROJECT_DIR%\resource\NeuralHaircut +@CALL python -m gdown --folder https://drive.google.com/drive/folders/1TCdJ0CKR3Q6LviovndOkJaKm8S1T9F_8 +@CALL cd %PROJECT_DIR%\resource\NeuralHaircut\pretrained_models\diffusion_prior +@CALL python -m gdown 1_9EOUXHayKiGH5nkrayncln3d6m1uV7f +@CALL cd %PROJECT_DIR%\resource\NeuralHaircut\PIXIE +@CALL python -m gdown 1mPcGu62YPc4MdkT8FFiOCP629xsENHZf +@CALL tar -xvzf pixie_data.tar.gz ./ +@CALL rm pixie_data.tar.gz +@CALL cd %PROJECT_DIR%\resource\hyperIQA\pretrained +@CALL python -m gdown 1OOUmnbvpGea0LIGpIWEbOyxfWx6UCiiE +@CALL cd %PROJECT_DIR% + +@CALL cd %PROJECT_DIR%\resource\Matte-Anything\pretrained +@CALL curl -L -o sam_vit_h_4b8939.pth https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth +@CALL curl -L -o groundingdino_swint_ogc.pth https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth +@CALL python -m gdown 1d97oKuITCeWgai2Tf3iNilt6rMSSYzkW + +@CALL cd %PROJECT_DIR%\resource\openpose +@CALL python -m gdown 1Yn03cKKfVOq4qXmgBMQD20UMRRRkd_tV +@CALL tar -xvzf models.tar.gz +@CALL rm models.tar.gz + + + + + + + + + + + + + +>>>>>>> Stashed changes diff --git a/install.bat b/install.bat index d31bfd7..3243d67 100644 --- a/install.bat +++ b/install.bat @@ -1,139 +1,146 @@ @echo off -REM 统一环境变量设置格式 -set "PROJECT_DIR=%~dp0" -set "CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -set "PATH=%CUDA_HOME%\bin;%PATH%" -set "BLENDER_DIR=C:\Program Files\Blender Foundation\Blender 3.6" -set "VS_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" -set "VS_VCVARS=%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" -set "MICROMAMBA_EXE=%PROJECT_DIR%micromamba.exe" -set "MAMBA_ROOT_PREFIX=%PROJECT_DIR%micromamba" -set "PYTHONDONTWRITEBYTECODE=1" -set "GDOWN_CACHE=%PROJECT_DIR%\cache\gdown" -set "TORCH_HOME=%PROJECT_DIR%\cache\torch" -set "HF_HOME=%PROJECT_DIR%\cache\huggingface" +@CALL "%~dp0micromamba.exe" shell init --shell cmd.exe --prefix "%~dp0\" +@CALL SET PROJECT_DIR=%~dp0 +@CALL SET MICROMAMBA_EXE=%PROJECT_DIR%\micromamba.exe +@CALL SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\" +@CALL SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6\" +@CALL SET VS_DIR="C:\Program Files\Microsoft Visual Studio\2022\Professional\" +@CALL SET VS_VCVARS="%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" +@CALL SET PATH=%CUDA_HOME%\bin;%PROJECT_DIR%\condabin;%PATH% + +IF NOT EXIST "%CUDA_HOME%" ( + echo ERROR: CUDA_HOME path does not exist: %CUDA_HOME% + exit /b 1 +) +IF NOT EXIST "%BLENDER_DIR%" ( + echo ERROR: BLENDER_DIR path does not exist: %BLENDER_DIR% + exit /b 1 +) +IF NOT EXIST "%VS_DIR%" ( + echo ERROR: VS_DIR path does not exist: %VS_DIR% + exit /b 1 +) +IF NOT EXIST "%MICROMAMBA_EXE%" ( + echo ERROR: micromamba not found at %MICROMAMBA_EXE% + echo Please install micromamba from https://mamba.readthedocs.io/en/latest/installation.html + exit /b 1 +) + +{{ Gaussian Splatting Hair 环境 }} +@CALL "%~dp0micromamba.exe" create -n gaussian_splatting_hair python=3.9 -c pytorch -c nvidia -c conda-forge -c anaconda -c fvcore -c iopath -c bottler -c nvidia -r "%~dp0\" -y +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL python -m pip install pip==23.3.1 +@CALL python -m pip install gdown==5.2.0 +@CALL python -m pip install -r requirements.txt + +@CALL cd %PROJECT_DIR%\ext +@CALL git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose --depth 1 +@CALL cd %PROJECT_DIR%\ext\openpose +@CALL git submodule update --init --recursive --remote +@CALL cd %PROJECT_DIR%\ext +@CALL git clone https://github.com/hustvl/Matte-Anything +@CALL cd %PROJECT_DIR%\ext\Matte-Anything +@CALL git clone https://github.com/IDEA-Research/GroundingDINO.git +@CALL cd %PROJECT_DIR%\ext +@CALL git clone git@github.com:egorzakharov/NeuralHaircut.git --recursive +@CALL cd %PROJECT_DIR%\ext +@CALL git clone https://github.com/facebookresearch/pytorch3d +@CALL cd %PROJECT_DIR%\ext\pytorch3d +@CALL git checkout 2f11ddc5ee7d6bd56f2fb6744a16776fab6536f7 +@CALL cd %PROJECT_DIR%\ext +@CALL git clone https://github.com/camenduru/simple-knn +@CALL cd %PROJECT_DIR%\ext\diff_gaussian_rasterization_hair\third_party +@CALL git clone https://github.com/g-truc/glm +@CALL cd %PROJECT_DIR%\ext\diff_gaussian_rasterization_hair\third_party\glm +@CALL git checkout 5c46b9c07008ae65cb81ab79cd677ecc1934b903 +@CALL cd %PROJECT_DIR%\ext +@CALL git clone --recursive https://github.com/NVIDIAGameWorks/kaolin +@CALL cd %PROJECT_DIR%\ext\kaolin +@CALL git checkout v0.15.0 +@CALL cd %PROJECT_DIR%\ext +@CALL git clone https://github.com/SSL92/hyperIQA %PROJECT_DIR%\ext\hyperIQA + +@CALL copy %PROJECT_DIR%\resource\NeuralHaircut\pretrained_models\diffusion_prior %PROJECT_DIR%\ext\NeuralHaircut\pretrained_models\diffusion_prior +@CALL copy %PROJECT_DIR%\resource\NeuralHaircut\PIXIE %PROJECT_DIR%\ext\NeuralHaircut\PIXIE +@CALL copy %PROJECT_DIR%\resource\hyperIQA\pretrained %PROJECT_DIR%\ext\hyperIQA\pretrained +@CALL copy %PROJECT_DIR%\resource\openpose %PROJECT_DIR%\ext\openpose +@CALL cd %PROJECT_DIR% +@CALL condabin\micromamba.bat deactivate gaussian_splatting_hair + +{{ Matte Anything 环境 }} +@CALL "%~dp0micromamba.exe" create -n matte_anything python=3.9 pytorch=2.0.0 pytorch-cuda=11.8 torchvision tensorboard timm=0.5.4 opencv=4.5.3 mkl=2024.0 setuptools=58.2.0 easydict wget scikit-image gradio=3.46.1 fairscale -c pytorch -c nvidia -c conda-forge -r "%~dp0\" -y +@CALL condabin\micromamba.bat activate matte_anything +@CALL mkdir %PROJECT_DIR%\ext\Matte-Anything +@CALL cd %PROJECT_DIR%\ext\Matte-Anything +@CALL git clone git@github.com:facebookresearch/segment-anything.git +@CALL cd segment-anything +@CALL pip install -e . +@CALL cd %PROJECT_DIR%\ext\Matte-Anything +@CALL git clone https://github.com/conansherry/detectron2 +@CALL cd detectron2 +@CALL pip install -e . +@CALL cd %PROJECT_DIR%\ext\Matte-Anything\GroundingDINO +@CALL pip install -e . +@CALL mkdir %PROJECT_DIR%\ext\Matte-Anything\pretrained +@CALL cd %PROJECT_DIR%\ext\Matte-Anything\pretrained +@CALL copy %PROJECT_DIR%\resource\Matte-Anything\pretrained %PROJECT_DIR%\ext\Matte-Anything\pretrained +@CALL cd %PROJECT_DIR% +@CALL condabin\micromamba.bat deactivate matte_anything + +{{ OpenPose 环境 }} +@CALL "%~dp0micromamba.exe" create -n openpose cmake=3.20 -c conda-forge -r "%~dp0\" -y +@CALL condabin\micromamba.bat activate openpose +@CALL cd %PROJECT_DIR%\ext\openpose +@CALL git submodule update --init --recursive --remote +@CALL copy %PROJECT_DIR%\resource\openpose %PROJECT_DIR%\ext\openpose +@CALL mkdir build +@CALL cd build +@CALL %VS_VCVARS% +@CALL cmake .. -G "Visual Studio 17 2022" -A x64 -T host=x64 -DBUILD_PYTHON=true -DUSE_CUDNN=off +@CALL cmake --build . --config Release +@CALL cd %PROJECT_DIR% +@CALL condabin\micromamba.bat deactivate openpose + +{{ PIXIE 环境 }} +@CALL "%~dp0micromamba.exe" create -n pixie-env python=3.8 pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 fvcore pytorch3d==0.7.5 kornia matplotlib -c pytorch -c nvidia -c fvcore -c conda-forge -c pytorch3d -r "%~dp0\" -y +@CALL condabin\micromamba.bat activate pixie-env +@CALL cd %PROJECT_DIR%\ext +@CALL git clone https://github.com/yfeng95/PIXIE +@CALL cd %PROJECT_DIR%\ext\PIXIE +@CALL chmod +x fetch_model.sh && ./fetch_model.sh +@CALL pip install pyyaml==5.4.1 +@CALL pip install git+https://github.com/1adrianb/face-alignment.git@54623537fd9618ca7c15688fd85aba706ad92b59 +@CALL cd %PROJECT_DIR% +@CALL condabin\micromamba.bat deactivate pixie-env + + + + + + + + + + + + + + + + + + + + + + -REM 拉取所有外部库 -mkdir ext -cd %PROJECT_DIR%\ext && git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose --depth 1 -cd %PROJECT_DIR%\ext\openpose && git submodule update --init --recursive --remote -cd %PROJECT_DIR%\ext && git clone https://github.com/hustvl/Matte-Anything -cd %PROJECT_DIR%\ext\Matte-Anything && git clone https://github.com/IDEA-Research/GroundingDINO.git -cd %PROJECT_DIR%\ext && git clone git@github.com:egorzakharov/NeuralHaircut.git --recursive -cd %PROJECT_DIR%\ext && git clone https://github.com/facebookresearch/pytorch3d -cd %PROJECT_DIR%\ext\pytorch3d && git checkout 2f11ddc5ee7d6bd56f2fb6744a16776fab6536f7 -cd %PROJECT_DIR%\ext && git clone https://github.com/camenduru/simple-knn -cd %PROJECT_DIR%\ext\diff_gaussian_rasterization_hair\third_party && git clone https://github.com/g-truc/glm -cd %PROJECT_DIR%\ext\diff_gaussian_rasterization_hair\third_party\glm && git checkout 5c46b9c07008ae65cb81ab79cd677ecc1934b903 -cd %PROJECT_DIR%\ext && git clone --recursive https://github.com/NVIDIAGameWorks/kaolin -cd %PROJECT_DIR%\ext\kaolin && git checkout v0.15.0 -cd %PROJECT_DIR%\ext && git clone https://github.com/SSL92/hyperIQA -REM 创建主环境 -%MICROMAMBA_EXE% create -y -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair python=3.9 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -pip install -r requirements.txt -CALL %MICROMAMBA_EXE% deactivate -REM 创建 Matte-Anything 环境 -%MICROMAMBA_EXE% create -y -p %MAMBA_ROOT_PREFIX%\envs\matte_anything python=3.9 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\matte_anything -pip install -r requirements_matte.txt -CALL %MICROMAMBA_EXE% deactivate -REM 创建 PIXIE 环境 -%MICROMAMBA_EXE% create -y -p %MAMBA_ROOT_PREFIX%\envs\pixie-env python=3.8 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\pixie-env -pip install -r requirements_pixie.txt -CALL %MICROMAMBA_EXE% deactivate -REM 创建 OpenPose 环境 -%MICROMAMBA_EXE% create -y -p %MAMBA_ROOT_PREFIX%\envs\openpose python=3.9 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\openpose -pip install -r requirements_openpose.txt -REM 从resource文件夹拷贝Neural Haircut文件 -xcopy /E /I /Y %PROJECT_DIR%\resource\NeuralHaircut %PROJECT_DIR%\ext\NeuralHaircut -xcopy /E /I /Y %PROJECT_DIR%\resource\hyperIQA\pretrained %PROJECT_DIR%\ext\hyperIQA\pretrained -cd %PROJECT_DIR% -REM 退出 OpenPose 环境 -CALL %MICROMAMBA_EXE% deactivate -REM Matte-Anything -%MICROMAMBA_EXE% create -y -n matte_anything pytorch=2.0.0 pytorch-cuda=11.8 torchvision tensorboard timm=0.5.4 opencv=4.5.3 mkl=2024.0 setuptools=58.2.0 easydict wget scikit-image gradio=3.46.1 fairscale -c pytorch -c nvidia -c conda-forge -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\matte_anything -REM 安装pip -python -m pip install --upgrade pip -REM 安装segment-anything -pip install git+https://github.com/facebookresearch/segment-anything.git -REM 安装detectron2 -python -m pip install 'git+https://github.com/facebookresearch/detectron2.git' -REM 安装GroundingDINO -cd %PROJECT_DIR%\ext\Matte-Anything\GroundingDINO -pip install -e . -REM 安装supervision 修复GroundingDINO错误 -pip install supervision==0.22.0 -REM 创建pretrained文件夹 -cd %PROJECT_DIR%\ext\Matte-Anything && mkdir pretrained -cd %PROJECT_DIR%\ext\Matte-Anything\pretrained -xcopy /E /I /Y %PROJECT_DIR%\resource\Matte-Anything\pretrained\sam_vit_h_4b8939.pth %PROJECT_DIR%\ext\Matte-Anything\pretrained -xcopy /E /I /Y %PROJECT_DIR%\resource\Matte-Anything\pretrained\groundingdino_swint_ogc.pth %PROJECT_DIR%\ext\Matte-Anything\pretrained -REM 退出matte_anything环境 -CALL %MICROMAMBA_EXE% deactivate -REM 进入gaussian_splatting_hair环境 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -REM 下载Neural Haircut文件 -xcopy /E /I /Y %PROJECT_DIR%\resource\Matte-Anything\pretrained\model_best.pth %PROJECT_DIR%\ext\Matte-Anything\pretrained -REM 退出gaussian_splatting_hair环境 -CALL %MICROMAMBA_EXE% deactivate -REM OpenPose -cd %PROJECT_DIR%\ext\openpose -xcopy /E /I /Y %PROJECT_DIR%\resource\openpose\models %PROJECT_DIR%\ext\openpose\models -REM 更新openpose子模块 -git submodule update --init --recursive --remote -REM 创建openpose环境 避免cmake错误 -%MICROMAMBA_EXE% create -y -p %MAMBA_ROOT_PREFIX%\envs\openpose cmake=3.20 -c conda-forge -REM 进入openpose环境 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\openpose -REM 创建build文件夹 -mkdir build -cd build -REM 调用Visual Studio环境 -CALL %VS_VCVARS% -REM 使用Visual Studio 2019构建 -cmake .. -DBUILD_PYTHON=true -DUSE_CUDNN=off -DBUILD_CAFFE=false -G "Visual Studio 16 2019" -A x64 -cmake --build . --config Release -REM 退出openpose环境 -CALL %MICROMAMBA_EXE% deactivate - -REM PIXIE -cd %PROJECT_DIR%\ext && git clone https://github.com/yfeng95/PIXIE -cd %PROJECT_DIR%\ext\PIXIE -REM 创建data目录 -mkdir data 2>nul -cd data -REM 从resource拷贝PIXIE模型文件 -xcopy /E /I /Y %PROJECT_DIR%\resource\PIXIE\data %PROJECT_DIR%\ext\PIXIE\data -cd .. - -REM 创建pixie环境 -%MICROMAMBA_EXE% create -y -p %MAMBA_ROOT_PREFIX%\envs\pixie-env python=3.8 pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 ^ - pytorch-cuda=11.8 fvcore pytorch3d==0.7.5 kornia matplotlib ^ - -c pytorch -c nvidia -c fvcore -c conda-forge -c pytorch3d -REM 进入pixie环境 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\pixie-env -REM 安装pip -python -m pip install --upgrade pip -REM 安装pyyaml -pip install pyyaml==5.4.1 -REM 安装face-alignment -pip install "git+https://github.com/1adrianb/face-alignment.git@54623537fd9618ca7c15688fd85aba706ad92b59" -REM 退出pixie环境 -CALL %MICROMAMBA_EXE% deactivate - -REM 安装pip包 -pip install pysdf==0.1.9 clean-fid==0.1.35 face-alignment==1.4.1 clip==0.2.0 ^ - torchdiffeq==0.2.3 torchsde==0.2.5 resize-right==0.0.2 diff --git a/requirements.txt b/requirements.txt index 4d022ee..b100102 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ -# Core dependencies from environment.yml -python==3.9 -pip==23.3.1 setuptools==69.5.1 +gcc==10.4.0 +gxx==10.4.0 +gxx_linux-64==10.4.0 plyfile==0.8.1 pytorch==2.1.1 torchvision==0.16.1 @@ -23,7 +23,6 @@ tqdm==4.66.5 gdown==5.2.0 colmap==3.10 -# Pip packages pysdf==0.1.9 clean-fid==0.1.35 face-alignment==1.4.1 @@ -31,16 +30,3 @@ clip==0.2.0 torchdiffeq==0.2.3 torchsde==0.2.5 resize-right==0.0.2 - -# Local packages --e ./ext/pytorch3d --e ./ext/NeuralHaircut/npbgpp --e ./ext/simple-knn --e ./ext/diff_gaussian_rasterization_hair --e ./ext/kaolin - -# Development tools -pytest -black -flake8 -ipython \ No newline at end of file diff --git a/requirements_matte.txt b/requirements_matte.txt deleted file mode 100644 index b3fda22..0000000 --- a/requirements_matte.txt +++ /dev/null @@ -1,18 +0,0 @@ -pytorch==2.0.0 -pytorch-cuda==11.8 -torchvision -tensorboard -timm==0.5.4 -opencv==4.5.3 -mkl==2024.0 -setuptools==58.2.0 -easydict -wget -scikit-image -gradio==3.46.1 -fairscale - -# Git packages -git+https://github.com/facebookresearch/segment-anything.git -git+https://github.com/facebookresearch/detectron2.git -supervision==0.22.0 \ No newline at end of file diff --git a/requirements_openpose.txt b/requirements_openpose.txt deleted file mode 100644 index e1eb5a9..0000000 --- a/requirements_openpose.txt +++ /dev/null @@ -1 +0,0 @@ -cmake==3.20 \ No newline at end of file diff --git a/requirements_pixie.txt b/requirements_pixie.txt deleted file mode 100644 index 5c59ee0..0000000 --- a/requirements_pixie.txt +++ /dev/null @@ -1,13 +0,0 @@ -python==3.8 -pytorch==2.0.0 -torchvision==0.15.0 -torchaudio==2.0.0 -pytorch-cuda==11.8 -fvcore -pytorch3d==0.7.5 -kornia -matplotlib -pyyaml==5.4.1 - -# Git packages -git+https://github.com/1adrianb/face-alignment.git@54623537fd9618ca7c15688fd85aba706ad92b59 \ No newline at end of file diff --git a/run.bat b/run.bat index f40cf57..9582b83 100644 --- a/run.bat +++ b/run.bat @@ -1,343 +1,318 @@ @echo off -setlocal enabledelayedexpansion -REM 设置环境变量 -SET MICROMAMBA_EXE=%~dp0micromamba.exe -SET MAMBA_ROOT_PREFIX=%~dp0micromamba -SET CUDA_VISIBLE_DEVICES=0 -SET CAMERA=PINHOLE -SET EXP_NAME_1=stage1 -SET EXP_NAME_2=stage2 -SET EXP_NAME_3=stage3 -SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6" -SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8" -set "PATH=%CUDA_HOME%\bin;%PATH%" +@CALL "%~dp0micromamba.exe" shell init --shell cmd.exe --prefix "%~dp0\" +@CALL SET PROJECT_DIR=%~dp0 +@CALL SET MICROMAMBA_EXE=%PROJECT_DIR%\micromamba.exe +@CALL SET CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\" +@CALL SET BLENDER_DIR="C:\Program Files\Blender Foundation\Blender 3.6\" +@CALL SET VS_DIR="C:\Program Files\Microsoft Visual Studio\2022\Professional\" +@CALL SET VS_VCVARS="%VS_DIR%\VC\Auxiliary\Build\vcvars64.bat" +@CALL SET PATH=%CUDA_HOME%\bin;%PROJECT_DIR%\condabin;%PATH% + +@CALL condabin\micromamba.bat activate gaussian_splatting_hair REM 确保以下环境变量可用: REM PROJECT_DIR 和 DATA_PATH REM 检查必要的环境变量 -IF NOT DEFINED PROJECT_DIR ( - echo 错误:未设置PROJECT_DIR环境变量 - exit /b 1 +IF "%PROJECT_DIR%"=="" ( + echo ERROR: PROJECT_DIR environment variable is not set + @exit /b 1 ) -IF NOT DEFINED DATA_PATH ( - echo 错误:未设置DATA_PATH环境变量 - exit /b 1 +IF "%DATA_PATH%"=="" ( + echo ERROR: DATA_PATH environment variable is not set + @exit /b 1 ) IF NOT EXIST "%BLENDER_DIR%" ( echo ERROR: BLENDER_DIR path does not exist: %BLENDER_DIR% - exit /b 1 + @exit /b 1 ) IF NOT EXIST "%MICROMAMBA_EXE%" ( echo ERROR: micromamba not found at %MICROMAMBA_EXE% - echo Please install micromamba from https://mamba.readthedocs.io/en/latest/installation.html - exit /b 1 -) - -REM 检查输入视频 -IF NOT EXIST "%DATA_PATH%\raw.mp4" ( - echo 错误:未找到输入视频文件 %DATA_PATH%\raw.mp4 - exit /b 1 -) - -REM 检查视频格式和分辨率 -ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration -of csv=p=0 "%DATA_PATH%\raw.mp4" || ( - echo 错误:无法读取视频信息,请确保视频格式正确 - exit /b 1 + @echo Please install micromamba from https://mamba.readthedocs.io/en/latest/installation.html + @exit /b 1 ) REM ################## REM # 预处理阶段 # REM ################## -REM 添加进度显示 -echo [1/3] 预处理阶段开始... - REM 将原始图像整理成3D Gaussian Splatting格式 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python preprocess_raw_images.py --data_path %DATA_PATH% +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python preprocess_raw_images.py --data_path %DATA_PATH% IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行COLMAP重建并去畸变图像和相机 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -pushd %PROJECT_DIR%\src -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python convert.py -s %DATA_PATH% --camera %CAMERA% --max_size 1024 -popd +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python convert.py -s %DATA_PATH% --camera %CAMERA% --max_size 1024 IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行Matte-Anything -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\matte_anything -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python calc_masks.py --data_path %DATA_PATH% --image_format png --max_size 2048 +@CALL condabin\micromamba.bat activate matte_anything +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python calc_masks.py --data_path %DATA_PATH% --image_format png --max_size 2048 IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 使用IQA分数过滤图像 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python filter_extra_images.py --data_path %DATA_PATH% --max_imgs 128 +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python filter_extra_images.py --data_path %DATA_PATH% --max_imgs 128 IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 调整图像大小 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python resize_images.py --data_path %DATA_PATH% +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python resize_images.py --data_path %DATA_PATH% IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 计算方向图 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python calc_orientation_maps.py --img_path %DATA_PATH%\images_2 --mask_path %DATA_PATH%\masks_2\hair --orient_dir %DATA_PATH%\orientations_2\angles --conf_dir %DATA_PATH%\orientations_2\vars --filtered_img_dir %DATA_PATH%\orientations_2\filtered_imgs --vis_img_dir %DATA_PATH%\orientations_2\vis_imgs +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python calc_orientation_maps.py --img_path %DATA_PATH%\images_2 --mask_path %DATA_PATH%\masks_2\hair --orient_dir %DATA_PATH%\orientations_2\angles --conf_dir %DATA_PATH%\orientations_2\vars --filtered_img_dir %DATA_PATH%\orientations_2\filtered_imgs --vis_img_dir %DATA_PATH%\orientations_2\vis_imgs IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行OpenPose -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\openpose -cd %PROJECT_DIR%\ext\openpose -mkdir %DATA_PATH%\openpose -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -"%PROJECT_DIR%\ext\openpose\build\x64\Release\OpenPoseDemo.exe" --image_dir %DATA_PATH%\images_4 --scale_number 4 --scale_gap 0.25 --face --hand --display 0 --write_json %DATA_PATH%\openpose\json --write_images %DATA_PATH%\openpose\images --write_images_format jpg +@CALL condabin\micromamba.bat activate openpose +@CALL cd %PROJECT_DIR%\ext\openpose +@CALL mkdir %DATA_PATH%\openpose +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL "%PROJECT_DIR%\ext\openpose\build\x64\Release\OpenPoseDemo.exe" --image_dir %DATA_PATH%\images_4 --scale_number 4 --scale_gap 0.25 --face --hand --display 0 --write_json %DATA_PATH%\openpose\json --write_images %DATA_PATH%\openpose\images --write_images_format jpg IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行Face-Alignment -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python calc_face_alignment.py --data_path %DATA_PATH% --image_dir "images_4" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python calc_face_alignment.py --data_path %DATA_PATH% --image_dir "images_4" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行PIXIE -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\pixie-env -cd %PROJECT_DIR%\ext\PIXIE -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python demos\demo_fit_face.py -i %DATA_PATH%\images_4 -s %DATA_PATH%\pixie --saveParam True --lightTex False --useTex False --rasterizer_type pytorch3d +@CALL condabin\micromamba.bat activate pixie-env +@CALL cd %PROJECT_DIR%\ext\PIXIE +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python demos\demo_fit_face.py -i %DATA_PATH%\images_4 -s %DATA_PATH%\pixie --saveParam True --lightTex False --useTex False --rasterizer_type pytorch3d IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 合并所有PIXIE预测到单个文件 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python merge_smplx_predictions.py --data_path %DATA_PATH% +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python merge_smplx_predictions.py --data_path %DATA_PATH% IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 将COLMAP相机转换为txt -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -mkdir %DATA_PATH%\sparse_txt -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -colmap model_converter --input_path %DATA_PATH%\sparse\0 --output_path %DATA_PATH%\sparse_txt --output_type TXT +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL mkdir %DATA_PATH%\sparse_txt +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL colmap model_converter --input_path %DATA_PATH%\sparse\0 --output_path %DATA_PATH%\sparse_txt --output_type TXT IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 将COLMAP相机转换为H3DS格式 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python colmap_parsing.py --path_to_scene %DATA_PATH% +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python colmap_parsing.py --path_to_scene %DATA_PATH% IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 删除原始文件以节省磁盘空间 -rmdir /s /q %DATA_PATH%\input %DATA_PATH%\images %DATA_PATH%\masks %DATA_PATH%\iqa* +@CALL rmdir /s /q %DATA_PATH%\input %DATA_PATH%\images %DATA_PATH%\masks %DATA_PATH%\iqa* IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 清理临时文件 -del /f /s /q %DATA_PATH%\*.tmp >nul 2>&1 +@CALL del /f /s /q %DATA_PATH%\*.tmp >nul 2>&1 REM ################## REM # 重建阶段 # REM ################## -REM 添加进度显示 -echo [2/3] 重建阶段开始... - set EXP_PATH_1=%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1% REM 运行3D Gaussian Splatting重建 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python train_gaussians.py -s %DATA_PATH% -m "%EXP_PATH_1%" -r 1 --port "888%CUDA_VISIBLE_DEVICES%" --trainable_cameras --trainable_intrinsics --use_barf --lambda_dorient 0.1 +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python train_gaussians.py -s %DATA_PATH% -m "%EXP_PATH_1%" -r 1 --port "888%GPU%" --trainable_cameras --trainable_intrinsics --use_barf --lambda_dorient 0.1 IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行FLAME网格拟合 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\ext\NeuralHaircut\src\multiview_optimization +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\ext\NeuralHaircut\src\multiview_optimization -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python fit.py --conf confs\train_person_1.conf --batch_size 1 --train_rotation True --fixed_images True --save_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_1 --data_path %DATA_PATH% --fitted_camera_path %EXP_PATH_1%\cameras\30000_matrices.pkl +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python fit.py --conf confs\train_person_1.conf --batch_size 1 --train_rotation True --fixed_images True --save_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_1 --data_path %DATA_PATH% --fitted_camera_path %EXP_PATH_1%\cameras\30000_matrices.pkl IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) -python fit.py --conf confs\train_person_1.conf --batch_size 4 --train_rotation True --fixed_images True --save_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_2 --checkpoint_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_1\opt_params_final --data_path %DATA_PATH% --fitted_camera_path %EXP_PATH_1%\cameras\30000_matrices.pkl +@CALL python fit.py --conf confs\train_person_1.conf --batch_size 4 --train_rotation True --fixed_images True --save_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_2 --checkpoint_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_1\opt_params_final --data_path %DATA_PATH% --fitted_camera_path %EXP_PATH_1%\cameras\30000_matrices.pkl IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) -python fit.py --conf confs\train_person_1_.conf --batch_size 32 --train_rotation True --train_shape True --save_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_3 --checkpoint_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_2\opt_params_final --data_path %DATA_PATH% --fitted_camera_path %EXP_PATH_1%\cameras\30000_matrices.pkl +@CALL python fit.py --conf confs\train_person_1_.conf --batch_size 32 --train_rotation True --train_shape True --save_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_3 --checkpoint_path %DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_2\opt_params_final --data_path %DATA_PATH% --fitted_camera_path %EXP_PATH_1%\cameras\30000_matrices.pkl IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 裁剪重建的场景 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python scale_scene_into_sphere.py --path_to_data %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --iter 30000 +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python scale_scene_into_sphere.py --path_to_data %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --iter 30000 IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 移除与FLAME头部网格相交的头发高斯体 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python filter_flame_intersections.py --flame_mesh_dir %DATA_PATH%\flame_fitting\%EXP_NAME_1% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --iter 30000 --project_dir %PROJECT_DIR%\ext\NeuralHaircut +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python filter_flame_intersections.py --flame_mesh_dir %DATA_PATH%\flame_fitting\%EXP_NAME_1% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --iter 30000 --project_dir %PROJECT_DIR%\ext\NeuralHaircut IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 为训练视图运行渲染 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python render_gaussians.py -s %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --skip_test --scene_suffix "_cropped" --iteration 30000 --trainable_cameras --trainable_intrinsics --use_barf +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python render_gaussians.py -s %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --skip_test --scene_suffix "_cropped" --iteration 30000 --trainable_cameras --trainable_intrinsics --use_barf IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 获取FLAME网格头皮图 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python extract_non_visible_head_scalp.py --project_dir %PROJECT_DIR%\ext\NeuralHaircut --data_dir %DATA_PATH% --flame_mesh_dir %DATA_PATH%\flame_fitting\%EXP_NAME_1% --cams_path %DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%\cameras\30000_matrices.pkl -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python extract_non_visible_head_scalp.py --project_dir %PROJECT_DIR%\ext\NeuralHaircut --data_dir %DATA_PATH% --flame_mesh_dir %DATA_PATH%\flame_fitting\%EXP_NAME_1% --cams_path %DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%\cameras\30000_matrices.pkl -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行潜在头发股线重建 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python train_latent_strands.py -s %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" -r 1 --model_path_hair "%DATA_PATH%\strands_reconstruction\%EXP_NAME_2%" --flame_mesh_dir "%DATA_PATH%\flame_fitting\%EXP_NAME_1%" --pointcloud_path_head "%EXP_PATH_1%\point_cloud_filtered\iteration_30000\raw_point_cloud.ply" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" --lambda_dmask 0.1 --lambda_dorient 0.1 --lambda_dsds 0.01 --load_synthetic_rgba --load_synthetic_geom --binarize_masks --iteration_data 30000 --trainable_cameras --trainable_intrinsics --use_barf --iterations 20000 --port "800%CUDA_VISIBLE_DEVICES%" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python train_latent_strands.py -s %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" -r 1 --model_path_hair "%DATA_PATH%\strands_reconstruction\%EXP_NAME_2%" --flame_mesh_dir "%DATA_PATH%\flame_fitting\%EXP_NAME_1%" --pointcloud_path_head "%EXP_PATH_1%\point_cloud_filtered\iteration_30000\raw_point_cloud.ply" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" --lambda_dmask 0.1 --lambda_dorient 0.1 --lambda_dsds 0.01 --load_synthetic_rgba --load_synthetic_geom --binarize_masks --iteration_data 30000 --trainable_cameras --trainable_intrinsics --use_barf --iterations 20000 --port "800%GPU%" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 运行头发股线重建 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python train_strands.py -s %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" -r 1 --model_path_curves "%DATA_PATH%\curves_reconstruction\%EXP_NAME_3%" --flame_mesh_dir "%DATA_PATH%\flame_fitting\%EXP_NAME_1%" --pointcloud_path_head "%EXP_PATH_1%\point_cloud_filtered\iteration_30000\raw_point_cloud.ply" --start_checkpoint_hair "%DATA_PATH%\strands_reconstruction\%EXP_NAME_2%\checkpoints\20000.pth" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" --lambda_dmask 0.1 --lambda_dorient 0.1 --lambda_dsds 0.01 --load_synthetic_rgba --load_synthetic_geom --binarize_masks --iteration_data 30000 --position_lr_init 0.0000016 --position_lr_max_steps 10000 --trainable_cameras --trainable_intrinsics --use_barf --iterations 10000 --port "800%CUDA_VISIBLE_DEVICES%" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python train_strands.py -s %DATA_PATH% -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" -r 1 --model_path_curves "%DATA_PATH%\curves_reconstruction\%EXP_NAME_3%" --flame_mesh_dir "%DATA_PATH%\flame_fitting\%EXP_NAME_1%" --pointcloud_path_head "%EXP_PATH_1%\point_cloud_filtered\iteration_30000\raw_point_cloud.ply" --start_checkpoint_hair "%DATA_PATH%\strands_reconstruction\%EXP_NAME_2%\checkpoints\20000.pth" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" --lambda_dmask 0.1 --lambda_dorient 0.1 --lambda_dsds 0.01 --load_synthetic_rgba --load_synthetic_geom --binarize_masks --iteration_data 30000 --position_lr_init 0.0000016 --position_lr_max_steps 10000 --trainable_cameras --trainable_intrinsics --use_barf --iterations 10000 --port "800%GPU%" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) -rmdir /s /q "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%\train_cropped" +@CALL rmdir /s /q "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%\train_cropped" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM ################## REM # 可视化阶段 # REM ################## -REM 添加进度显示 -echo [3/3] 可视化阶段开始... - REM 导出结果的股线为pkl和ply格式 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\preprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python export_curves.py --data_dir %DATA_PATH% --model_name %EXP_NAME_3% --iter 10000 --flame_mesh_path "%DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_3\mesh_final.obj" --scalp_mesh_path "%DATA_PATH%\flame_fitting\%EXP_NAME_1%\scalp_data\scalp.obj" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\preprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python export_curves.py --data_dir %DATA_PATH% --model_name %EXP_NAME_3% --iter 10000 --flame_mesh_path "%DATA_PATH%\flame_fitting\%EXP_NAME_1%\stage_3\mesh_final.obj" --scalp_mesh_path "%DATA_PATH%\flame_fitting\%EXP_NAME_1%\scalp_data\scalp.obj" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 渲染可视化 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\postprocessing -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python render_video.py --blender_path "%BLENDER_DIR%" --input_path "%DATA_PATH%" --exp_name_1 "%EXP_NAME_1%" --exp_name_3 "%EXP_NAME_3%" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\postprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python render_video.py --blender_path "%BLENDER_DIR%" --input_path "%DATA_PATH%" --exp_name_1 "%EXP_NAME_1%" --exp_name_3 "%EXP_NAME_3%" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 渲染股线 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python render_strands.py -s %DATA_PATH% --data_dir "%DATA_PATH%" --data_device 'cpu' --skip_test -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --iteration 30000 --flame_mesh_dir "%DATA_PATH%\flame_fitting\%EXP_NAME_1%" --model_hair_path "%DATA_PATH%\curves_reconstruction\%EXP_NAME_3%" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" --checkpoint_hair "%DATA_PATH%\strands_reconstruction\%EXP_NAME_2%\checkpoints\20000.pth" --checkpoint_curves "%DATA_PATH%\curves_reconstruction\%EXP_NAME_3%\checkpoints\10000.pth" --pointcloud_path_head "%EXP_PATH_1%\point_cloud\iteration_30000\raw_point_cloud.ply" --interpolate_cameras +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python render_strands.py -s %DATA_PATH% --data_dir "%DATA_PATH%" --data_device 'cpu' --skip_test -m "%DATA_PATH%\3d_gaussian_splatting\%EXP_NAME_1%" --iteration 30000 --flame_mesh_dir "%DATA_PATH%\flame_fitting\%EXP_NAME_1%" --model_hair_path "%DATA_PATH%\curves_reconstruction\%EXP_NAME_3%" --hair_conf_path "%PROJECT_DIR%\src\arguments\hair_strands_textured.yaml" --checkpoint_hair "%DATA_PATH%\strands_reconstruction\%EXP_NAME_2%\checkpoints\20000.pth" --checkpoint_curves "%DATA_PATH%\curves_reconstruction\%EXP_NAME_3%\checkpoints\10000.pth" --pointcloud_path_head "%EXP_PATH_1%\point_cloud\iteration_30000\raw_point_cloud.ply" --interpolate_cameras IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 ) REM 制作视频 -CALL %MICROMAMBA_EXE% activate -p %MAMBA_ROOT_PREFIX%\envs\gaussian_splatting_hair -cd %PROJECT_DIR%\src\postprocessing -echo 正在生成最终视频... -set CUDA_VISIBLE_DEVICES=%CUDA_VISIBLE_DEVICES% -python concat_video.py --input_path "%DATA_PATH%" --exp_name_3 "%EXP_NAME_3%" +@CALL condabin\micromamba.bat activate gaussian_splatting_hair +@CALL cd %PROJECT_DIR%\src\postprocessing +@CALL set CUDA_VISIBLE_DEVICES=%GPU% +@CALL python concat_video.py --input_path "%DATA_PATH%" --exp_name_3 "%EXP_NAME_3%" IF %ERRORLEVEL% NEQ 0 ( - echo ERROR: Failed to run command - exit /b 1 + @echo ERROR: Failed to run command + @exit /b 1 )