autodistill/autodistill

Images to inference with no labeling (use foundation models to train supervised models).

autodistill – ラベルのない画像から軽量なエッジ対応モデルへ

何ができるか – autodistill は、大規模で遅い基礎モデル(ベースモデル)を使って画像を自動ラベル付けし、そのラベル付きデータで小さな高速検出器(例:YOLOv8)を学習させるPythonライブラリです。手動ラベル付けを一切行わず、エッジデバイスで実行可能な軽量モデルを生成できます。

コアコンセプト(READMEに記載)

コンセプト 役割
タスク 予測の種類(現在は detection / instance segmentation;classification は近日リリース予定)
ベースモデル ラベルを生成できる大規模な基礎モデル(例:Grounded‑SAM、Grounding‑DINO、OWL‑ViT、LLaVA‑1.5)
オントロジー ベースモデルに使用するプロンプトと、出力をクラス名に変換する方法を定義するマッピング(例:{"shipping container": "container"})
データセット ベースモデルが自動ラベル付けした画像で、ターゲットモデルが利用可能な形式で保存される
ターゲットモデル 自動ラベル付きデータで微調整される、小さな高速な教師ありモデル(YOLOv8、YOLO‑NAS、YOLOv5、DETRなど)
蒸留モデル 本番環境にデプロイするための最終的な軽量モデル

主な機能(READMEより)

  • プラグイン式インターフェース – ベースモデルとターゲットモデルは別々のプラグインとして扱えるため、任意の対応する基礎モデルとSOTA検出器を組み合わせ可能
  • 自動ラベル付け – 手動ラベル付けのステップが不要。ベースモデルが学習データを生成
  • 高速な教師あり学習 – 単一GPUで数分で学習可能な軽量検出器を使用
  • モデル所有権 – 蒸留モデルは自由にホスティング可能
  • エッジ対応デプロイ – エクスポートされたモデルはCPU、マイコン、任意のエッジランタイムで実行可能

クイックスタート例(READMEと完全一致)

# コア + 2つのプラグインのインストール(Grounded‑SAMをベース、YOLOv8をターゲット)
pip install autodistill autodistill-grounded-sam autodistill-yolov8

# 1行でラベル付けと学習を実行
autodistill images \
  --base="grounding_dino" \
  --target="yolov8" \
  --ontology '{"prompt": "label"}' \
  --output="./dataset"

このコマンドは ./images 内のすべての画像を読み込み、Grounding‑DINOに指定されたプロンプトに従ってラベル付けさせ、YOLO互換のデータセットを ./dataset に書き込み、その後 YOLOv8 モデルを学習します。

より明示的なPythonスニペット(READMEより):

from autodistill_grounded_sam import GroundedSAM
from autodistill.detection import CaptionOntology
from autodistill_yolov8 import YOLOv8

# 1️⃣ ベースモデル + オントロジー
base = GroundedSAM(ontology=CaptionOntology({"shipping container": "container"}))
base.label(input_folder="./images", output_folder="./dataset")

# 2️⃣ ターゲットモデルの学習
target = YOLOv8("yolov8n.pt")
target.train("./dataset/data.yaml", epochs=200)

# 3️⃣ 蒸留モデルによる推論
pred = target.predict("./dataset/valid/your-image.jpg", confidence=0.5)
print(pred)

READMEでは、生成されたモデルをRoboflowにアップロードしてホスト推論を行う方法も紹介されています。

利用可能なモデルプラグイン(README時点での状態)

タスク ベースモデル(✓=準備完了) ターゲットモデル(✓=準備完了)
オブジェクト検出 Grounded‑SAM 2, DETIC, Grounded‑SAM, Grounding‑DINO, OWL‑ViT, SAM‑CLIP, LLaVA‑1.5, Kosmos‑2, OWLv2, Roboflow‑Universe, CoDet, Azure Custom Vision, AWS Rekognition, Google Vision YOLOv8, YOLO‑NAS, YOLOv5, DETR(その他の開発中)
インスタンスセグメンテーション Grounded‑SAM, SAM‑CLIP, SegGPT, FastSAM(部分対応) YOLOv8(その他の開発中)
分類 (計画中) ViT, YOLOv8, YOLOv5(計画中)

インストールノート

  • コアパッケージ(autodistill)は抽象的なパイプラインを定義するのみ。特定のベース/ターゲットモデルを使用するにはプラグインもインストールする必要があります。
  • プラグインは別々のPyPIパッケージとして公開されています(例:autodistill-grounded-sam, autodistill-yolov8)。これにより重い依存関係を分離できます。
  • 開発の際はリポジトリをクローンし、pip install -e . でインストール可能。

使うべき場面

  • 迅速なプロトタイピング:ラベルなしの画像コレクションがあり、すぐに検出器が必要な場合
  • エッジデプロイ:限られたハードウェア上でリアルタイムで動作するモデルが必要な場合
  • コスト感度の高いパイプライン:推論毎に大規模モデルAPIの利用料を支払う必要がなく、ラベル付けには大規模モデルを一度だけ使用する

知られている制限(READMEに記載)

  • 現在は視覚タスクに限定。言語のみのタスクは未対応
  • 蒸留モデルの品質はベースモデルのラベル精度に大きく依存。不正確なベース予測は伝播する
  • 一部のベース/ターゲット組み合わせは「開発中」(例:YOLO‑6、YOLO‑7、多くのセグメンテーションターゲット)
  • 大規模な基礎モデルはプライベートAPIの制限や、ラベル付けに大量のGPUリソースを必要とする場合がある

詳細情報の入手先


上記のすべての情報はプロジェクトのREADMEから直接引用;追加の機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト