Insert Anything(浙大、哈佛)
论文:https://arxiv.org/abs/2504.15009
代码:https://github.com/song-wensong/insert-anything
主要贡献
- 提出 AnyInsertion 数据集,包含120K的图文对,覆盖广泛的插入任务,如人体、物体和服饰等
- 提出InsertAnything,只需一个模型可以无缝处理多种插入任务的统一框架
- 首次采用DiT进行图像插入,探索DiT在多种控制模式下的独特能力
- 提出上下文编辑,使用双联图和三联图无缝融合参考元素到目标场景中,并保持细节个性等
技术方案
数据收集
为了训练图像插入模型,需要收集参考图像和目标图像对。
- 对于服饰配对数据,采用LightGlue图像匹配方法在网络上找到穿衣人对应的服饰,并获取对应服饰标签;
- 对于物体配对数据,从MVImNet数据中选择同一物体不同视角,作为Reference-target配对图;
- 对于人体配对数据,从HumanVid数据中选择相同头部pose,不同身体pose作为配对数据
数据生成: 支持mask-prompt和text-prompt两种模式
- 前者要求mask指定替换/插入位置,mask通过GroundedDINO和SAM生成,输入是(reference image, reference mask, target image, target mask).
- 后者需要文本描述插入位置和物体,输入(reference image, reference mask, target image, source image, text),其中source图通过FLUX.1Fill[dev]进行替换操作,或者DesignEdit进行移除得到
- 文本模板:“replace [source] with [reference]” 或 “add [label]”
Insert Anything Model
Mask-Prompt Diptych: 输入双联图,图像是参考图ref和src图左右cat,mask是全0 mask和mask左右cat,再对图像和mask进行通道维度cat,即
Text-Prompt Triptych: 输入三联图,左侧是ref图,中间是src图,右侧是全0的tgt图,Mask左侧和中间是全0,右侧全1,代表需要全部重绘。最后在对图像和mask进行通道维cat
输入图像经过VAE提取特征后和mask、noise进行通道维度cat,同时将ref图提取CLIP特征,以及文本特征输入DiT进行处理。
实验结果
对比效果看起来比较明显,可以支持各种人、物、衣的替换和插入。