综合介绍
InstantIR 是由 InstantX 团队开发的一款创新的单图像修复模型,旨在复活您损坏的图像,提供极高质量且逼真的细节,能够对受损图像进行高质量的修复。该工具不仅可以恢复图像的细节,通过额外的文本提示,提升恢复图像的准确度。InstantIR 采用了 SDXL 和 DINOv2 模型,提供了灵活的管道配置,用户可以根据具体需求进行调整。
功能列表
- 图像修复:对受损或低质量图像进行高质量修复。
- 生成模型:利用生成模型技术进行图像细节恢复。
- 文本提示编辑:通过文本提示实现图像的定制化编辑。
- 灵活配置:支持多种参数调整,满足不同图像处理需求。
- 本地部署:提供 Gradio 脚本,支持本地部署和演示。
- 兼容性:与 diffusers 兼容,支持多种强大功能。
使用帮助
安装流程
- 克隆仓库并设置环境:
git clone https://github.com/instantX-research/InstantIR.git cd InstantIR conda create -n instantir python=3.9 -y conda activate instantir pip install -r requirements.txt
- 下载预训练模型: InstantIR 基于 SDXL 和 DINOv2 模型,用户可以从 HuggingFace 下载这些模型:
from huggingface_hub import hf_hub_download hf_hub_download(repo_id="stabilityai/stable-diffusion-xl-base-1.0") hf_hub_download(repo_id="facebook/dinov2-large") hf_hub_download(repo_id="InstantX/InstantIR")
- 运行推理: 使用
infer.sh
脚本进行推理:./infer.sh --sdxl_path <path_to_SDXL> --vision_encoder_path <path_to_DINOv2> --instantir_path <path_to_InstantIR> --test_path <path_to_input> --out_path <path_to_output>
使用技巧
- 过度平滑:将
--cfg
参数调整到 3.0~5.0 之间。 - 低保真度:设置
--preview_start
为 0.1~0.4,以保持输入的保真度。 - 局部失真:将
--creative_start
设置为 0.6~0.8,以在后期生成高频细节。 - 加速推理:提高
--preview_start
和降低--creative_start
可以减少计算成本,加快推理速度。
使用 diffusers
InstantIR 完全兼容 diffusers,可以直接加载使用:
import torch
from PIL import Image
from diffusers import DDPMScheduler
from schedulers.lcm_single_step_scheduler import LCMSingleStepScheduler
from module.ip_adapter.utils import load_adapter_to_pipe
from pipelines.sdxl_instantir import InstantIRPipeline
# 加载预训练模型
pipe = InstantIRPipeline.from_pretrained('stabilityai/stable-diffusion-xl-base-1.0', torch_dtype=torch.float16)
load_adapter_to_pipe(pipe, 'facebook/dinov2-large')
pipe.prepare_previewers('path_to_InstantIR')
pipe.scheduler = DDPMScheduler.from_pretrained('stabilityai/stable-diffusion-xl-base-1.0', subfolder="scheduler")
lcm_scheduler = LCMSingleStepScheduler.from_config(pipe.scheduler.config)
# 加载损坏图像并进行修复
low_quality_image = Image.open('path_to_image').convert("RGB")
image = pipe(image=low_quality_image, previewer_scheduler=lcm_scheduler).images[0]
本地部署 Gradio 演示
提供了一个 Python 脚本用于本地部署 Gradio 演示:
INSTANTIR_PATH=<path_to_InstantIR> python gradio_demo/app.py
然后在浏览器中访问 http://localhost:7860
进行演示。
InstantIR 一键安装包
修复1024分辨率图片,内存至少24gb显存至少16gb,低配显卡不要尝试。同时生成多张后,内存回收异常。