autodistill/autodistill
Images to inference with no labeling (use foundation models to train supervised models).
autodistill – 从无标签图像到轻量级边缘就绪模型
是什么 – autodistill 是一个 Python 库,可使用大型且缓慢的基础模型(基础模型)自动标注图像,然后在这些自动标注的数据上训练一个小型、快速的检测器(例如 YOLOv8),从而在无需任何人工标注的情况下生成可在边缘设备上部署的轻量级模型。
核心概念(如 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 完全一致)
# 安装核心包 + 两个插件(Grounded‑SAM 作为基础,YOLOv8 作为目标)
pip install autodistill autodistill-grounded-sam autodistill-yolov8
# 一行命令完成标注和训练
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 walkthrough: https://www.youtube.com/watch?v=gKTYMfwPo4M
以上所有信息均直接取自项目 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目