点击下方卡片,关注“AI生成未来”
如您有工作需要分享,欢迎联系:aigc_to_future
作者:Jingyi Lu、Kai Han
解读:AI生成未来

文章链接:https://arxiv.org/pdf/2509.04582 项目链接:https://visual-ai.github.io/inpaint4drag/

基于拖动的图像编辑方法比较
亮点直击
提出了 Inpaint4Drag 的新型交互框架。该框架的核心思想是将复杂的拖拽编辑任务解耦为两个更简单、更专业的子任务:
Inpaint4Drag,一种基于拖拽的图像编辑交互方法,将该任务分解为双向扭曲和标准图像修复。给定输入图像,用户可以绘制掩码来选择要变形的对象,并使用掩码细化模块来提高边界精度。在指定拖拽点对后,双向扭曲算法立即变形所选区域,提供编辑结果的实时预览,该预览同时也作为修复模型的输入。用户在执行相对耗时的修复操作之前,迭代细化掩码和控制点以达到所需的拖拽效果,该修复操作填充变形后显露的区域。本文的方法通过专门的变形控制和集成的修复模型实现无缝补全,从而在实现实时交互的同时提供高质量的结果。
先前的拖拽编辑方法通常使用稀疏控制点来引导变形,并可选择使用掩码来限制可编辑区域。然而,这种稀疏输入格式在变形解释中引入了根本的模糊性——大量像素的运动仅依赖于少数控制点的引导。对角色手臂的单个拖拽操作可能产生截然不同的结果:全身旋转、局部手臂运动或孤立的点平移。没有明确的变形规范,现有方法通常会产生偏离用户意图的不可预测结果。
本文通过要求用户显式地指定用于变形的掩码区域来解决这种模糊性,类似于自然识别对象可移动部分的方式。给定输入图像、一组手柄点及其目标位置,将每个掩码区域视为弹性材料,移动手柄点会在整个连接区域内产生涟漪效应——就像拉伸橡胶片一样。双向扭曲方法计算密集变形场,确保从控制点到每个像素的平滑影响传播,同时在整个变形区域保持完整的像素覆盖。为了有效传播变形,掩码边界应与对象边界对齐——属于同一对象的像素应连贯地移动。为了在保持变形连贯跨越对象边界的同时简化用户交互,本文提出了一个基于Segment Anything Model (SAM) 的可选掩码细化模块。
给定包含点的用户输入掩码,直接使用所有掩码点作为SAM输入会引入计算瓶颈。为了解决这个问题,本文从用户绘制的掩码中采样网格点作为SAM输入,这在保持交互性能的同时保留了关键的边界信息。
通过SAM的提示编码器处理这些采样点以获得点嵌入,这些嵌入与图像嵌入结合以生成预测掩码。尽管SAM具有强大的分割能力,但直接的SAM预测可能生成不连贯的区域或捕获远离用户指定区域的不相关对象,这是由于SAM倾向于分割完整对象和语义相似的实例,而不是用户意图的区域(示例见下图2或图6)。采用两步细化方法来解决这一限制,该方法在保持用户意图的同时平衡自动边界检测。

首先,生成输入掩码的膨胀和腐蚀版本

其中表示半径为的膨胀/腐蚀核。通过边界引导公式获得细化掩码:

其中和分别表示逻辑或(OR)和逻辑与(AND)操作。该方法使用膨胀和腐蚀掩码来创建自然边界约束,确保细化结果尊重用户的原始意图,同时提高边界精度。通过将核半径作为控制参数暴露给用户,用户可以定制细化强度,在自动边界检测和手动控制之间实现所需的平衡。
给定用户掩码(原始或细化后的)和控制点对,双向扭曲算法旨在将这些输入转化为掩码区域的连贯变形,并为修复模型准备标准输入:一个包含变形内容的扭曲图像,以及一个识别因像素重定位而留下空白的区域的修复掩码。
如下图3和图4所示,本文的方法包括四个步骤:(1) 轮廓提取以识别独立的可变形区域;(2) 前向扭曲以定义目标区域边界并建立初始映射;(3) 后向映射以确保目标区域中的完整像素覆盖;(4) 利用已建立的映射生成扭曲内容并识别需要修复的区域。


首先将二值掩码分解为表示独立可变形区域的不同轮廓(粉色块左侧,上图3)。轮廓指的是追踪掩码中连通区域边界的闭合曲线。

为了保持局部变形一致性,将每个轮廓点与其区域内部的控制点相关联。

