Segment Anythingとは?クリックや枠指定で画像を切り抜ける汎用セグメンテーション技術

Segment Anythingは、点や矩形などのプロンプトを与えるだけで対象領域を切り出せる画像セグメンテーション技術です。SAMのモデル構造、SA-1Bデータセット、ゼロショット転用、開発への使い道を日本語で解説します。

参考文献

Segment Anything

Alexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao, Spencer Whitehead, Alexander C. Berg, Wan-Yen Lo, Piotr Dollar, Ross Girshick

論文を見る

今回の論文

今回取り上げるのは、Alexander Kirillov、Eric Mintun、Nikhila Ravi らによる論文「Segment Anything」です。2023年4月5日に arXiv で公開された論文で、公開元は arXiv、研究分野はコンピュータビジョン、画像セグメンテーション、基盤モデルです。URL は https://doi.org/10.48550/arXiv.2304.02643 です。

この論文を選んだ理由は、画像処理の中でも再利用性が高い「領域の切り出し」を、特定タスク専用モデルではなく汎用的な基盤技術として扱ったからです。クリック、ボックス、既存マスクなどの軽い入力だけで対象を切り出せるので、画像編集、検査、文書理解、ロボティクス前処理など応用範囲が広く、開発の部品として非常に使いやすい技術です。

どんな技術か

Segment Anything は、画像の中から「どこを切り出したいか」を軽いプロンプトで指定すると、その領域のマスクを返す技術です。論文ではこのモデルを SAM、Segment Anything Model と呼んでいます。

普通の画像セグメンテーションは、犬を切り抜く、道路領域を塗る、腫瘍を抽出する、のようにタスクごとにモデルを作ることが多いです。SAM はそこを変えて、「何を切り出すかは推論時のプロンプトで決める」設計にしました。これが論文のいう promptable segmentation です。

たとえば、画像上の一点をクリックしてその物体を切り出す、矩形で囲って対象を切り出す、ラフな既存マスクを渡して修正する、といった使い方ができます。つまり SAM は、セグメンテーションの専用アプリではなく、他のAIシステムから呼び出せる汎用部品として設計されています。

課題

この技術が解決しようとしている課題は、画像セグメンテーションが細かいタスクごとに分断されていて、汎用的に再利用しにくいことです。

何が難しいのかというと、セグメンテーションは正解マスクを大量に作るコストが高いからです。分類なら画像にラベルをつければ済みますが、セグメンテーションではピクセル単位の境界を作る必要があります。しかも物体、部位、背景、細い構造など、何を切り出すかで難しさが大きく変わります。

既存の方法では、インスタンスセグメンテーション、セマンティックセグメンテーション、インタラクティブセグメンテーションなど、タスクごとに別モデルになることが多く、別の分布へ持ち込むと再学習が必要でした。さらに、大規模なWebデータを使った基盤モデルの流れがNLPやVision-Languageでは進んでいた一方で、マスク付きデータはインターネット上に自然には大量に存在しません。

なぜこの課題を解く必要があるのかというと、実際のAIシステムでは「画像の中の対象を切り出せること」が前処理として頻繁に必要だからです。文書画像から図表だけ切り出す、EC画像から商品領域を抽出する、製造現場の異常部位だけを切り出す、ロボットがつかむ対象を分離する、といった場面では、毎回専用モデルを作るのは重すぎます。

SAM はこの問題に対して、「何を切るかはプロンプトで指定する」「大量データはモデル自身を使ったデータエンジンで集める」という2つの発想で取り組んでいます。

用語解説

セグメンテーションマスク
画像の各ピクセルが対象に含まれるかどうかを示す領域表現です。SAM を理解する上では、単なる検出枠ではなく、対象の形そのものを返す点が重要です。
プロンプト可能なセグメンテーション
点、ボックス、マスク、テキストなどの入力を使って「何を切り出すか」をその場で指定する考え方です。SAM の核は、固定タスクではなく推論時の指定で対象を変えられることにあります。
Vision Transformer
画像をパッチ列として扱うTransformer系の画像モデルです。SAM では高解像度画像を一度だけ重いエンコーダで埋め込みに変え、その後は軽いデコーダで何度も問い合わせる構成になっています。
ゼロショット転用
追加学習なしで新しいデータ分布や別タスクに使うことです。SAM は prompt engineering で edge detection や object proposal のような別タスクにも転用できる点が論文の重要な主張です。
データエンジン
モデルを使って新しい学習データを集め、そのデータでさらにモデルを改善する循環です。SAM ではマスク付きデータ不足を、このデータエンジンで突破しています。

