MLエンジニアへの道 #58 - Segment Anything

Last Edited: 5/19/2025

このブログ記事では、コンピュータビジョンにおけるSegment Anythingモデルについて紹介します。

ML

画像生成について議論する前は、物体検出モデルとそのコンポーネントに焦点を当ててきました。これらはインスタンスセグメンテーション(またはパノプティックセグメンテーション)に使用できます。 しかし、セグメンテーションタスクのためのデータ収集は常に困難であり、その効果とアクセシビリティを制限してきました。 これらの制限に対応するため、Metaの研究者たちはSegment Anything Model(SAM)を開発しました。 このモデルはCLIPのように(ゼロショットの)プロンプト可能な視覚セグメンテーションを実行するよう訓練されており、 完全教師あり型セグメンテーションモデルと比較しても競争力のあるパフォーマンスを達成し、一部のタスクではそれらを上回っています。 そこで、この記事ではSAMの基本とその改良点について説明します。

データエンジン

大規模なゼロショットセグメンテーションモデルを訓練し、最先端のパフォーマンスと高い汎化能力を達成するためには、 既存のデータセットを超えた大量で高品質かつ多様なデータを収集することが不可欠でした。 しかし、すべての個々のピクセルを手動でアノテーションすることは難しく時間がかかります。 そのため、研究者たちはデータエンジンとして、3段階のモデル内ループデータセットアノテーションシステムを作成しました。 第一段階の支援付き手動では、人間が既存の公開データセットで事前訓練されたSAMに支援されたインタラクティブツールを使用して、 高信頼性ラベルで物体にアノテーションを付けます。第二段階の半自動では、SAMがこれらの高信頼性マスクを提供し、 人間はそれらを検証し、多様性のために残りの他の物体にアノテーションを付けることに集中します。

最終段階の完全自動では、グリッドポイントがSAMに渡され、異なる閾値にわたる高いIoUを持つマスク予測に非最大抑制(NMS)が適用され、 信頼性が高く、安定した、重複のないマスクが生成されます。このデータエンジンは1,100万枚の画像と11億のマスクレット(物体と物体部分のマスク)が含まれるSA-1Bを生成し、 COCOとImageNetに含まれる10万枚の画像と120万のマスクをはるかに上回っています。さらなる分析により、SA-1Bは他のデータセットと比較して画像あたりのマスク数が多く、 画像間での物体マスクの分布がより均等であることが明らかになりました。また、SA-1Bは他の主要データセットよりも中所得国からの画像の割合が高いものの、 他のデータセットと同様に低所得国の代表性が不足していることも判明しました。

Segment Anything

SAMは画像エンコーダー(ViT)、プロンプトエンコーダー(Transformer)、画像とプロンプトの埋め込み間にクロスアテンションを適用するマスクデコーダーで構成されています。 プロンプトエンコーダーはプロンプト埋め込み(座標点とバウンディングボックスからの位置埋め込み、またはテキストプロンプトからのCLIP埋め込み) とマスク予測に対応する学習可能な埋め込み(オブジェクトクエリのようなものであるため、個人的にマスククエリと呼びます)、および学習可能なIoUトークンを処理します。 クロスアテンションはデコードされた画像埋め込みとプロンプト埋め込みを生成し、デコードされたマスククエリとデコードされた画像埋め込み (デフォルトの画像サイズにアップスケールされた)の間のドット積を取ることで、マスク出力に到達します。

SAM

IoUスコアのための学習可能な埋め込みはヘッドに渡され、それらのマスクの閾値処理に使用できるIoUスコアを取得します。 上はSAMのアーキテクチャを示しています。データセットのアノテーションなど、画像埋め込みを事前にエンコードできる場合、 モデルはブラウザでリアルタイムに実行できます(ただし、原論文では推論速度がリアルタイム推論に十分な速さではなく、SAMの制限の一つであることを認めています)。 SA-1Bでの訓練後、SAMはゼロショットインスタンスセグメンテーション(トランスフォーマーベースの物体検出器からのバウンディングボックスがプロンプトとして使用される)において、 物体検出器の単純な拡張と比較して競争力のあるパフォーマンスを達成し、マスク品質の人間による評価においてはそれらを上回りました。

