# 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](/guides/guides_v2-zh/ren-lian-yu-shen-fen/instantid.md) - 身份保留
* [LivePortrait](/guides/guides_v2-zh/hui-shuo-hua-de-tou-xiang/liveportrait.md) - 肖像动画
* [GFPGAN](/guides/guides_v2-zh/tu-xiang-chu-li/gfpgan-face-restore.md) - 人脸修复


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-zh/ren-lian-yu-shen-fen/facefusion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