技術の仕組み

SAM の仕組みは、モデル構造とデータ収集の仕組みを分けて見ると理解しやすいです。

基本アイデア

基本アイデアは、重い計算を画像ごとに一度だけ行い、その結果を軽いプロンプトで何度も再利用できるようにすることです。

つまり、画像を毎回最初から処理するのではなく、まず画像全体を埋め込みへ変換しておきます。そのあとで「この点の物体を切って」「このボックスの中身を切って」と問い合わせると、軽いデコーダがすばやくマスクを返します。論文では、画像埋め込みを事前計算した状態なら、プロンプトエンコーダとマスクデコーダだけで約 50ms で動くよう設計されています。

モデル構造

SAM は大きく3つの部品で構成されます。画像エンコーダ、プロンプトエンコーダ、マスクデコーダです。

画像エンコーダ

画像エンコーダは、入力画像を高次元の画像埋め込みへ変換する役割を持ちます。論文では MAE で事前学習した Vision Transformer をベースにしていて、高解像度画像を扱えるよう最小限の調整を加えています。

ここが重い部分ですが、画像ごとに一度だけ実行すればよいので、同じ画像に対して複数回プロンプトするユースケースと相性がよいです。

プロンプトエンコーダ

プロンプトエンコーダは、点、ボックス、マスク、テキストといった入力を埋め込みに変換します。点やボックスは位置情報つき埋め込みとして表し、マスクのような密な入力は畳み込みで埋め込みます。テキストについては初期的な結果として CLIP のテキストエンコーダも使っています。

ここで重要なのは、プロンプトが軽量なことです。つまり SAM は、対象を決める情報を別チャンネルで受け取り、画像埋め込みに後から条件付けする設計です。

マスクデコーダ

マスクデコーダは、画像埋め込みとプロンプト埋め込みを組み合わせて最終マスクを予測します。論文では Transformer decoder をベースにした軽量な構造を使い、プロンプト側と画像側の双方向 attention で情報をやり取りさせています。

2ブロックのデコーダ処理のあと、画像特徴をアップサンプリングし、出力トークンから動的な線形分類器を作って各位置の前景確率を出します。ここは「重い画像理解」と「軽い条件付き切り出し」を分離するための中核です。

あいまいさへの対応

一点だけをクリックしたとき、その点が「服」を指しているのか「人物全体」を指しているのかは曖昧です。SAM はこの曖昧さに対応するため、1つのプロンプトから複数の候補マスクを出力します。論文では 3 つのマスク候補で多くのケースを扱えるとしています。

また、各候補に対して推定 IoU を出し、どのマスクが信頼できそうかを順位づけできるようにしています。これにより、インタラクティブな操作でも自動処理でも使いやすくなっています。

学習方法

学習では、正解マスクに対して点、ボックス、マスクといった幾何学プロンプトをランダムにシミュレーションしながら、どんなプロンプトでも妥当なマスクを返せるように訓練します。損失には focal loss と dice loss の組み合わせを使っています。

また、インタラクティブセグメンテーションを模した形で、1つのマスクに対して複数ラウンドのプロンプトを与えるようにしています。この学習により、最初のざっくりした指示でも、途中で追加指示が入っても対応しやすくなります。

データエンジン

SAM の技術的な大きな貢献は、モデルだけでなくデータ収集の方法にもあります。論文では、データエンジンを3段階で回しています。

1. assisted-manual 段階

最初は、人間のアノテータがブラウザ上で SAM を使いながらマスクを作ります。モデルの支援を受けてクリックで境界を出し、必要ならブラシで修正します。この段階では 12 万枚の画像から 430 万マスクを集め、平均アノテーション時間は 34 秒から 14 秒まで短縮しました。

2. semi-automatic 段階

次に、モデルが自動で拾いやすい物体を先に取り、アノテータは残りの難しい対象を埋めます。これで多様なマスクを増やし、目立たない物体や細かい対象も集めやすくしています。この段階でさらに 590 万マスクを追加しています。

