随着图像编辑技术的进步,基于反向传播和基于指令的方法都取得了显著发展。然而,目前基于反向传播的方法在进行大幅度修改(例如添加或移除物体)时存在困难,因为反向噪声的结构化特性限制了这些大改动的实现。而基于指令的方法往往将用户局限在“黑箱”操作中,用户无法直接指定编辑区域或编辑强度。

为了克服这些问题,北大联合腾讯提出了一种名为BrushEdit的新型图像编辑方法,它结合了图像修复(inpainting)技术和指令引导(instruction-guided)的方式,让图像编辑更加直观、互动和灵活。具体来说,BrushEdit通过集成多模态大语言模型(MLLMs)和双分支图像修复模型,构建了一个智能协作框架,能够自动完成以下任务:编辑类别分类、主要物体识别、蒙版获取和编辑区域的修复。(链接在文章底部)

01 技术原理

BrushEdit的处理方法分为四个主要步骤。(1)编辑类型分类:确定需要进行哪种类型的编辑;(2)识别主要编辑对象:找出要编辑的主要物体;(3)获取编辑蒙版和目标描述:生成编辑蒙版和相应的目标描述;(4)图像修复:进行实际的图像编辑。

步骤(1)到(3)通过预先训练好的多模态大语言模型(MLLMs)和检测模型,确定编辑的类型、目标物体、编辑蒙版和目标描述。步骤(4)则使用改进版的双分支修复模型—BrushNet进行图像编辑。这个模型根据目标描述和编辑蒙版修复目标区域,同时利用图像修复模型的生成能力和背景保持功能,确保编辑后的效果自然且与原图和谐融合。

BrushEdit可以实现对任意形状蒙版的全方位图像修复,无需为每种蒙版类型单独训练模型。这种对任意形状的处理灵活性,极大地增强了用户驱动的编辑体验,因为用户提供的蒙版通常会结合基于分割的结构细节和随机蒙版噪声。

通过支持任意形状的蒙版,BrushEdit避免了BrushNet-Ran版本在使用随机蒙版时产生的伪影问题,也避免了BrushNet-Seg版本过度依赖边界形状,导致的边缘不一致问题。

BrushEdit模型通过输入蒙版和被遮挡的图像,输出一个修复后的图像。首先,将蒙版下采样,以适应潜在空间的大小,然后将被遮挡的图像输入到变分自编码器(VAE)编码器中,以对齐潜在空间的分布。接下来,将带噪声的潜在向量、被遮挡图像的潜在向量和下采样后的蒙版拼接在一起,作为BrushEdit的输入。

BrushEdit提取的特征会逐层添加到预训练的UNet网络层中,经过一个零卷积块(Zero Convolution Block)。在去噪处理后,生成的图像和被遮挡的图像会与一个模糊的蒙版融合,完成最终的修复效果。

02 实际效果

删除内容:

添加内容:

背景编辑:

物体编辑:

https://github.com/TencentARC/BrushEdit
https://arxiv.org/pdf/2412.10316
https://huggingface.co/spaces/TencentARC/BrushEdit