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リソースを必要とする場合がある
詳細情報の入手先
- チュートリアル: https://blog.roboflow.com/autodistill
- ドキュメント: https://docs.autodistill.com
- デモノートブック: https://colab.research.google.com/github/roboflow-ai/notebooks/.../how-to-auto-train-yolov8-model-with-autodistill.ipynb
- YouTubeウォークスルー: https://www.youtube.com/watch?v=gKTYMfwPo4M
上記のすべての情報はプロジェクトのREADMEから直接引用;追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト