Meet YOLO26: next-gen vision AI.

Link to this sectionSegment Anything Model (SAM)#

SAMの進化

これはMetaによるオリジナルのSAMモデルです。機能強化については、ビデオセグメンテーション用の SAM 2、またはテキストや画像例示プロンプトを使用したプロンプト可能なコンセプトセグメンテーション用の SAM 3 を参照してください。

How to use Segment Anything In Colab

Segment Anything Model (SAM) を使用した 画像セグメンテーション の最前線へようこそ。この革新的なモデルは、リアルタイムパフォーマンスを備えたプロンプト可能な画像セグメンテーションを導入することで業界の常識を覆し、この分野における新しい基準を打ち立てました。

Link to this sectionSAMの紹介:Segment Anything Model#

Segment Anything Model (SAM) は、プロンプトによるセグメンテーションを可能にし、画像解析タスクにおいて比類のない汎用性を提供する最先端の画像セグメンテーションモデルです。SAMは、画像セグメンテーションのための新しいモデル、タスク、およびデータセットを導入する画期的なプロジェクトであるSegment Anythingイニシアチブの中核を成しています。

SAMの高度な設計により、事前の知識なしに新しい画像分布やタスクに適応することが可能で、これはゼロショット転移として知られる機能です。1,100万枚以上の厳選された画像にわたる10億以上のマスクを含む広範な SA-1Bデータセット でトレーニングされたSAMは、印象的なゼロショットパフォーマンスを示し、多くの場合において従来の完全教師あり学習の結果を上回っています。

SA-1B dataset sample with automatic segmentation masks SA-1Bのサンプル画像。 データセットの画像に、新しく導入されたSA-1Bデータセットのマスクがオーバーレイされています。SA-1Bには、1,100万枚の多様で高解像度かつライセンス取得済みのプライバシー保護された画像と、11億個の高品質なセグメンテーションマスクが含まれています。これらのマスクはSAMによって完全に自動的にアノテーションされており、人間の評価や多数の実験によって検証された通り、高い品質と多様性を備えています。画像は可視化のために1画像あたりのマスク数でグループ化されています(平均で1画像あたり約100個のマスクがあります)。

Link to this sectionSegment Anything Model (SAM) の主な特徴#

  • プロンプト可能なセグメンテーションタスク: SAMはプロンプト可能なセグメンテーションタスクを念頭に置いて設計されており、オブジェクトを特定する空間的またはテキスト的な手がかりなど、あらゆるプロンプトから有効なセグメンテーションマスクを生成できます。
  • 高度なアーキテクチャ: Segment Anything Modelは、強力な画像エンコーダー、プロンプトエンコーダー、軽量なマスクデコーダーを採用しています。このユニークなアーキテクチャにより、柔軟なプロンプト入力、リアルタイムのマスク計算、およびセグメンテーションタスクにおける曖昧さへの対応が可能になります。
  • SA-1Bデータセット: Segment Anythingプロジェクトによって導入されたSA-1Bデータセットは、1,100万枚の画像に対して10億個以上のマスクを特徴としています。今日までのセグメンテーションデータセットの中で最大規模であり、SAMに対して多様かつ大規模なトレーニングデータソースを提供します。
  • ゼロショットパフォーマンス: SAMは様々なセグメンテーションタスクにおいて優れたゼロショットパフォーマンスを示し、プロンプトエンジニアリング をほとんど必要とせずに、多様なアプリケーションですぐに使用できるツールとなっています。

Segment Anything ModelとSA-1Bデータセットの詳細については、Segment Anything GitHub にアクセスし、研究論文 Segment Anything をご覧ください。

UltralyticsプラットフォームでのSAM

SAM powers the smart annotation feature on Ultralytics Platform, enabling click-based intelligent masking for fast dataset labeling. See the annotation guide for details.

Link to this section利用可能なモデル、サポートされているタスク、および動作モード#

この表は、利用可能なモデルとその特定の事前学習済みウェイト、サポートするタスク、および 推論検証トレーニングエクスポート といった異なる動作モードとの互換性を示しています。サポートされているモードは✅、サポートされていないモードは❌で示されています。

モデルタイプ事前学習済みウェイトサポートされるタスク推論検証トレーニングエクスポート
SAM basesam_b.ptインスタンスセグメンテーション
SAM largesam_l.ptインスタンスセグメンテーション

Link to this sectionSAMの使用方法:画像セグメンテーションにおける汎用性とパワー#

