🖌️ ECCV 2024 | PowerPaint: 器用的图像修复模型
(†通讯作者)
您的星标对我们开发这个项目意义重大! :star:
PowerPaint 是一个高质量多功能图像修复模型,支持文本引导的对象修复、对象移除、形状引导的对象插入和扩展修复。我们通过为不同的修复任务设计专门的任务提示来实现这一目标。
🚀 新闻
2024年5月22日 :fire:
2024年4月7日 :fire:
2024年4月6日:
- 我们重新训练了一个新的 PowerPaint,受 Brushnet 启发。 在线演示 也相应更新。我们计划在接下来几天发布模型权重和代码的开源。
- 提示:我们保留了 BrushNet 删除的任务提示输入的交叉注意力层。
对象插入 | 对象移除 | 形状引导的对象插入 | 扩展修复 | |
---|---|---|---|---|
原始图像 | ||||
输出 |
2023年12月22日 :wrench:
- 已修正加载 ControlNet 的逻辑错误。
gradio_PowerPaint.py
文件和 在线演示 也已更新。
2023年12月18日
增强版 PowerPaint 模型
- 我们很高兴地宣布发布更稳定的模型权重。这些改进后的权重现在可以在 Hugging Face 上获取。
gradio_PowerPaint.py
文件和 在线演示 也作为这一发布的一部分进行了更新。
开始使用
# 克隆代码库
git clone git@github.com:open-mmlab/PowerPaint.git
# 使用 Conda 创建虚拟环境
conda create --name ppt python=3.9
conda activate ppt
# 安装依赖
pip install -r requirements/requirements.txt
或者您可以通过运行以下命令从头构建一个 conda 环境:
conda env create -f requirements/ppt.yaml
conda activate ppt
推理
您可以通过运行以下命令启动 PowerPaint 的 Gradio 界面:
# 设置 Git LFS
conda install git-lfs
git lfs install
# 克隆 PowerPaint 模型
git lfs clone https://huggingface.co/JunhaoZhuang/PowerPaint-v1/ ./checkpoints/ppt-v1
python app.py --share
对于基于 BrushNet 的 PowerPaint,您可以运行以下命令:
# 克隆 PowerPaint 模型
git lfs clone https://huggingface.co/JunhaoZhuang/PowerPaint_v2/ ./checkpoints/ppt-v2
python app.py --share --version ppt-v2 --checkpoint_dir checkpoints/ppt-v2
文本引导的对象修复
启动 Gradio 界面后,您可以通过上传图像、绘制掩码、选择“文本引导的对象修复”标签并输入文本提示来将对象插入图像。模型随后将生成输出图像。
输入 | 输出 |
---|---|
使用 ControlNet 的文本引导对象修复
幸运的是,PowerPaint 兼容 ControlNet。因此,用户可以使用控制图像生成对象。
<SOURCE_TEXT>
|输入| 条件 | 控制图像 |输出|
|-------|--------|-------|----------|
|<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/b3395445-c529-493a-b072-325483794216.jpg"> | Canny| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/b9e2564d-7223-421b-af08-a5aea7c85e56.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/49c96034-0d4f-4416-a59e-71ffaf0351b7.jpg">
|<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/b3395445-c529-493a-b072-325483794216.jpg"> | Depth| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/1deef876-8466-4780-b78c-39c6a7c51e5a.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/e6a0657c-894a-466a-9117-a402fb70da48.jpg">
|<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/b3395445-c529-493a-b072-325483794216.jpg"> | HED| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/0dd82665-ec75-4d03-b9fb-9c1e4c4d59f8.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/3478a2f8-4363-4d99-b0d9-d72671a6c858.jpg">
|<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/c21a96b9-7449-4051-afb4-807852694bfe.jpg"> | 姿态| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/a3b0c2af-e8e1-43c0-a865-89c92a1c03d0.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/238049a4-8c44-4f7e-9f1e-2de20ca8f19c.jpg">
### 对象去除
对于对象去除,您需要选择“对象去除修复”的选项卡,并且不需要输入任何提示。PowerPaint能够根据背景填充被遮盖的区域。
我们保留了输入提示的文本框,允许用户通过使用负面提示进一步抑制对象的生成。具体来说,我们建议将指导比例设置为10或更高。如果在遮盖区域出现不需要的对象,您可以通过特别增加指导比例来解决这个问题。
|输入|输出|
|---------------|-----------------|
| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/86819975-7054-4f43-8924-b1308aa3fa8f.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/22070869-6a3f-4530-9bc6-12276e2051da.jpg">
### 图像扩展
对于图像扩展,您不需要输入任何文本提示。您只需选择“图像扩展”的选项卡,并调整“水平扩展比例”和“垂直扩展比例”的滑块,PowerPaint将为您扩展图像。
|输入|输出|
|---------------|-----------------|
| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/5934cb52-fcb3-44c0-a32e-4cf996a0fb87.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/41d98710-8c3d-4084-b362-b08f960603c0.jpg">
### 形状引导的对象修复
PowerPaint还支持形状引导的对象修复,这使用户能够控制生成对象与遮罩形状的匹配程度。您可以选择“形状引导的对象修复”的选项卡并输入文本提示。然后,您可以调整“匹配度”滑块来控制生成对象的形状。
以以下案例为例,您可以画一个方形遮罩并使用高匹配度(例如0.95)来生成一个符合遮罩形状的面包。对于相同的遮罩,您也可以使用低匹配度(例如0.55)来生成一个合理的兔子。然而,如果您使用高匹配度来生成“方形兔子”,结果可能会显得有些滑稽。
基本上,当您想生成不受遮罩形状限制的对象时,建议使用0.5-0.6的匹配度。如果您想生成符合遮罩形状的对象,可以使用0.8-0.95的匹配度。
|提示 | 匹配度 | 输入| 输出|
|-------|--------|--------|---------|
|一个面包 | 0.95| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/060f3fbb-4b22-4dee-bd50-7029718fb161.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/5416e69f-adbd-40be-b94c-f84e27215056.jpg">
|一只兔子 | 0.55| <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/2b3b40c2-0df2-45a4-94a7-dafde6afbab9.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/3b94a280-9a92-421f-abde-d7f9e2815a2a.jpg">
|一只兔子 | 0.95|<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/ee502723-515e-424e-bc44-ceba5eecc25f.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/5ea087b3-c646-4fe7-ba54-0967c6fe6bf4.jpg">
|一只兔子 | 0.95 | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/696be267-634a-45bc-8a94-862ab4a0a2c5.jpg"> | <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/1fbbe10d-00f0-49e7-b5b0-9f5eec574df6.jpg">
## 训练
敬请期待!
## 联系我们
**庄俊豪**: zhuangjh23@mails.tsinghua.edu.cn
**曾燕红**: zengyh1900@gmail.com
## BibTeX
@misc{zhuang2023task, title={A Task is Worth One Word: Learning with Task Prompts for High-Quality Versatile Image Inpainting}, author={Junhao Zhuang and Yanhong Zeng and Wenran Liu and Chun Yuan and Kai Chen}, year={2023}, eprint={2312.03594}, archivePrefix={arXiv}, primaryClass={cs.CV} }
</SOURCE_TEXT>