确保每个区域仅响应其边界内的控制点,保持了仅在用户直接交互处发生变形的直观行为。为简洁起见,在后续方程中简单地使用来指代与轮廓点关联的控制点。
对于具有单个控制点对的区域,变形简化为平移,区域像素直接从手柄位置移动到目标位置。当存在多个控制点时,变形变为非刚性,需要基于插值的变换。首先执行前向扭曲(绿色块,图3),它有两个关键目的:i) 变换轮廓本身以定义目标区域边界,以及ii) 建立初始像素级映射以指导后续处理。
对于源区域中的每个点(包括轮廓的边界点),通过加权插值计算其目标位置

其中表示与轮廓关联的控制点数量,权重通过反距离加权计算:

虽然这种前向方法建立了初始映射,但单独使用它进行扭曲会产生采样伪影(示例见上图3或下图7)。当非刚性变换拉伸图像区域时,像素的离散性会在目标位置未接收到映射值的地方产生间隙。当变换后的源像素网格在目标空间中被拉伸且变得不连续时,就会出现这种情况,从而留下未映射的间隙。

为了确保变形区域内完整的像素覆盖(蓝色块,上图3),计算变换后的目标轮廓内所有像素的源位置。对于每个目标像素,使用以下公式确定其对应的源位置:

其中表示在前向过程中成功匹配的个最近目标像素,代表其中一个匹配的最近目标位置,是其对应的源位置,是如前定义的反距离权重。
与使用全局像素参考相比,这种局部邻域方法提供了计算效率,并通过限制遥远前向扭曲结果对最终映射的影响来帮助保持结构一致性。通过确保所有坐标保持在图像边界内来验证每个计算的映射对。

其中和分别表示图像的宽度和高度。这防止了从图像域外未定义区域进行采样。
后向映射策略通过建立可靠的像素级映射来完成双向框架,这些映射保持了局部结构关系,同时解决了前向变换的局限性。
使用已建立的像素映射,通过传输像素值来生成扭曲图像:

如上图4所示,随后通过确定存在于原始掩码中但在变形结果中未映射的像素来识别需要修复的区域:

为确保在扭曲内容边界和腾空区域都能实现平滑过渡,对未映射区域和扭曲掩码边界同时应用膨胀操作。通过扩展修复掩码,这在边界周围创建了一个缓冲区域,使得修复模型能够处理过渡区域,并避免扭曲内容与新生成内容之间出现突兀的边缘:

其中表示半径为的膨胀核。至此,双向扭曲算法已处理用户掩码和控制点对,生成扭曲图像和修复掩码,这两者共同构成图像修复模型所需的标准输入。
流程的最后一步是应用修复模型为变形过程中显露的区域生成内容:

在执行修复操作之前,本文方法提供作为最终结果的实时预览——这是现有方法所缺乏的能力。该预览使用户能够通过调整掩码和控制点来实现所需的拖拽效果,从而提供更交互式的编辑体验,避免了重复尝试修复带来的不必要开销。
在实现中,选择了Stable Diffusion 1.5 Inpainting Checkpoint,该模型从常规Stable Diffusion v1.2模型微调而来,并针对修复任务进行了额外训练。修复过程遵循一个简单的流程:将掩码调整大小并与图像VAE潜在表示连接。在条件扩散去噪过程中,用纯噪声初始化掩码区域,在变形显露的区域生成全新的内容。最后,通过VAE解码将结果转换回像素空间。
为优化性能,采用了多项效率增强技术:TinyAutoencoder SD (TAESD)(一种减少内存需求的蒸馏VAE);LCM(潜在一致性模型)LoRA以减少采样步骤;空文本提示以消除无分类器引导计算;以及缓存空提示嵌入以避免编辑会话中的重复计算。值得注意的是,虽然使用这种代表性修复模型报告实验结果,但本文的框架可以容纳任何修复模型作为即插即用的替代方案。
使用两个基准评估拖拽编辑方法:来自SDE-Drag的DragBench-S(包含100个样本)和来自DragDiffusion的DragBench-D(包含205个样本)。每个基准条目包括源图像、描述图像的文本提示、可编辑区域的二值掩码以及显示所需移动的点对。
在本框架中,掩码作为可变形区域具有不同的用途。虽然可编辑区域指示允许编辑的位置,但可变形区域定义了在变换过程中应一起移动的连贯部分。因此重新标注了可变形区域位置和拖拽点,同时保留了原始用户编辑意图并保持源图像不变。
本文使用LPIPS和平均距离(MD)来衡量编辑性能。
LPIPS:学习感知图像块相似度(LPIPS)v0.1测量原始图像与编辑图像之间的身份保持度。较低的LPIPS表示更好的身份保持。然而,该指标的一个局限性是它仅测量图像块之间的低级特征相似性。在拖拽编辑中,有意且正确的形状变形通常会导致不可避免的LPIPS增加,这不应受到惩罚。
平均距离(MD):该指标评估手柄点移动到目标位置的准确度。采用DIFT在编辑图像中查找用户指定手柄点的匹配点,将搜索区域限制在用户指定的手柄点和目标点周围区域以避免错误匹配。MD计算为目标点与DIFT匹配点之间的平均归一化欧几里得距离。
本文的框架使用PyTorch在单个NVIDIA Tesla V100-SXM2 GPU上以Python实现。对于掩码细化,采用EfficientVIT-SAM-L0并从用户掩码中采样点,将采样点数量限制为以提高计算效率。膨胀/腐蚀核半径设置为10像素,以在保持用户意图的同时提供足够的边界细化。在双向扭曲模块中,设置以确保权重计算的数值稳定性,并使用个最近邻进行后向映射。最终修复掩码使用核半径像素进行膨胀以确保平滑过渡。对于修复,采用Stable Diffusion 1.5 Inpainting Checkpoint配合TAESD和LCM LoRA,将图像调整到长边512像素同时保持宽高比。使用8个采样步骤进行扩散,无需无分类器引导。
如下表1所示,将Inpaint4Drag与最先进的方法进行比较。本文的双向扭曲算法在DragBench-S和DragBench-D上实现了拖拽精度和图像一致性的显著提升,获得了最低的MD分数(3.6/3.9)和具有竞争力的LPIPS值(11.4/9.1)。这一优势源于密集的像素级变形计算,在操作过程中保持了颜色和几何关系。值得注意的是,Inpaint4Drag比FastDrag快14倍,比DragDiffusion快近600倍,其中基于SAM的细化耗时0.02秒,双向扭曲仅需0.01秒。计算峰值出现在SD修复预览期间,需要0.29秒,同时在所有方法中使用最少的内存(2.7GB)。

