视觉Transformer新范式:Inpaint-Anything中SAM与STTN的跨模态修复架构解析

视觉Transformer新范式:Inpaint-Anything中SAM与STTN的跨模态修复架构解析

【免费下载链接】Inpaint-Anything Inpaint anything using Segment Anything and inpainting models. 【免费下载链接】Inpaint-Anything 项目地址: https://gitcode.com/gh_mirrors/in/Inpaint-Anything

传统图像修复工具常陷入"要么精度不足,要么操作复杂"的困境——用PS手动涂抹耗时,普通AI工具又难以精准识别修复区域。Inpaint-Anything项目通过融合SAM(Segment Anything Model)与STTN(Spatial-Temporal Transformer Network)两大视觉Transformer模型,构建了一套从静态图像到动态视频的全场景修复解决方案。本文将深入剖析这两种模型的架构设计与协同机制,揭示如何用Transformer技术突破传统修复难题。

SAM:基于点提示的精准分割基石

SAM作为Meta AI提出的通用分割模型,其核心创新在于以点、框、掩码等稀疏提示驱动密集分割。在Inpaint-Anything项目中,SAM承担着"智能选区工具"的角色,通过segment_anything/segment_anything/modeling/sam.py实现三大核心模块的协同:

图像编码器:ViT的多尺度特征提取

SAM采用ImageEncoderViT架构,将输入图像通过卷积投影为16x16像素的图像块嵌入,再经12层Transformer编码为1024维特征向量。这种设计使模型既能捕捉全局语义(如"这是一只猫"),又能保留局部细节(如"猫的胡须位置"),为后续精准分割奠定基础。

提示编码器:稀疏输入的向量化转换

针对用户输入的点提示(如鼠标点击),SAM通过PromptEncoder将其转换为两种嵌入:

  • 稀疏嵌入:将点坐标、框坐标转换为可学习向量
  • 密集嵌入:通过位置编码为图像每个像素生成空间特征

这种双重编码机制,使得用户只需点击"要修复的物体",模型就能自动生成精确掩码,解决了传统修复中"选区难"的痛点。

掩码解码器:动态生成最优修复区域

MASK解码器采用Transformer解码器结构,接收图像嵌入与提示嵌入,输出3个可能的分割掩码及置信度分数。在example/remove-anything/dog/with_mask.png中可直观看到,即使是毛发这类复杂边缘,SAM也能生成像素级精确的掩码:

SAM分割效果

STTN:视频修复中的时空注意力机制

当修复对象从静态图像转向动态视频时,单纯的空间修复会导致"帧间闪烁"问题。STTN模型通过sttn/model/sttn.py实现的时空Transformer架构,完美解决了这一挑战:

多尺度补丁注意力:动态捕捉运动特征

STTN创新性地采用四重分辨率补丁(108×60、36×20、18×10、9×5)对视频帧进行分块处理。在MultiHeadedAttention模块中,模型同时计算:

  • 空间注意力:同一帧内不同区域的关联性
  • 时间注意力:相邻帧间相同物体的运动轨迹

这种设计使视频修复不仅考虑当前帧内容,还能参考前后帧信息,如example/remove-anything-video/surf/removed.gif所示,冲浪者被移除后,海面波纹仍保持自然流动:

STTN视频修复效果

编码器-解码器架构:特征级修复流程

STTN的InpaintGenerator由三部分组成:

  1. 编码器:通过4层卷积将视频帧压缩为256维特征
  2. Transformer块:8层堆叠的TransformerBlock处理时空依赖
  3. 解码器:双线性上采样+卷积恢复原始分辨率

这种特征级修复策略,相比像素级直接操作,能更好地保持视频的动态一致性。

跨模态协同:从静态到动态的修复流水线

Inpaint-Anything将SAM的精准分割与STTN的时空建模无缝衔接,形成完整修复链路:

mermaid

以"移除视频中的行人"为例,流程如下:

  1. 用户在关键帧点击行人(仅需1-2个点)
  2. SAM生成example/remove-anything/person/with_points.png所示的初始掩码
  3. 掩码经时序插值得到视频全帧掩码
  4. STTN基于掩码完成时空一致性修复,输出example/remove-anything-video/tennis-vest/removed.gif

实践应用:三大核心功能模块

项目提供的脚本文件封装了完整功能,通过简单命令即可调用:

1. 图像移除:remove_anything.py

python remove_anything.py \
  --image_path example/remove-anything/dog.jpg \
  --points_coords 450 300 \  # 点击狗的位置
  --points_labels 1 \         # 1表示前景
  --output_dir results/dog_removed

修复效果对比:example/remove-anything/dog/inpainted_with_mask.png

2. 图像替换:replace_anything.py

通过文本提示"a red car",可将图像中的物体替换为指定内容,如example/replace-anything/Replace-man.gif所示。

3. 视频修复:remove_anything_video.py

针对example/video/paragliding/等视频序列,自动完成运动物体的跟踪与移除。

技术突破与行业价值

Inpaint-Anything的Transformer融合架构带来三大突破:

  • 操作门槛降低:从"精确选区"变为"点一下即可"
  • 修复质量提升:STTN的时空注意力使视频修复PSNR提升1.8dB
  • 跨模态兼容性:同一套架构支持图像/视频/3D模型修复

这种技术组合不仅赋能普通用户轻松完成专业级修复,更为内容创作、影视后期、虚拟现实等领域提供了全新工具链。随着weights/mobile_sam.pt等轻量化模型的集成,未来甚至可在移动端实现实时修复。

快速上手与资源拓展

完整项目可通过以下命令获取:

git clone https://gitcode.com/gh_mirrors/in/Inpaint-Anything
cd Inpaint-Anything
pip install -r requirements.txt

更多示例与API文档可参考:

从社交媒体图片美化到电影特效制作,Inpaint-Anything正在重新定义视觉内容修复的技术边界。这套基于Transformer的跨模态架构证明:最强大的AI工具,应当是那些让复杂技术"隐形",却能精准实现用户意图的系统。

【免费下载链接】Inpaint-Anything Inpaint anything using Segment Anything and inpainting models. 【免费下载链接】Inpaint-Anything 项目地址: https://gitcode.com/gh_mirrors/in/Inpaint-Anything

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值