| # 本地测试和部署指南 |
|
|
| ## 文件信息 |
| - **文件路径**: LOCAL_TEST_GUIDE.md |
| - **创建时间**: 2024-12-19 |
| - **开发者**: aidaox |
|
|
| ## 重要说明 |
|
|
| ⚠️ **关键修改**:`requirements.txt` 中的 `onnxruntime-gpu` 已改为 `onnxruntime`,以确保在 Hugging Face 免费 CPU 服务器上正常运行。 |
|
|
| ## 一、本地环境准备 |
|
|
| ### 1. 检查 Python 版本 |
|
|
| ```bash |
| python --version |
| ``` |
|
|
| **要求**:Python 3.8 或更高版本(推荐 3.9+) |
|
|
| ### 2. 创建虚拟环境(必须,推荐) |
|
|
| **为什么需要虚拟环境?** |
| - 避免多个项目依赖冲突 |
| - 保持系统 Python 环境干净 |
| - 便于管理和删除项目 |
|
|
| **快速设置(使用自动化脚本)**: |
| ```bash |
| # 在 FaceSwap 目录下运行 |
| python ../setup_project_env.py |
| ``` |
|
|
| **手动设置**: |
| ```bash |
| # 进入项目目录 |
| cd FaceSwap |
| |
| # 创建虚拟环境 |
| # Windows: |
| python -m venv venv |
| venv\Scripts\activate |
| |
| # Linux/Mac: |
| python3 -m venv venv |
| source venv/bin/activate |
| |
| # 激活后,命令行前面会显示 (venv) |
| ``` |
|
|
| ### 3. 安装依赖 |
|
|
| ```bash |
| # 确保虚拟环境已激活(命令行前有 (venv)) |
| |
| # 安装 Python 依赖 |
| pip install -r requirements.txt |
| |
| # 如果安装失败,可以逐个安装 |
| pip install numpy opencv-python onnxruntime-gpu scikit-learn scikit-image tqdm mxnet insightface gradio |
| ``` |
|
|
| **注意**:每次使用项目前,都需要先激活虚拟环境! |
|
|
| ### 4. 安装系统依赖(FFmpeg) |
|
|
| **Windows:** |
| 1. 下载 FFmpeg: https://ffmpeg.org/download.html |
| 2. 解压并添加到系统 PATH |
| 3. 或在项目目录中放置 `ffmpeg.exe` |
|
|
| **Linux:** |
| ```bash |
| sudo apt-get update |
| sudo apt-get install ffmpeg |
| ``` |
|
|
| **Mac:** |
| ```bash |
| brew install ffmpeg |
| ``` |
|
|
| 验证安装: |
| ```bash |
| ffmpeg -version |
| ``` |
|
|
| ## 二、本地测试 |
|
|
| ### 方法一:使用测试脚本(推荐) |
|
|
| **重要**:确保虚拟环境已激活! |
|
|
| ```bash |
| # 确保虚拟环境已激活 |
| # Windows: venv\Scripts\activate |
| # Linux/Mac: source venv/bin/activate |
| |
| # 运行测试脚本 |
| python test_local.py |
| ``` |
|
|
| ### 方法二:直接运行 Gradio 应用 |
|
|
| ```bash |
| # 确保虚拟环境已激活 |
| # Windows: venv\Scripts\activate |
| # Linux/Mac: source venv/bin/activate |
| |
| # 基本运行 |
| python app.py |
| |
| # 如果需要公网访问(使用 Gradio 的分享链接) |
| python app.py --share |
| ``` |
|
|
| 应用启动后,浏览器会自动打开,或访问显示的本地地址(通常是 `http://127.0.0.1:7860`) |
|
|
| ### 测试要点 |
|
|
| 1. **测试单张图片换脸**: |
| - 准备两张包含人脸的图片 |
| - 在 "Single Photo Swapping" 标签页测试 |
| - 检查输出图片是否正确 |
|
|
| 2. **测试视频换脸**(可选,较慢): |
| - 准备一张源图片和一个短视频(建议 5-10 秒) |
| - 在 "Video Swapping" 标签页测试 |
| - 检查输出视频是否正确 |
|
|
| 3. **检查日志输出**: |
| - 查看是否有错误信息 |
| - 确认所有依赖都正常加载 |
|
|
| ## 三、部署前检查清单 |
|
|
| 在推送到 Hugging Face 之前,请确保: |
|
|
| ### ✅ 依赖检查 |
|
|
| - [ ] `requirements.txt` 中使用 `onnxruntime`(不是 `onnxruntime-gpu`) |
| - [ ] 所有依赖版本兼容 CPU 环境 |
| - [ ] `packages.txt` 中只包含系统包(如 `ffmpeg`) |
|
|
| ### ✅ 代码检查 |
|
|
| - [ ] 没有硬编码的本地路径(如 `C:\Users\...`) |
| - [ ] 没有使用 GPU 特定代码(如 `ctx_id=0` 在 CPU 上应该改为 `-1`) |
| - [ ] 所有文件路径使用相对路径 |
| - [ ] 没有引用本地不存在的文件 |
|
|
| ### ✅ 文件检查 |
|
|
| - [ ] `app.py` 存在且可运行 |
| - [ ] `README.md` 配置正确(`app_file: app.py`) |
| - [ ] `inswapper_128.onnx` 模型文件存在 |
| - [ ] 没有 `.gitignore` 忽略必要文件 |
|
|
| ### ✅ 性能优化(针对免费 CPU 服务器) |
|
|
| - [ ] 图片处理限制在合理大小(建议不超过 1024x1024) |
| - [ ] 视频处理限制帧数或时长 |
| - [ ] 添加超时处理,避免长时间运行 |
|
|
| ## 四、修复 CPU/GPU 兼容性问题 |
|
|
| ### 检查 SinglePhoto.py |
|
|
| 查看 `SinglePhoto.py` 中的设备配置: |
|
|
| ```python |
| # 如果是 GPU 配置 |
| self.app.prepare(ctx_id=0, det_size=(640, 640)) |
| |
| # 应该改为 CPU 配置(如果 ctx_id=0 表示 GPU) |
| # ctx_id=-1 表示 CPU |
| self.app.prepare(ctx_id=-1, det_size=(640, 640)) |
| ``` |
|
|
| **注意**:`ctx_id=0` 在某些情况下可能也支持 CPU,但 `-1` 明确表示 CPU。 |
|
|
| ## 五、推送到 Hugging Face |
|
|
| ### 1. 提交修改 |
|
|
| ```bash |
| # 查看修改 |
| git status |
| |
| # 添加修改的文件 |
| git add requirements.txt |
| git add LOCAL_TEST_GUIDE.md |
| # ... 其他修改的文件 |
| |
| # 提交 |
| git commit -m "修复 CPU 兼容性:将 onnxruntime-gpu 改为 onnxruntime" |
| |
| # 推送到 Hugging Face |
| git push origin main |
| ``` |
|
|
| ### 2. 在 Hugging Face 上验证 |
|
|
| 1. 访问你的 Space: https://huggingface.co/spaces/aidao/FaceSwap |
| 2. 等待构建完成(通常 5-10 分钟) |
| 3. 测试应用是否正常运行 |
| 4. 检查日志是否有错误 |
|
|
| ## 六、常见问题 |
|
|
| ### Q: 本地运行正常,但 Hugging Face 上失败? |
|
|
| **可能原因**: |
| 1. 使用了 GPU 特定依赖(如 `onnxruntime-gpu`) |
| 2. 代码中硬编码了 GPU 设备(`ctx_id=0`) |
| 3. 缺少系统依赖(如 FFmpeg) |
|
|
| **解决方法**: |
| - 检查 `requirements.txt` 确保使用 CPU 版本 |
| - 检查代码中的设备配置 |
| - 确保 `packages.txt` 包含所有系统依赖 |
|
|
| ### Q: 模型文件太大,无法上传? |
|
|
| **解决方法**: |
| - 使用 Git LFS 管理大文件 |
| - 或使用 Hugging Face 的文件上传功能 |
|
|
| ### Q: 本地测试很慢? |
|
|
| **原因**:CPU 处理比 GPU 慢很多,这是正常的。 |
|
|
| **优化建议**: |
| - 使用较小的测试图片 |
| - 视频处理时使用短视频(5-10 秒) |
| - 考虑在本地使用 GPU 版本进行开发,部署时使用 CPU 版本 |
|
|
| ## 七、性能对比 |
|
|
| | 环境 | 单张图片处理 | 视频处理(10秒,30fps) | |
| |------|------------|----------------------| |
| | 本地 GPU | ~1-2 秒 | ~2-3 分钟 | |
| | 本地 CPU | ~3-5 秒 | ~10-15 分钟 | |
| | Hugging Face CPU | ~5-10 秒 | ~15-30 分钟 | |
|
|
| **注意**:Hugging Face 免费 CPU 服务器性能有限,处理时间可能更长。 |
|
|
| ## 参考资源 |
|
|
| - [Hugging Face Spaces 文档](https://huggingface.co/docs/hub/spaces) |
| - [Gradio 文档](https://www.gradio.app/docs/) |
| - [InsightFace 文档](https://github.com/deepinsight/insightface) |
|
|
|
|