InstanceDiffusion 使用教程
项目介绍
InstanceDiffusion 是一款在 CVPR 2024 上即将发表的技术,它为文本到图像的扩散模型增添了精确的实例级控制能力。该模型支持每个实例的自由形式语言条件,并允许灵活地指定实例位置,包括简单的单点、草图、边界框或复杂的实例分割掩模及其组合。与之前的状态-of-the-art(SOTA)方法相比,InstanceDiffusion 在基于框输入的AP50上实现了超过2.0倍的提高,在基于掩模输入的IoU上提高了约1.7倍。
本仓库由第一作者在UC Berkeley期间重现实现了InstanceDiffusion,旨在复现原始论文发现并为学术研究提供资源。请注意,与原论文结果可能存在细微性能差异,主要适用于学术和研究用途。
项目快速启动
环境准备
确保您的系统是Linux或macOS,并且Python版本≥3.8。您需要安装PyTorch≥2.0及配套的torchvision库,推荐通过pytorch.org一起安装以匹配版本。OpenCV≥4.6对于演示和可视化功能是必需的。
conda create --name instdiff python=3.8 -y
conda activate instdiff
pip install -r requirements.txt
运行示例
为了快速体验InstanceDiffusion,您需下载预训练模型并存放在pretrained
文件夹下。之后,运行以下命令来生成图像:
python inference.py \
--num_images 8 \
--output OUTPUT/ \
--input_json demos/demo_cat_dog_robin.json \
--ckpt pretrained/instancediffusion_sd15.pth \
--test_config configs/test_box.yaml \
--guidance_scale 7.5 \
--alpha 0.8 \
--seed 0 \
--mis 0.36 \
--cascade_strength 0.4
记得将demo_cat_dog_robin.json
替换为您感兴趣的场景配置文件,参数可以根据需要调整。
应用案例和最佳实践
InstanceDiffusion的应用范围广泛,支持从整个实例到部分甚至子部分的图像合成,允许对对象的整体姿态进行隐式调整。例如,使用单一点作为引导,可以生成特定位置的物体图像;通过迭代生成,可以在不改变背景的情况下增删、修改实例的位置或大小。
-
单点生成: 利用单个点定位来生成指定位置的图像。
python inference.py \ --test_config configs/test_point.yaml \ ...
-
迭代生成: 重复利用初始噪音和图像描述,逐步增加或调整实例。
-
细节控制: 用户可以基于不同的输入JSON文件,实现更复杂场景的自定义生成。
典型生态项目
InstanceDiffusion在社区中已得到一定应用,比如集成到ComfyUI平台,展示了其在不同应用场景中的灵活性和潜力。开发者和研究人员可以通过定制化的配置文件和数据集,探索更多创造性应用,推动图像生成技术向前发展。虽然本仓库直接聚焦于InstanceDiffusion的实现和实验,但其理念和技术可被融合至更广泛的生成式AI项目中,促进AI艺术创作、产品设计等领域的发展。
本教程提供了InstanceDiffusion的基本操作指南,旨在帮助用户快速上手并深入探索其实力。记住,不断试验不同的配置和案例,能够解锁更多创意可能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考