autodistill

GitHub
2.7k 213 简单 1 次阅读 3天前Apache-2.0数据工具图像其他开发框架
AI 解读 由 AI 自动生成,仅供参考

autodistill 是一款旨在消除人工标注成本的 AI 开源工具,它能帮助开发者直接从未标记的图片快速构建可部署的定制模型。在传统流程中,训练高精度视觉模型往往需要耗费大量时间进行数据标注,而 autodistill 巧妙地利用大型基础模型(如多模态大模型)作为“教师”,自动为原始图像生成标注数据,进而训练出轻量级、推理速度更快的“学生”模型。

这一过程完全自动化,无需人工干预,真正实现了从“无标签图片”到“边缘端推理”的无缝衔接。目前,autodistill 主要支持目标检测和实例分割等视觉任务,并允许用户将蒸馏后的模型私有化部署在云端或本地设备上,确保数据主权。

其核心技术亮点在于模块化的插件架构,用户可以灵活组合不同的基础模型与目标模型,只需确保任务类型匹配即可轻松搭建流水线。无论是希望快速验证想法的 AI 开发者、需要高效处理特定视觉任务的研究人员,还是寻求降低数据标注成本的企业团队,autodistill 都能提供极大的便利,让定制专属视觉模型变得像搭积木一样简单高效。

使用场景

一家智能零售初创公司需要快速部署一套能识别货架上特定饮料品牌的视觉系统,以监控库存和陈列合规性。

没有 autodistill 时

  • 标注成本高昂:团队需雇佣人工逐帧手动框选数千张货架图像中的饮料瓶,耗时数周且费用昂贵。
  • 启动周期漫长:从收集图片到完成标注、再训练模型,整个流程往往拖延一个月以上,错失市场窗口。
  • 边缘部署困难:直接使用大型基础模型进行推理虽然准确,但计算资源消耗巨大,无法在低成本的边缘摄像头设备上流畅运行。
  • 迭代灵活性差:一旦新增需要识别的饮料品牌,必须重新经历繁琐的人工标注和训练过程,响应速度极慢。

使用 autodistill 后

  • 零人工自动标注:利用 CLIP 等大型基础模型直接对未标注的货架图像进行预标注,瞬间生成高质量训练数据集,完全省去人工环节。
  • 极速模型落地:将自动标注的数据用于训练轻量级的 YOLO 模型,几天内即可完成从原始图片到可部署模型的闭环。
  • 高效边缘运行:生成的蒸馏模型体积小、速度快,完美适配边缘设备,实现实时、低延迟的货架监控。
  • 敏捷业务扩展:只需修改本体(Ontology)定义新品牌,autodistill 即可自动重新生成数据并训练新模型,轻松应对产品线的频繁变动。

autodistill 通过“大模型教小模型”的蒸馏机制,彻底消除了数据标注瓶颈,让开发者能以零标注成本将通用视觉能力转化为专属的高效边缘应用。

运行环境要求

操作系统
  • 未说明
GPU

未说明(但基础模型如 GroundedSAM 通常推荐 GPU 加速)

内存

未说明

依赖
notes该工具采用模块化设计,需单独安装核心包及具体的基础模型(Base Model)和目标模型(Target Model)插件。支持在无标注数据的情况下,利用大型基础模型自动标注并训练轻量级模型。可通过命令行或 Python 脚本运行。建议使用虚拟环境管理依赖以避免冲突。
python3.8+
autodistill
autodistill-grounded-sam
autodistill-yolov8
supervision
cv2
roboflow
autodistill hero image

快速开始

Autodistill 利用体积大、速度慢的基础模型来训练体积小、速度快的监督模型。借助 autodistill,您可以从无标签图像开始,最终在边缘端运行自定义模型进行推理,整个过程无需人工干预。

[!提示] 您可以在自己的硬件上使用 Autodistill,也可以使用 Roboflow 托管版 Autodistill 在云端为图像打标签。