Segment Anything Modelは、トレーニングデータを超えた多数の下流タスクに適用できます。これには、エッジ検出、オブジェクト候補生成、インスタンスセグメンテーション、および予備的なテキストからマスクへの予測が含まれます。プロンプトエンジニアリングにより、SAMはゼロショットの形式で新しいタスクやデータ分布に迅速に適応でき、あらゆる画像セグメンテーションのニーズに対応する汎用的で強力なツールとして確立されています。

Link to this sectionSAM予測の例#

プロンプトによるセグメンテーション

指定されたプロンプトで画像をセグメント化します。

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
すべてをセグメント化

画像全体をセグメント化します。

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg")
  • ここでのロジックは、プロンプト(bbox/ポイント/マスク)を渡さない場合に画像全体をセグメント化することです。
SAMPredictorの例

この方法を使用すると、画像を一度セットするだけで、画像エンコーダーを何度も実行することなく、プロンプト推論を複数回実行できます。

import cv2

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])

# Run inference with single point prompt
results = predictor(points=[900, 370], labels=[1])

# Run inference with multiple points prompt
results = predictor(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with negative points prompt
results = predictor(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

# Reset image
predictor.reset_image()

追加の引数を使用してすべてをセグメント化します。

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)
注意

上記の例で返されるすべての resultsResults オブジェクトであり、予測されたマスクとソース画像に簡単にアクセスできます。

Link to this sectionSAMとYOLOの比較#

ここでは、MetaのSAM-bモデルと、YOLO26n-seg を含むUltralyticsのセグメンテーションモデルを比較します:

モデルサイズ
(MB)
パラメータ
(M)
速度 (CPU)
(ms/im)
Meta SAM-b37593.741703
MobileSAM40.710.123802
FastSAM-s with YOLOv8 backbone23.911.858.0
Ultralytics YOLOv8n-seg7.1 (52.8倍軽量)3.4 (27.6倍少ない)24.8 (1682倍高速)
Ultralytics YOLO11n-seg6.2 (60.5倍軽量)2.9 (32.3倍少ない)24.3 (1716倍高速)
Ultralytics YOLO26n-seg6.7 (56.0倍軽量)2.7 (34.7倍少ない)25.2 (1655倍高速)

この比較は、SAMバリアントとYOLOセグメンテーションモデル間のモデルサイズと速度における大きな違いを示しています。SAMは独自の自動セグメンテーション機能を提供しますが、YOLOモデル、特にYOLOv8n-seg、YOLO11n-seg、およびYOLO26n-segは、大幅に小さく、高速で、計算効率に優れています。

SAMの速度はPyTorchで測定され、YOLOの速度はONNX Runtimeで測定されました。テストは2025年版Apple M4 Air(16GB RAM)上で torch==2.10.0ultralytics==8.4.31、および onnxruntime==1.24.4 を使用して実行されました。このテストを再現するには:

from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM-b, MobileSAM
for file in ["sam_b.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLO models (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True)
    model = YOLO(onnx_path)
    model(ASSETS)

Link to this section自動アノテーション:セグメンテーションデータセットへの近道#

自動アノテーションはSAMの重要な機能であり、ユーザーは事前学習済みの検出モデルを使用して セグメンテーションデータセット を生成できます。この機能により、時間のかかる手動ラベリングを必要とせず、大量の画像の迅速かつ正確なアノテーションが可能になります。

Link to this section検出モデルを使用したセグメンテーションデータセットの生成#

Ultralyticsフレームワークでデータセットを自動アノテーションするには、以下のように auto_annotate 関数を使用します:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
引数タイプデフォルト説明
datastr必須アノテーションまたはセグメンテーション対象の画像が含まれるディレクトリへのパス。
det_modelstr'yolo26x.pt'初期オブジェクト検出のためのYOLO検出モデルのパス。
sam_modelstr'sam_b.pt'セグメンテーション用のSAMモデルのパス(SAM、SAM 2、MobileSAM、SAM 3ウェイトをサポート)。
devicestr''計算デバイス(例:'cuda:0'、'cpu'、または自動デバイス検出のための空文字列)。
conffloat0.25弱い検出結果をフィルタリングするためのYOLO検出信頼度閾値です。
ioufloat0.45重複するボックスをフィルタリングするためのNon-Maximum Suppression(NMS)用IoU閾値です。
imgszint640画像のリサイズに使用する入力サイズ(32の倍数である必要があります)。
max_detint300メモリ効率のために、画像1枚あたりの最大検出数です。
classeslist[int]None検出するクラスインデックスのリスト(例:人物と自転車を検出する場合は [0, 1])。
output_dirstrNoneアノテーションを保存するディレクトリ(デフォルトは <data>_auto_annotate_labels の兄弟ディレクトリ)。

auto_annotate 関数は画像へのパスを受け取ります。また、事前学習済みの検出モデルやSAMセグメンテーションモデルの指定、モデルを実行するデバイス、アノテーション結果を保存するための出力ディレクトリを指定するオプション引数も利用可能です。

事前学習済みモデルを使用した自動アノテーションにより、高品質なセグメンテーションデータセットの作成にかかる時間と労力を大幅に削減できます。この機能は、大規模な画像コレクションを扱う研究者や開発者にとって特に有益であり、手作業でのアノテーションではなくモデルの開発や評価に集中することができます。

Link to this section引用と謝辞#

研究や開発作業でSAMが役立った場合は、論文の引用をご検討ください:

引用
@misc{kirillov2023segment,
      title={Segment Anything},
      author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
      year={2023},
      eprint={2304.02643},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

コンピュータビジョンコミュニティのためにこの貴重なリソースを作成し、維持してくださっているMeta AIに心から感謝いたします。

Link to this sectionよくある質問(FAQ)#

Link to this sectionUltralyticsのSegment Anything Model (SAM)とは何ですか?#

UltralyticsのSegment Anything Model (SAM)は、プロンプト可能なセグメンテーションタスク向けに設計された革新的な画像セグメンテーションモデルです。画像エンコーダーやプロンプトエンコーダー、軽量なマスクデコーダーを含む高度なアーキテクチャを活用し、空間的なキューやテキストキューなど、様々なプロンプトから高品質なセグメンテーションマスクを生成します。広大なSA-1Bデータセットで学習されたSAMは、ゼロショット性能に優れており、事前の知識なしで新しい画像分布やタスクに適応可能です。

Link to this sectionSegment Anything Model (SAM)を使用して画像セグメンテーションを行うにはどうすればよいですか?#

Segment Anything Model (SAM)を使用した画像セグメンテーションは、バウンディングボックスやポイントなどの様々なプロンプトで推論を実行することで行えます。以下にPythonでの例を示します:

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Segment with bounding box prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Segment with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Segment with multiple points prompt
model("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Segment with multiple points prompt per object
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Segment with negative points prompt.
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

あるいは、コマンドラインインターフェース(CLI)でSAMの推論を実行することも可能です:

yolo predict model=sam_b.pt source=path/to/image.jpg

詳細な使用手順については、セグメンテーションセクションをご覧ください。

Link to this sectionSAMモデルとYOLOモデルの性能にはどのような違いがありますか?#

YOLOモデルと比較して、SAM-b、MobileSAM、FastSAM-sなどのSAMバリアントは一般的に大きく低速ですが、独自のゼロショットセグメンテーション機能を提供します。例えば、YOLO26n-segは、CPU上でMetaのオリジナルのSAM-bモデルと比較して56倍小さく1650倍以上高速です。このため、迅速で軽量かつ計算効率の高いセグメンテーションを必要とするアプリケーションにはYOLOモデルが理想的であり、柔軟でプロンプト可能なゼロショットセグメンテーションタスクにはSAMモデルが適しています。

Link to this sectionSAMを使用してデータセットを自動アノテーションするにはどうすればよいですか?#

UltralyticsのSAMは、事前学習済みの検出モデルを使用してセグメンテーションデータセットを生成できる自動アノテーション機能を提供しています。以下にPythonでの例を示します:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")

この関数は、画像へのパスと、事前学習済みの検出モデルやSAMセグメンテーションモデルのオプション引数、デバイスおよび出力ディレクトリの指定を受け取ります。完全なガイドについては、自動アノテーションを参照してください。

Link to this sectionSegment Anything Model (SAM)の学習にはどのデータセットが使用されていますか?#

SAMは、1100万枚の画像にわたる10億以上のマスクで構成される広大なSA-1Bデータセットで学習されています。SA-1Bは現在最大のセグメンテーションデータセットであり、高品質で多様な学習データを提供することで、様々なセグメンテーションタスクにおいて驚異的なゼロショット性能を実現しています。詳細については、データセットセクションをご覧ください。

コメント