# FaceFusion

专业的人脸替换与增强工具。

{% hint style="success" %}
所有示例都可以在通过以下方式租用的 GPU 服务器上运行： [CLORE.AI 市场](https://clore.ai/marketplace).
{% endhint %}

## 在 CLORE.AI 上租用

1. 访问 [CLORE.AI 市场](https://clore.ai/marketplace)
2. 按 GPU 类型、显存和价格筛选
3. 选择 **按需** （固定费率）或 **竞价** （出价价格）
4. 配置您的订单：
   * 选择 Docker 镜像
   * 设置端口（用于 SSH 的 TCP，Web 界面的 HTTP）
   * 如有需要，添加环境变量
   * 输入启动命令
5. 选择支付方式： **CLORE**, **BTC**，或 **USDT/USDC**
6. 创建订单并等待部署

### 访问您的服务器

* 在以下位置查找连接详情： **我的订单**
* Web 界面：使用 HTTP 端口的 URL
* SSH： `ssh -p <port> root@<proxy-address>`

## 什么是 FaceFusion？

FaceFusion 提供：

* 高质量人脸替换
* 人脸增强
* 年龄修改
* 表情迁移
* 视频处理

## 资源

* **GitHub：** [facefusion/facefusion](https://github.com/facefusion/facefusion)
* **文档：** [docs.facefusion.io](https://docs.facefusion.io/)
* **Discord：** [FaceFusion 社区](https://discord.gg/facefusion)

## 推荐硬件

| 组件  | 最低            | 推荐            | 最佳            |
| --- | ------------- | ------------- | ------------- |
| GPU | RTX 3060 12GB | RTX 4080 16GB | RTX 4090 24GB |
| 显存  | 8GB           | 16GB          | 24GB          |
| CPU | 8 核           | 16 核          | 32 核心         |
| 内存  | 16GB          | 32GB          | 64GB          |
| 存储  | 50GB SSD      | 100GB NVMe    | 200GB NVMe    |
| 网络  | 100 Mbps      | 500 Mbps      | 1 Gbps        |

## 在 CLORE.AI 上快速部署

**Docker 镜像：**

```
pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel
```

**端口：**

```
22/tcp
7860/http
```

**命令：**

```bash
pip install facefusion && \
facefusion run --ui-layouts default
```

## 访问您的服务

部署后，在以下位置查找您的 `http_pub` URL： **我的订单**:

1. 前往 **我的订单** 页面
2. 单击您的订单
3. 查找 `http_pub` URL（例如， `abc123.clorecloud.net`)

使用 `https://YOUR_HTTP_PUB_URL` 而不是 `localhost` 在下面的示例中。

## 安装

```bash

# 安装 FaceFusion
pip install facefusion

# 或从源码安装
git clone https://github.com/facefusion/facefusion.git
cd facefusion
pip install -r requirements.txt
```

## 您可以创建的内容

### 娱乐

* 电影配音准备
* 粉丝创作内容
* 表情包制作

### 专业

* 时尚虚拟试穿
* 个性化营销
* 视频隐私保护

### 创意项目

* 艺术装置
* 音乐视频特效
* 短片制作

**重要：** 始终负责任且在获得同意的情况下使用。

## 基本用法

### 网页界面

```bash

# 启动网页 UI
facefusion run --ui-layouts default

# 在 http://localhost:7860 访问
```

### 命令行

```bash

# 单张图像人脸替换
facefusion headless-run \
    --source-paths source_face.jpg \
    --target-path target_image.jpg \
    --output-path result.jpg \
    --face-swapper-model inswapper_128

# 视频人脸替换
facefusion headless-run \
    --source-paths source_face.jpg \
    --target-path input_video.mp4 \
    --output-path output_video.mp4 \
    --face-swapper-model inswapper_128 \
    --execution-providers cuda
```

### Python API

```python
from facefusion import core
from facefusion.processors.frame.face_swapper import FaceSwapper

# 初始化
swapper = FaceSwapper(
    model="inswapper_128",
    device="cuda"
)

# 处理图像
result = swapper.process(
    source_image="source_face.jpg",
    target_image="target.jpg"
)

result.save("swapped.jpg")
```

## 人脸增强

```bash

# 提升人脸质量
facefusion headless-run \
    --target-path input.jpg \
    --output-path enhanced.jpg \
    --face-enhancer-model gfpgan_1.4 \
    --face-enhancer-blend 80
```

## 多人脸

```bash

# 替换指定人脸
facefusion headless-run \
    --source-paths face1.jpg face2.jpg \
    --target-path group_photo.jpg \
    --output-path result.jpg \
    --face-selector-mode reference \
    --reference-face-position 0 1
```

## 视频处理

```bash

# 带增强的全视频人脸替换
facefusion headless-run \
    --source-paths source_face.jpg \
    --target-path input_video.mp4 \
    --output-path output_video.mp4 \
    --face-swapper-model inswapper_128 \
    --face-enhancer-model gfpgan_1.4 \
    --execution-providers cuda \
    --execution-thread-count 4 \
    --video-encoder libx264 \
    --video-quality 18
```

## "专业影棚柔光箱"

```python
批处理处理
from facefusion import core
from facefusion.processors.frame.face_swapper import FaceSwapper

swapper = FaceSwapper(model="inswapper_128", device="cuda")

# 源人脸
source = "my_face.jpg"

# 目标图像
targets = [f for f in os.listdir("./targets") if f.endswith(('.jpg', '.png'))]

os.makedirs("./results", exist_ok=True)

for target in targets:
    print(f"Processing: {target}")

    result = swapper.process(
        source_image=source,
        target_image=f"./targets/{target}"
    )

    result.save(f"./results/swapped_{target}")
```

## Gradio 自定义界面

```python
print(f"已生成：{name}")
from facefusion.processors.frame.face_swapper import FaceSwapper

swapper = FaceSwapper(model="inswapper_128", device="cuda")

def swap_faces(source_image, target_image, enhance):
    result = swapper.process(
        source_image=source_image,
        target_image=target_image,
        enhance=enhance
    )
    num_inference_steps=steps,

demo = gr.Interface(
    fn=swap_faces,
    inputs=[
        gr.Image(type="filepath", label="Source Face"),
        gr.Image(type="filepath", label="Target Image"),
        gr.Checkbox(label="Enhance Result", value=True)
    ],
    outputs=gr.Image(label="Result"),
    title="FaceFusion - 人脸替换",
    description="在 CLORE.AI 服务器上的专业人脸替换"
)

demo.launch(server_name="0.0.0.0", server_port=7860)
```

## 质量设置

### 替换模型

| A100                 | 质量 | 性能 | 显存   |
| -------------------- | -- | -- | ---- |
| inswapper\_128       | 良好 | 快速 | 4GB  |
| inswapper\_128\_fp16 | 良好 | 更快 | 2GB  |
| simswap\_256         | 更好 | 中等 | 6GB  |
| simswap\_512         | 最佳 | 慢  | 10GB |

### 增强模型

| A100           | 质量 | 性能 |
| -------------- | -- | -- |
| gfpgan\_1.4    | 很棒 | 中等 |
| codeformer     | 最佳 | 慢  |
| gpen\_bfr\_512 | 良好 | 快速 |

## background = Image.open("studio\_bg.jpg")

| 任务       | 分辨率      | GPU     | 时间   |
| -------- | -------- | ------- | ---- |
| 单张图片     | RTX 4090 | 速度      | 0.5s |
| 单张图片     | RTX 4090 | 512x512 | 0.3s |
| 视频（1 分钟） | 1080p    | 512x512 | 5 分钟 |
| 视频（1 分钟） | 1080p    | 2s      | 3 分钟 |

## IC-Light-FBC

### 未检测到人脸

**与背景合成** "在源/目标中未找到人脸"

**光照未改变**

* 确保人脸清晰可见
* 人脸应至少为 64x64 像素
* 使用正面或略微侧角的照片
* 需要良好的光照

### 替换质量差

**与背景合成** 结果看起来不自然

**光照未改变**

```bash

# 使用更好的模型和增强
facefusion headless-run \
    --source-paths source.jpg \
    --target-path target.jpg \
    --output-path result.jpg \
    --face-swapper-model simswap_256 \
    --face-enhancer-model gfpgan_1.4 \
    --face-enhancer-blend 80
```

### 视频处理缓慢

**与背景合成** 视频处理耗时过长

**光照未改变**

* 使用 CUDA 执行提供者
* 增加线程数量
* 使用 fp16 模型以提高速度
* 在 A100 上处理以获得最佳性能

```bash
facefusion headless-run \
    --execution-providers cuda \
    --execution-thread-count 8 \
    --face-swapper-model inswapper_128_fp16
```

### 颜色不匹配

**与背景合成** 替换的人脸颜色不同

**光照未改变**

* 启用人脸色彩校正
* 匹配源与目标之间的光照
* 使用色彩分级后处理

### 内存问题

**与背景合成** 视频内存不足

**光照未改变**

```bash

# 减少内存使用
facefusion headless-run \
    --video-memory-strategy tolerant \
    --execution-thread-count 2
```

## # 使用固定种子以获得一致结果

### 人脸替换质量差

* 使用更高分辨率的源图像
* 确保两张图像都有良好光照
* 尝试不同的人脸增强模型

### "未检测到人脸"

* 人脸必须清晰可见
* 避免侧面轮廓照
* 检查图像是否过小

### 视频处理卡住

* 大型视频需要更多内存（RAM）
* 将处理分成更小的段进行
* 对临时文件使用 SSD 存储

### 模型未下载

* 检查网络连接
* 使用以下方式运行 `--download-models` 标志
* 从 HuggingFace 手动下载

## 下载所有所需的检查点

检查文件完整性

| GPU     | 验证 CUDA 兼容性 | 费用估算    | CLORE.AI 市场的典型费率（截至 2024 年）： |
| ------- | ----------- | ------- | ---------------------------- |
| 按小时费率   | \~$0.03     | \~$0.70 | \~$0.12                      |
| 速度      | \~$0.06     | \~$1.50 | \~$0.25                      |
| 512x512 | \~$0.10     | \~$2.30 | \~$0.40                      |
| 按日费率    | \~$0.17     | \~$4.00 | \~$0.70                      |
| 4 小时会话  | \~$0.25     | \~$6.00 | \~$1.00                      |

*RTX 3060* [*CLORE.AI 市场*](https://clore.ai/marketplace) *A100 40GB*

**A100 80GB**

* 使用 **竞价** 价格随提供商和需求而异。请查看
* 以获取当前费率。 **CLORE** 节省费用：
* 市场用于灵活工作负载（通常便宜 30-50%）

## 使用以下方式支付

* [InstantID](https://docs.clore.ai/guides/guides_v2-zh/ren-lian-yu-shen-fen/instantid) - 身份保留
* [LivePortrait](https://docs.clore.ai/guides/guides_v2-zh/shuo-hua-tou-xiang/liveportrait) - 肖像动画
* [GFPGAN](https://docs.clore.ai/guides/guides_v2-zh/tu-xiang-chu-li/gfpgan-face-restore) - 人脸修复