Segment Anything 2

SAMは画像に対して比較的うまく機能しますが、ほとんどのセグメンテーションタスクはビデオフレームの処理を含み、 SAMは時間的関係を捉えられないため、ビデオに対して訓練された完全教師あり学習モデルに比べるとパフォーマンスが低くなります。 そこで、Segment Anything 2(SAM2)はメモリバンクとメモリアテンションを導入し、前のフレームからの情報に基づいて予測を条件付けします。 メモリエンコーダーはマスク処理された出力を畳み込み層で処理し、画像エンコーダーからの画像埋め込みと要素ごとに加算し、 軽量な畳み込み層に渡して空間マップを得ます。そして、メモリバンクはメモリエンコーダーからのN個の以前の空間マップ、 M個のプロンプト埋め込み、および以前にデコードされたマスククエリ(原論文ではオブジェクトポインターと呼ばれる)を保存します。

SAM2

保存された埋め込みは、画像埋め込みに対するメモリアテンションブロックで使用され、メモリアテンションブロック内では画像埋め込みに対するセルフアテンションの後、 それらの埋め込みとのクロスアテンションが実行されます。メモリアテンションは回転位置エンコーディング(位置に応じて様々な度合いでベクトルを回転させ、 複雑な計算なしに相対位置を捉える)を使用します。結果として得られる画像埋め込みはメモリ条件付きフレームエンコーディングと呼ばれ、 無条件のフレームエンコーディング(画像エンコーダーからの画像埋め込み)の代わりにマスクデコーダーに渡されます。 上はSAM2のアーキテクチャを表しています。見てわかるように、アーキテクチャは前のバージョンとほぼ同じですが、 メモリアテンション、メモリエンコーダー、メモリバンクが追加されています。

ただし、画像エンコーダー、プロンプトエンコーダー、マスクデコーダーにはいくつかの小さな違いがあります。画像エンコーダーは単純な階層型ViT(Hiera)を使用し、 Masked Autoencoder(MAE)として事前学習されています(マスクされた画像から元の画像を復元するよう訓練され、 エンコーダーがシフトウィンドウアプローチのような複雑な特殊モジュールなしに空間的バイアスを学習できるようにします)。 プロンプトエンコーダーは追加のトークン、オクルージョン(遮蔽)トークンを処理し、これはさらにマスクデコーダーによって処理され、 対象オブジェクトが遮蔽されているかどうかを予測し、オブジェクト遮蔽に関するビデオ特有の課題に対処します。

モデルアーキテクチャとは別に、SAM2はモデルインループビデオデータセットアノテーション用のデータエンジンも開発しました。これはSAMと同様に3つのフェーズを経ます。 まずSAMの支援を受けて6 FPSの各フレームを手動でアノテーションし、次にSAM2を使用して中間フレームを処理し、最後にアノテーターによる軽微な修正と共にSAM2を使用します。 このデータエンジンにより、50.9Kのビデオと642.6マスクレットを含むSA-Vが作成され、既存のデータセットよりも大幅に大きくなりました。 SA-Vと画像を共同でSAM2をトレーニングすることで、SAM2はプロンプト可能なビデオセグメンテーションで最先端のパフォーマンスを達成し、 画像セグメンテーションでもSAMを品質と速度の両面で上回りました(おそらくHieraによる効率的で高性能な画像エンコーディングと高品質なデータセットのおかげです)。

結論

この記事では、SAMとSAM2の基本について説明しました。これらはデータの量と質の重要性を再確認し、 高い一般化能力とゼロショットパフォーマンスのためにプロンプトから追加のコンテキストを取り入れることが、 セグメンテーションタスクにおいても実行可能で良い戦略であることを示しました。 しかし、SAM2は依然として小さなオブジェクト、速く動くオブジェクト、同一に見える複数のオブジェクト、 混雑したシーンのオブジェクト、長期間遮蔽されたオブジェクト(本質的に人間にとっても難しいもの)に苦戦しています。 また、一部のタスクやデータでは完全教師あり学習モデルほど良いパフォーマンスを発揮しない場合もあるため、 問題に応じて常にモデルのパフォーマンスを公平に評価することが重要です。

リソース