目前,autodistill 支持目标检测和实例分割等视觉任务,但未来有望扩展到语言及其他类型模型的支持。

🔗 快速链接

教程 文档 支持的模型 贡献

👀 示例输出

以下是目标模型在使用 Autodistill 自动标注的数据集训练后,对牛奶瓶和瓶盖进行检测的预测示例(完整流程请观看 Autodistill YouTube 视频):

🚀 功能

  • 🔌 可插拔接口,用于连接不同模型
  • 🤖 自动标注数据集
  • 🐰 训练快速的监督模型
  • 🔒 拥有您自己的模型
  • 🚀 将蒸馏后的模型部署到云端或边缘端

📚 基本概念

要使用 autodistill,您需要将未标注的数据输入到基础模型中,该模型会利用本体论为数据集打上标签,然后用这些标签来训练目标模型,最终生成一个针对特定任务优化的蒸馏模型。

Autodistill 定义了几个基本概念:

  • 任务 - 任务定义了目标模型将预测的内容。autodistill 流程中各个组件(基础模型、本体论和目标模型)的任务必须匹配,才能相互兼容。目前通过 detection 任务支持目标检测和实例分割,classification 支持也将很快加入。
  • 基础模型 - 基础模型是一种大型的基础模型,对多种领域都有广泛的了解。它们通常是多模态的,能够执行多种任务。这类模型体积大、速度慢且成本高昂。例如 GroundedSAM 和即将推出的 GPT-4 多模态版本。我们使用基础模型(结合未标注的输入数据和本体论)来创建数据集。
  • 本体论 - 本体论定义了如何向您的基础模型提供提示、数据集将描述什么内容以及目标模型将预测什么。一个简单的本体论是 CaptionOntology,它通过文本描述来提示基础模型,并将其映射到类别名称。其他本体论可能会使用 CLIP 向量或示例图像,而不是文本描述。
  • 数据集 - 数据集是一组自动标注的数据,可用于训练目标模型。它是基础模型生成的输出。
  • 目标模型 - 目标模型是一种监督模型,它接收数据集并输出一个可直接部署的蒸馏模型。目标模型通常体积小、速度快,并针对特定任务进行了精细调优(但其泛化能力有限,主要依赖于数据集中的信息)。例如 YOLOv8 和 DETR。
  • 蒸馏模型 - 蒸馏模型是 autodistill 流程的最终输出;它是一组针对您的任务进行微调的权重,可以直接部署以获取预测结果。

💡 理论与局限性

人工标注是计算机视觉广泛应用的最大障碍之一。为了构建适合生产级模型训练的数据集,往往需要耗费数千小时。然而,用于训练监督模型的蒸馏过程并非新事物——事实上,传统的人工标注不过是另一种形式的蒸馏,只不过其基础模型是极其强大的人类大脑 🧠。

基础模型对许多领域都有广泛的知识,但在生产环境中,我们更需要那些对某一领域非常精通的模型。

随着基础模型性能的不断提升,它们将越来越有能力辅助甚至取代人工完成标注工作。因此,我们需要工具来引导、利用和比较这些模型。此外,这些基础模型体积庞大、成本高昂,且常常被私有 API 所限制。对于许多生产场景而言,我们还需要能够在边缘端低成本、实时运行的模型。

Autodistill 的基础模型已经可以为许多常见场景创建数据集(通过创造性地提示和少量样本学习,我们还可以进一步扩展其用途),但它们目前仍不完美。我们还有大量工作要做;这仅仅是一个开始,我们非常期待您的帮助,共同测试并扩展系统的功能!

💿 安装

Autodistill 是模块化的。你需要安装 autodistill 包(它定义了上述概念的接口),以及 基础模型和目标模型插件(它们实现了具体的模型)。

通过将这些组件分别打包为插件,可以最大限度地减少依赖和许可方面的不兼容性,并且任何人都可以实现和维护新的模型。

示例:

pip install autodistill autodistill-grounded-sam autodistill-yolov8
从源码安装

你也可以从 GitHub 克隆项目进行本地开发:

git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .

更多基础模型和目标模型已在下方列出

🚀 快速入门

请参阅演示 Notebook,以快速了解 autodistill。该 Notebook 演示了如何在无需标注的情况下构建牛奶容器检测模型。

下面,我们浓缩了 Notebook 中的关键部分,以便快速介绍 autodistill

你也可以通过一条命令运行 Autodistill。首先,安装 autodistill

pip install autodistill

然后,运行:

autodistill images --base="grounding_dino" --target="yolov8" --ontology '{"prompt": "label"}' --output="./dataset"

此命令会使用 Grounding DINO 为名为 images 的目录中的所有图像添加标签,并利用这些标注图像训练一个 YOLOv8 模型。Grounding DINO 将使用“prompt”为所有图像打上标签,并将该标签保存为“label”。你可以指定任意数量的 prompt 和 label。最终生成的数据集将保存在名为 dataset 的文件夹中。

安装包

在本示例中,我们将展示如何使用 autodistill-grounded-samautodistill-yolov8,将 GroundedSAM 知识蒸馏到一个小型 YOLOv8 模型中。

pip install autodistill autodistill-grounded-sam autodistill-yolov8

蒸馏模型

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

# 定义一个本体,用于将类别名称映射到我们的 GroundingDINO 提示词
# 本体字典的格式为 {caption: class}
# 其中 caption 是发送给基础模型的提示词,class 则是将在生成的标注中为该 caption 保存的标签
base_model = GroundedSAM(ontology=CaptionOntology({"shipping container": "container"}))

# 为名为 `context_images` 的文件夹中的所有图像添加标签
base_model.label(
  input_folder="./images",
  output_folder="./dataset"
)

target_model = YOLOv8("yolov8n.pt")
target_model.train("./dataset/data.yaml", epochs=200)

# 对新模型进行推理
pred = target_model.predict("./dataset/valid/your-image.jpg", confidence=0.5)
print(pred)

# 可选:将你的模型上传到 Roboflow 进行部署
from roboflow import Roboflow

rf = Roboflow(api_key="API_KEY")
project = rf.workspace().project("PROJECT_ID")
project.version(DATASET_VERSION).deploy(model_type="yolov8", model_path=f"./runs/detect/train/")
可视化预测结果

要使用 autodistill 绘制单张图像的标注,可以使用以下代码。这段代码有助于可视化由基础模型(即 GroundedSAM)生成的标注,以及目标模型(即 YOLOv8)的结果。

import supervision as sv
import cv2

img_path = "./images/your-image.jpeg"

image = cv2.imread(img_path)

detections = base_model.predict(img_path)
# 使用检测框标注图像
box_annotator = sv.BoxAnnotator()
label_annotator = sv.LabelAnnotator()

labels = [
    f"{base_model.ontology.classes()[class_id]} {confidence:0.2f}"
    for _, _, confidence, class_id, _, _ in detections
]

annotated_frame = box_annotator.annotate(
    scene=image.copy(), detections=detections
)
annotated_frame = label_annotator.annotate(
    scene=annotated_frame, detections=detections, labels=labels
)

sv.plot_image(annotated_frame, (16, 16))

📍 可用模型

我们的目标是让 autodistill 支持将所有基础模型用作基础模型,并支持大多数 SOTA 监督学习模型作为目标模型。我们最初专注于目标检测和分割任务,但计划很快推出分类支持!未来,我们希望 autodistill 也能应用于计算机视觉以外的其他领域。

  • ✅ - 完成(点击行/列标题可跳转至仓库)
  • 🚧 - 正在开发中

目标检测

