Hugging Face 免费开源 AI 照片修复神器!一键让模糊照片秒变清晰,在线使用 InstantIR

Hugging Face 免费开源 AI 照片修复神器!一键让模糊照片秒变清晰,在线使用
Hugging Face 免费开源 AI 照片修复神器!一键让模糊照片秒变清晰,在线使用

InstantIR 是一种新颖的单幅图像修复模型,旨在修复受损图像,提供极致品质且逼真的细节。您可以通过附加文本提示进一步提升InstantIR性能,甚至实现自定义编辑!

本地部署:

1. 克隆此存储库并设置环境

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

2. 下载预训练模型

InstantIR 基于 SDXL 和 DINOv2 构建。您可以直接从 🤗 huggingface 或使用 Python 包下载它们。

 🤗 链接 Python 命令
SDXLhf_hub_download(repo_id="stabilityai/stable-diffusion-xl-base-1.0")
 脸书/dinov2-largehf_hub_download(repo_id="facebook/dinov2-large")
 即时 X/即时红外hf_hub_download(repo_id="InstantX/InstantIR")

注意:如果您使用的是 Python 脚本,请确保先 from huggingface_hub import hf_hub_download 导入包。

3. 推理

您可以使用指定的以下参数运行 infer.sh InstantIR 推理。

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>

有关更多配置选项,请参阅 infer.py

 4. 使用提示

InstantIR 功能强大,但在您的帮助下,它可以做得更好。InstantIR 的灵活管道使其在很大程度上可调。以下是我们发现对您可能遇到的各种情况特别有用的一些提示:

  • 过度平滑:降低 --cfg 到 3.0~5.0。较高的 CFG 比例有时会导致线条僵化或缺少细节。
  • 低保真度:设置为 --preview_start 0.1~0.4 以保留输入的保真度。当 input latent 太嘈杂时,预览器可能会产生误导性的引用。在这种情况下,我们建议在早期时间步禁用预览器。
  • 局部畸变:设置为 --creative_start 0.6~0.8。这将允许 InstantIR 在后期扩散过程中自由渲染,其中会生成高频细节。较小的 --creative_start 空间为创造性的修复留出更多空间,但会降低保真度。
  • 更快的推理:更高 --preview_start 和更低 --creative_start 都可以降低计算成本并加速 InstantIR 推理。

 谨慎

这些功能无需训练,因此是实验性的。如果您想尝试,我们建议您根据具体情况调整这些参数。

将 InstantIR 与扩散器🧨配合使用

InstantIR 与 diffusers 此软件包中的所有强大功能完全兼容并受其支持。您可以通过 diffusers snippet 直接加载 InstantIR:

# !pip install diffusers opencv-python transformers accelerate
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

# suppose you have InstantIR weights under ./models
instantir_path = f'./models'

# load pretrained models
pipe = InstantIRPipeline.from_pretrained('stabilityai/stable-diffusion-xl-base-1.0', torch_dtype=torch.float16)

# load adapter
load_adapter_to_pipe(
    pipe,
    f"{instantir_path}/adapter.pt",
    image_encoder_or_path = 'facebook/dinov2-large',
)

# load previewer lora
pipe.prepare_previewers(instantir_path)
pipe.scheduler = DDPMScheduler.from_pretrained('stabilityai/stable-diffusion-xl-base-1.0', subfolder="scheduler")
lcm_scheduler = LCMSingleStepScheduler.from_config(pipe.scheduler.config)

# load aggregator weights
pretrained_state_dict = torch.load(f"{instantir_path}/aggregator.pt")
pipe.aggregator.load_state_dict(pretrained_state_dict)

# send to GPU and fp16
pipe.to(device='cuda', dtype=torch.float16)
pipe.aggregator.to(device='cuda', dtype=torch.float16)

然后,您只需调用 , pipe InstantIR 就会处理您的图像!

# load a broken image
low_quality_image = Image.open('./assets/sculpture.png').convert("RGB")

# InstantIR restoration
image = pipe(
    image=low_quality_image,
    previewer_scheduler=lcm_scheduler,
).images[0]

 部署本地 gradio demo

我们提供了一个 python 脚本来启动 InstantIR 的本地 gradio 演示,并实现了基本和一些高级功能。首先在终端中运行以下命令:

INSTANTIR_PATH=<path_to_InstantIR> python gradio_demo/app.py

然后,通过浏览器访问您的本地演示 。 http://localhost:7860

训练

 准备数据

InstantIR 在 DIV2K、Flickr2K、LSDIR 和 FFHQ 上进行了训练。我们采用数据集加权来平衡分布。您可以在 中配置它们的权重 config_files/IR_dataset.yaml 。下载这些训练集并将它们放在同一个目录下,该目录将在以下训练配置中使用。

 两阶段培训

正如我们的论文中所述,InstantIR 的训练分两个阶段进行。我们为每个阶段提供了相应的 .sh 训练脚本。确保您有以下参数适应您自己的使用案例:

 论点 价值
--pretrained_model_name_or_pathSDXL 文件夹的路径
--feature_extractor_pathDINOv2 文件夹的路径
--train_data_dir您的训练数据目录
--output_dir保存模型权重的路径
--logging_dir保存日志的路径
<num_of_gpus>可用 GPU 的数量

我们在实验中使用的其他训练超参数在相应的 .sh 脚本中提供。您可以根据自己的需要调整它们。

Hugging Face 免费开源 AI 照片修复神器!一键让模糊照片秒变清晰,在线使用 InstantIR
此内容为免费资源,请登录后查看
0积分
免费资源
已售 4
© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
相关推荐
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容