FaceSwap / LOCAL_TEST_GUIDE.md
aidao's picture
样式调整
1809421
|
Raw
History Blame Contribute Delete
6.18 kB
# 本地测试和部署指南
## 文件信息
- **文件路径**: 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)