基础模型 / 目标模型 YOLOv8 YOLO-NAS YOLOv5 DETR YOLOv6 YOLOv7 MT-YOLOv6
Grounded SAM 2 🚧
DETIC 🚧
GroundedSAM 🚧
GroundingDINO 🚧
OWL-ViT 🚧
SAM-CLIP 🚧
LLaVA-1.5 🚧
Kosmos-2 🚧
OWLv2 🚧
Roboflow Universe Models (50k+ 预训练模型) 🚧
CoDet 🚧
Azure Custom Vision 🚧
AWS Rekognition 🚧
Google Vision 🚧

实例分割

基础模型 / 目标模型 YOLOv8 YOLO-NAS YOLOv5 YOLOv7 Segformer
GroundedSAM 🚧 🚧
SAM-CLIP 🚧 🚧
SegGPT 🚧 🚧
FastSAM 🚧 🚧 🚧

分类

基础模型 / 目标模型 ViT YOLOv8 YOLOv5
CLIP 🚧
MetaCLIP 🚧
DINOv2 🚧
BLIP 🚧
ALBEF 🚧
FastViT 🚧
AltCLIP 🚧
EvaCLIP 🚧
Gemini 🚧
Fuyu 🚧 🚧 🚧
Open Flamingo 🚧 🚧 🚧
GPT-4
PaLM-2

Roboflow 模型部署支持

您可以选择将使用 Autodistill 训练的一些目标模型部署到 Roboflow 上。在 Roboflow 上部署可以让您使用一系列简洁的 SDK,在边缘设备上运行您的模型,从适用于 Web 部署的 roboflow.js 到适用于 NVIDIA Jetson 设备的 SDK。

以下由 Autodistill 训练的目标模型支持在 Roboflow 上部署:

模型名称 是否支持?
YOLOv8 目标检测
YOLOv8 实例分割
YOLOv5 目标检测
YOLOv5 实例分割
YOLOv8 分类

🎬 视频指南

Autodistill:零标注训练YOLOv8 Autodistill:零标注训练YOLOv8

发布日期:2023年6月8日

在本视频中,我们将向您展示如何使用一个新的库来训练一个YOLOv8模型,以检测传送带上移动的瓶子。是的,没错——完全不需要任何标注时间!我们将深入探讨Autodistill的功能,从设置Python环境、准备图像,到激动人心的自动图像标注过程,逐一讲解。

💡 社区资源

🗺️ 路线图

除了添加新模型之外,我们还计划通过autodistill探索以下几个方向:

  • 💡 本体创建与提示工程
  • 👩‍💻 人机协作支持
  • 🤔 模型评估
  • 🔄 主动学习
  • 💬 语言任务

🏆 贡献

我们非常欢迎您的参与!请参阅我们的贡献指南开始贡献。感谢所有贡献者!🙏

👩‍⚖️ 许可证

autodistill软件包采用Apache 2.0许可证。每个基础或目标模型插件可能使用与其底层模型许可证相对应的自有许可证。更多信息请参阅各插件仓库中的许可证文件。

常见问题 ❓

导致“PytorchStreamReader读取zip压缩包失败:未能找到中央目录”错误的原因是什么?

该错误是由PyTorch无法加载模型权重引起的。请进入~/.cache/autodistill目录,删除您尝试加载的模型对应的文件夹。然后重新运行代码,模型权重将会从头开始下载。请确保安装过程不被中断。

💻 探索更多 Roboflow 开源项目

项目 描述
supervision 用于计算机视觉项目的通用工具,涵盖预测过滤与展示、目标跟踪以及模型评估等功能。
Autodistill (本项目) 自动为图像打标签,以便用于训练计算机视觉模型。
Inference 一款易于使用、可直接投入生产的计算机视觉推理服务器,支持部署多种主流模型架构及微调后的模型。
Notebooks 计算机视觉任务教程,从训练最先进模型到目标跟踪,再到统计区域内物体数量,应有尽有。
Collect 基于 CLIP 技术的自动化、智能化数据采集工具。

版本历史

v0.1.262024/02/13
v0.1.252024/02/13
v0.1.22023/06/09

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

155.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|4天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架