124 lines
4.4 KiB
Markdown
124 lines
4.4 KiB
Markdown
# ComfyUI-RIFE
|
||
|
||
[English](README.md) | 中文
|
||
|
||
用于 ComfyUI 的 RIFE 视频插帧节点,基于 Practical-RIFE 实现。
|
||
|
||
## 功能特性
|
||
|
||
- **实时视频插帧**: 使用 RIFE(Real-Time Intermediate Flow Estimation)算法在视频帧之间生成平滑的中间帧
|
||
- **自动模型下载**: 首次使用时会自动从 GitHub Releases 下载所需模型
|
||
- **模型缓存**: 自动缓存已加载的模型,避免重复加载
|
||
- **多种精度支持**: 支持 float32、float16、bfloat16 精度,可在速度和精度间权衡
|
||
- **Torch Compile**: 可选 PyTorch 2.0+ 的 `torch.compile()` 加速(首次编译较慢,后续推理更快)
|
||
- **批量推理**: 支持批量处理插帧任务,提高吞吐量
|
||
|
||
## 支持的模型
|
||
|
||
| 模型名称 | 版本 | 说明 |
|
||
|---------|------|------|
|
||
| `rife47.pth` | 4.7 | RIFE 4.7 版本 |
|
||
| `rife49.pth` | 4.7 | RIFE 4.9 版本 |
|
||
| `rife417.pth` | 4.17 | RIFE 4.17 版本 |
|
||
| `rife426.pth` | 4.26 | RIFE 4.26 版本(不支持 ensemble)|
|
||
|
||
模型会自动下载到 `ComfyUI/models/rife/` 目录。
|
||
|
||
## 安装
|
||
|
||
1. 将本节点文件夹放入 ComfyUI 的 `custom_nodes` 目录:
|
||
```bash
|
||
cd ComfyUI/custom_nodes
|
||
git clone git@github.com:er1cw00/ComfyUI-RIFE.git ComfyUI-RIFE
|
||
```
|
||
|
||
2. 安装依赖:
|
||
```bash
|
||
cd ComfyUI-RIFE
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## 节点参数
|
||
|
||
### RIFE_VFI
|
||
|
||
**必需参数:**
|
||
|
||
| 参数名 | 类型 | 默认值 | 说明 |
|
||
|--------|------|--------|------|
|
||
| `ckpt_name` | 下拉选择 | - | 选择 RIFE 模型(自动下载) |
|
||
| `frames` | IMAGE | - | 输入视频帧序列 |
|
||
| `clear_cache_after_n_frames` | INT | 10 | 每处理 N 帧后清理显存缓存(1-1000) |
|
||
| `multiplier` | INT | 2 | 插帧倍数,如 2 表示在每帧之间生成 1 个中间帧 |
|
||
| `fast_mode` | BOOLEAN | True | 快速模式,牺牲少量质量换取速度 |
|
||
| `ensemble` | BOOLEAN | True | 使用 ensemble 模式提高质量(4.26 版本强制关闭) |
|
||
| `scale_factor` | 下拉选择 | 1.0 | 光流计算缩放比例 [0.25, 0.5, 1.0, 2.0, 4.0] |
|
||
| `dtype` | 下拉选择 | float32 | 推理精度:float32(最安全)、float16(快/省显存)、bfloat16(需 RTX 30xx+) |
|
||
| `torch_compile` | BOOLEAN | False | 使用 torch.compile() 加速(需 PyTorch 2.0+) |
|
||
| `batch_size` | INT | 1 | 每批次处理的插帧任务数(提高吞吐量但增加显存占用,1-64) |
|
||
|
||
**可选参数:**
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| `optional_interpolation_states` | INTERPOLATION_STATES | 插帧状态列表,用于控制跳过特定帧 |
|
||
|
||
**输出:**
|
||
|
||
| 输出名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| `IMAGE` | IMAGE | 插帧后的视频帧序列 |
|
||
|
||
## 使用示例
|
||
|
||
### 基本流程
|
||
|
||
1. 使用 `Load Video` 或 `Load Image Batch` 节点加载视频帧
|
||
2. 连接到 `RIFE_VFI` 节点
|
||
3. 从下拉菜单选择模型(如 `rife426.pth`)
|
||
4. 设置 `multiplier`(如 2 表示 30fps → 60fps)
|
||
5. 使用 `Save Video` 或 `Preview Image` 节点输出结果
|
||
|
||
### 参数调优建议
|
||
|
||
- **追求质量**: `dtype=float32`, `ensemble=True`, `fast_mode=False`
|
||
- **追求速度**: `dtype=float16`, `fast_mode=True`, `torch_compile=True`(PyTorch 2.0+)
|
||
- **显存不足**: 降低 `batch_size` 至 1,使用 `dtype=float16`
|
||
- **RTX 30xx/40xx**: 可尝试 `dtype=bfloat16`,比 float16 更稳定且速度相近
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
ComfyUI-RIFE/
|
||
├── __init__.py # 节点注册入口
|
||
├── rife_node.py # 节点主要实现(模型加载、推理逻辑)
|
||
├── rife_model.py # RIFE IFNet 模型定义
|
||
├── requirements.txt # Python 依赖
|
||
└── README.md # 本文件
|
||
```
|
||
|
||
## 模型下载说明
|
||
|
||
模型文件会自动下载到 `ComfyUI/models/rife/` 目录:
|
||
|
||
- 首次使用某个模型时,节点会自动从 `https://github.com/Fannovel16/ComfyUI-Frame-Interpolation/releases/download/models/` 下载
|
||
- 如果下载失败,请检查网络连接或手动下载模型放到上述目录
|
||
|
||
## 注意事项
|
||
|
||
1. **RIFE 4.26 版本**: 该版本不支持 `ensemble` 模式,会自动强制关闭
|
||
2. **torch.compile()**: 首次推理会很慢(编译阶段),后续推理会快 10-30%
|
||
3. **bfloat16**: 仅在 Ampere 架构(RTX 30xx/40xx)或更新的 GPU 上支持
|
||
4. **模型缓存**: 修改 `ckpt_name`、`dtype` 或 `torch_compile` 会触发重新加载模型
|
||
|
||
## 依赖
|
||
|
||
- torch >= 2.0.0(推荐)
|
||
- einops
|
||
- packaging
|
||
- numpy
|
||
|
||
## 许可证
|
||
|
||
本项目基于 Practical-RIFE 实现,遵循相应开源协议。
|