3. fully automatic 段階

最後は完全自動です。画像上に 32x32 の規則的な点グリッドを置き、各点について候補マスクを出します。その後、IoU 予測、安定性判定、NMS、複数クロップ処理で高品質なものだけを残します。最終的に SA-1B として、1100 万画像と 11 億マスクを構築しました。

この流れを見ると、SAM は単に大きなモデルを作った論文ではなく、「モデルが次の学習データを集める」循環設計そのものが強みです。

実験と結果

論文では、SAM が本当に汎用セグメンテーション部品として使えるかを、データ品質、ゼロショット転用、下流タスク性能の観点から検証しています。

何を検証したのか

主な検証点は3つあります。1つ目は、SA-1B のマスク品質と多様性が十分かどうかです。2つ目は、単一点プロンプトのような軽い入力でも高品質なマスクが出るかどうかです。3つ目は、追加学習なしで別のセグメンテーション系タスクへ転用できるかどうかです。

どんなデータセットや評価指標を使ったのか

論文では、23 個の多様なセグメンテーションデータセットで単一点プロンプトによる評価を行っています。また、ゼロショット転用として edge detection、object proposal generation、instance segmentation、text-to-mask の初期検証も行っています。

評価はタスクごとに異なりますが、基本的には予測マスクと正解マスクの一致度、あるいは下流タスクとしての性能を比較しています。論文の重要点は、単一ベンチマークで勝つことよりも、広い分布で使えるかを見ていることです。

どのような結果が出たのか

まずデータ面では、完全自動で集めた SA-1B が既存の主要セグメンテーションデータセットより圧倒的に大きく、約 400 倍のマスク数になりました。しかも論文では、人手評価と複数実験を通じて、品質と多様性が高いことを確認しています。

推論面では、事前計算済みの画像埋め込みを使えば、プロンプトエンコーダとマスクデコーダだけで約 50ms というインタラクティブな速度を実現しています。これは人がクリックしながら修正する用途でも重要です。

ゼロショット性能では、23 データセットにわたる単一点プロンプト評価で高品質なマスクを返し、多くのケースで既存の fully supervised 手法に迫るか、用途によっては競合できる結果を示しました。さらに、edge detection や object proposal のような別タスクも prompt engineering で扱えることを示しており、SAM を単なる切り抜き器ではなく汎用視覚部品として使える可能性が見えます。

結果から何が言えるのか

結果から言えるのは、セグメンテーションでも「巨大な専用データセットで1タスクに最適化する」以外の道があるということです。SAM は、プロンプト可能な共通タスクを定義し、そのタスクで大規模事前学習することで、複数の下流タスクにまたがる汎用性を出しています。

また、データエンジンの効果も大きいです。セグメンテーションのように教師データが高価な領域では、モデル性能だけでなく、どうやって次のデータを安く集めるかが技術優位になります。

何に使える?

SAM は、画像の中から「対象領域だけ切り出したい」多くの場面で使えます。

画像編集と生成前処理

商品画像の背景除去、人物や物体の切り抜き、生成画像の部分編集、インペインティング対象の指定などに向いています。ボックスやクリックだけでマスクが取れるので、複雑なラベリングをしなくても編集ワークフローを作りやすいです。

文書理解とOCR前処理

帳票やPDF画像から図表、表、スタンプ、写真領域だけを切り出す前処理に使えます。OCR 単体では拾いにくいレイアウト要素を分離できるので、文書AIの前段として有効です。

製造・点検・検査

外観検査や設備点検では、異常らしき部位を先に検出したあと、その周辺領域を正確に切り出して後段モデルに渡す設計が考えられます。特定業界向け専用モデルの前に、汎用的な切り出し器として使えるのが利点です。

ロボティクスとAR

ロボットが把持対象を分離する、ARで前景物体だけを重ねる、動画編集で被写体を追跡する、といった用途でも相性がよいです。SAM 自体は静止画モデルですが、前後フレームの追跡や検出器と組み合わせることでかなり広い用途に展開できます。

マルチモーダルアプリの視覚部品

画像QAやエージェント系システムでも、まず対象領域を切り出してから説明させると、認識対象を絞れます。LLaVA 系の画像対話モデルと組み合わせると、「この図のこの部分を説明して」のようなUIも作りやすくなります。

