【論文読み】Matting Anything: 画像の任意の対象物のアルファマットを推定する論文を見てみる
はじめに
画像マッティング(Image Matting)は、前景(foreground)と背景(background)を分離する重要な技術で、画像編集、映画制作など多くの分野で活用されています。
しかし、従来の手法にはトリマップ(Trimap)が必要であったり、特定のデータセットに最適化されており汎用性が低いといった課題がありました。
「Matting Anything」は、Meta社が開発したのSegment Anything Model(SAM)[1]を活用し、プロンプトをインターフェースとして、どんな対象物でもアルファマットを推定できる汎用的なマッティングモデル Matting Anything Model(MAM) を提案しています。
何がすごいの?
忙しい方のためのサマリーです
- 汎用的なマッティングが可能
- 従来のマッティング手法は、以下のようなそれぞれ異なる手法が必要だが、MAMは単一のモデルでこれらすべてを処理することが可能
- セマンティックマッティング(全ての前景を1つのアルファマットとして推定)
- インスタンスマッティング(各オブジェクトを個別にアルファマットとして推定)
- 参照画像マッティング(プロンプトで特定のオブジェクトのみを選択し、アルファマットを推定)
- ボックス・ポイント・テキストのプロンプトを入力するだけで、柔軟なマッティングが実現できるようになった
- 軽量で高精度
- MAMの主要な学習可能パラメータは2.7M(270万)で、他モデルと比べるとだいたい1/10くらい少ない
- SAMの特徴マップを活用して、Mask-to-Matte(M2M)モジュールで補正するアプローチが特長
- トリマップ不要のマッティングが可能
- 従来の手法では、ユーザーが**トリマップ(Trimap)**を手動で作成する必要があったが、MAMでは不要
Matting と Segmentation の違い
MAMの説明に入る前に、そもそも「Matting(マッティング)」と「Segmentation(セグメンテーション)」の違いを整理しようと思います。
セグメンテーション(Segmentation)
- 目的
- 画像内のピクセルを特定のカテゴリ(前景・背景など)に分類する
- 出力
- バイナリマスク(0 or 1)
- 分類するクラスが複数ある場合はバイナリとは限らない
reference: https://arxiv.org/pdf/1801.00868
🔵 マッティング(Matting)
目的:前景と背景の間にある半透明領域(α値)を推定する
出力:アルファマット(0〜1の連続値)
reference: https://github.com/SHI-Labs/Matting-Anything/tree/main
Matting Anythingのアーキテクチャー
MAMは、以下の2つの主要コンポーネントで構成されています。
-
Segment Anything Model(SAM)
- ユーザーが指定したプロンプト(ボックス・ポイント・テキスト)に基づき、対象物のマスクを生成
- ViT(Vision Transformer)ベースの画像エンコーダを活用し、高精度なセグメンテーションを実現
-
Mask-to-Matte(M2M)モジュール
- SAMの出力マスクをもとに、最終的な**アルファマット(0〜1の透明度)**を推定
- マルチスケール予測(1/8, 1/4, 1/1 解像度)と反復精緻化(Iterative Refinement) によって、境界の滑らかさを向上(ここかなり重要)
実験結果
学習データの作成方法
学習には5つのデータセットを使っています。
- Adobe Image Matting Dataset
- Distinctions-646[2]
- AM2K
- Human-2K
- RefMatte
また背景画像には COCO と BG20K を使用し、様々な環境でのマッティングに対応できるようにしています。
具体的には以下のようなFlowで作成しています。
- 前景画像 F と対応するアルファマット α_gt を取得
- ランダムな背景画像 B を選択し、以下の式で合成画像 I を作成
- SAMにボックスプロンプトを入力し、対象物のマスクを取得
評価
MAMの性能を検証するため、6つの異なるベンチマークと6個の評価指標(全て低いほどいい)で評価をしています。
- MAMはSAM単体より大幅に精度が向上
- 特化型モデルと同等の精度を達成
- 単一のモデルで複数のMattingの処理が可能
最後に
今回はMattingに関する論文を見てみました。
次回は、このモデルを動かす記事を書いて見たいと思います!
2025/2/3 追記:
描きました!↓
Discussion