如下图5所示,Inpaint4Drag在来自DragBench-S和DragBench-D的挑战性案例上优于最先进的方法。通过利用专门的修复模型,Inpaint4Drag在先前被遮挡的区域生成真实的内容(例如,第1行和第4行中新暴露的面部特征,以及第3行中狮子张开的嘴巴)。可选掩码细化模块使用户能够连贯地变形对象边界(第4、5和7行)或专注于精确的局部编辑(其余示例)。与将控制点下采样到潜在分辨率时会丢失精度的隐空间方法不同,像素空间方法能够精确操作局部细节(第2行和第5行)。双向扭曲生成拖拽内容的信息化预览,为后续修复过程提供信息化的上下文。

掩码细化。如下图6所示,本文方法通过将SAM的预测(中间)限制在用户输入的膨胀区域内,将粗糙的初始掩码(左侧)转换为精细化的结果(右侧)。虽然细化模块同时包含内部和外部边界约束,但为了可视化清晰度,在这些示例中仅展示外部边界的使用情况。最终得到的掩码有效捕获了对象边界,同时保留了用户预期的编辑范围。

单向与双向扭曲。前图7中展示了单向(仅前向扭曲)和双向扭曲的定性比较。单向方法难以处理采样伪影,在变形过程中会在拉伸区域产生明显的间隙。当非刚性变换拉伸图像区域时会出现这些伪影,因为像素的离散性会导致未映射的间隙,目标位置由于变换后像素网格的不连续性而无法接收到源值。双向方法通过两步过程有效解决了这些挑战:首先通过前向扭曲识别目标轮廓,然后采用像素级后向映射来填充间隙。这种方法产生无间断的平滑变换,为用户预览和图像修复提供可靠的视觉上下文。
Inpaint4Drag,一种通过像素空间双向扭曲将图像修复重新用于基于拖拽的编辑的新方法。与依赖未针对拖拽操作优化的通用文本到图像模型的现有解决方案不同,本文专门的扭曲和修复分离有效保持了像素一致性,同时在新显露区域生成高质量内容。双向扭曲算法和基于SAM的边界细化提供实时反馈以实现直观交互。实验结果表明,Inpaint4Drag在将处理时间从分钟级减少到毫秒级的同时提供了卓越的性能。此外,由于Inpaint4Drag与任何修复模型兼容,它可以随着修复技术的进步而持续改进。
[1] Inpaint4Drag: Repurposing Inpainting Models for Drag-Based Image Editing via Bidirectional Warping
如果您觉得这篇文章对你有帮助或启发,请不吝点赞、在看、转发,让更多人受益。同时,欢迎给个星标⭐,以便第一时间收到我的最新推送。每一个互动都是对我最大的鼓励。让我们携手并进,共同探索未知,见证一个充满希望和伟大的未来!