開発や事業へのヒント

SAM から得られるヒントは、視覚AIの価値を「最終タスクを全部やるモデル」ではなく「再利用できる中間部品」として設計すると応用範囲が広がることです。

専用モデルの前に汎用切り出し器を置く

AI アプリを作るとき、最初から業界特化のセグメンテーションモデルを学習しなくても、まず SAM で対象候補を切り出し、その後に小さな分類器やOCRへ渡す構成が取れます。これならPoCをかなり速く回せます。

UI と組み合わせると価値が出やすい

SAM はクリックやボックス入力と相性がよいので、完全自動よりも半自動UIで特に価値が出ます。たとえば社内の画像整理ツール、EC出品ツール、製造現場の点検支援ツールなどでは、ユーザーが軽く指定するだけで精度の高い切り出しを返せると作業時間を大きく削減できます。

データエンジンの考え方は他分野にも使える

この論文の本質は SAM そのものだけではありません。モデルを使って次のデータを集めるというデータエンジンの発想は、RAG評価、音声ラベリング、エージェントログ整備、業務文書アノテーションなどにも応用できます。人手の高い工程を、モデル支援で少しずつ自動化していく流れは事業上も強いです。

小規模プロダクトでも導入しやすい

SAM は「画像から対象を切り出す」という横断的なニーズに刺さるので、SaaS の小機能として入れやすいです。背景除去、商品領域抽出、図表切り出し、注釈支援など、単独でも価値が成立しやすい機能が多いです。

限界

SAM にも明確な限界があります。まず、論文の強みは汎用性であり、特定ドメインで常に最良というわけではありません。医療画像、衛星画像、顕微鏡画像のような分布では、そのままでは精度が足りないケースがあります。

次に、細い構造や非常に小さい対象、密集物体ではマスク品質が不安定になることがあります。論文でも完全解決まではしておらず、後続研究で高精細版や軽量版が多数提案されました。

また、画像エンコーダは重いので、同じ画像に複数回問い合わせる用途には向きますが、毎フレームを完全新規で高速処理したい動画用途では工夫が要ります。実運用では、追跡モデルや検出器との分担設計が必要です。

さらに、テキストプロンプト対応は論文ではまだ初期的です。SAM をそのまま「何でも言葉で指定できる視覚LLM」と考えるのは過大評価で、自然言語理解を強く使うなら別の vision-language モデルとの組み合わせが現実的です。

よくある質問

Q. Segment Anything は物体検出モデルと何が違うのですか?

A. 物体検出は通常、対象の位置を矩形で返しますが、SAM は対象の形に沿ったピクセル単位のマスクを返します。切り抜き、背景除去、領域単位の解析ではマスクのほうがそのまま使いやすいです。

Q. SAM だけで業務用の画像判定まで完結できますか?

A. 多くの場合は難しいです。SAM は「どこを切り出すか」の汎用部品として強い一方で、その領域が正常か異常か、何の商品か、どんな意味を持つかまでは別モデルやルールが必要です。前処理やUI支援として使うのが現実的です。

Q. なぜ SA-1B のような巨大データセットが必要だったのですか?

A. セグメンテーションは対象の種類も形も非常に多様で、狭いデータ分布だけでは汎用化しにくいからです。SAM は新しい分布でも使えることを目指しているため、広い画像分布と大量のマスクが重要でした。

Q. 小規模な開発チームでもこの考え方は活かせますか?

A. 活かせます。SAM 級の大規模データセットを自前で作るのは難しいですが、「汎用切り出し器を先に使う」「半自動UIでデータ収集を早める」「モデル支援でラベル作成コストを下げる」といった考え方は小規模プロダクトでも実践しやすいです。

今日の学び

この論文は、画像セグメンテーションがタスクごとに分断され、教師データ作成も高コストになりやすい課題を扱いました。そこに対して、点やボックスで対象を指定できる promptable segmentation と、モデル自身を使ってデータを増やすデータエンジンで解こうとしました。

ここから得られるヒントは、画像AIでも「全部を自動化する専用モデル」だけを目指さず、再利用しやすい中間部品を先に作るとプロダクト化しやすいということです。SAM はその好例です。