张芷铭的个人博客

任务定义

任务定义

图像抠图(image matting)是指从一张图像中精确提取出感兴趣对象,并将其与背景分离的任务。

这通常需要在像素级别对目标对象进行精确分割,以便实现高质量的抠图效果。

可以分为“需要人工辅助输入”和“全自动” automatic and auxiliary-based methodologies.

和"图像分割(Segementation)“的异同

相似之处:

  1. 目标:图像抠图和图像分割都旨在将图像中的对象从背景中分离出来,以便进一步处理或分析。

  2. 像素级别操作:两者都涉及对图像中的像素进行操作,通常需要对每个像素进行分类或标记。

不同之处:

  1. 粒度:图像抠图通常关注的是精确的对象边界,要求在像素级别上对前景和背景进行精确分割,以实现逼真的合成或编辑效果。而图像分割可以是像素级别或区域级别的,目标是将图像分成几个具有语义意义的部分。

  2. 输入:图像抠图通常需要额外的辅助输入,如 trimap 或 coarse 分割,以帮助算法准确地分离前景和背景。而图像分割通常只需要原始图像作为输入。

  3. 复杂性:图像抠图任务通常更加复杂,因为它需要处理对象与背景之间的细微边界和半透明区域。相比之下,图像分割任务可能更简单,因为它通常只需要将图像分成几个连续的区域或类别。

应用场景

图像抠图在许多领域都有广泛的应用,例如图像编辑、虚拟现实、增强现实、电影特效等。

一般流程

通常,图像抠图涉及到以下几个主要步骤:

  1. 前景/背景分离:确定图像中的前景目标和背景区域。

  2. 精确分割:对前景目标与背景进行精确分割,通常需要逐像素地确定哪些像素属于前景,哪些像素属于背景,以及哪些像素属于半透明区域(即“未知”区域)。

  3. alpha通道生成:根据分割结果生成alpha通道,用于描述每个像素的透明度。

  4. 合成:将分割后的前景对象与新的背景进行合成,创建一个具有逼真效果的图像。

方法调研

Input:

  • Automatic —— 更加适用于商业应用

  • Auxiliary-based

Target:

  • salient opaque foregrounds

  • salient transparent foregrounds

  • non-salient foregrounds

Methodoloogy

  • auxiliary input-based methods

    • a single one-stage CNN

    • a one-stage CNN is used with modules carefully designed

    • parallel two- or multistream structures

  • automatic methods.

    • a one-stage structure

    • a sequential two-step structure (1. segmentation mask or trimap 2. Final alpha matte)

    • a parallel two- or multi-stream structure

市场调研

抠图AI - 商用

Image 1 Image 2

Removal AI

https://removal.ai/

Image 1 Image 2

briaai/RMBG-1.4

https://huggingface.co/briaai/RMBG-1.4

https://huggingface.co/spaces/briaai/BRIA-RMBG-1.4

ohyesai —— 基于开源项目 rembg

https://github.com/danielgatis/rembg

!

使用isnet-general-use

Image 1 Image 2

调研结论

  • 商用工具的结果对边缘处理相对较好,但是都有改进空间

  • 但是在镜片内的背景,都没有准确识别

自己的方案探索

YOLO+SAM

是图像分割的解决方案,对于抠图来说并不适用

Grounding DINO+SAM+VitMatte

流程如下:

  1. 自动标定

    1. 使用yolov9

    2. 使用GroundingDINO

  2. 获得Trimap

使用bbox和SAM分割,腐蚀膨胀得到Trimap

  1. 获得Alpha Matte

使用VitMatte

  1. 输出结果

Grounding DINO

💬 评论