此页面由 AI 自动翻译。查看英文原版

本页目录

  • 快速入门
  • 概述
  • 特征
  • 预标注现有数据集
  • 安装
  • 硬件要求
  • 可用模型
  • 用法
  • 示例
  • 有用技巧

DataDreamer

DataDreamer 示例

快速入门

DataDreamer 是 Luxonis 的一个工具,用于两个相关的工作流:
  • 使用生成式 AI 和基础视觉模型从头开始生成合成数据集。
  • 预先标注现有图像数据集,以减少人工标注工作,然后进行审查和训练。
当您还没有足够的数据进行训练时,或者当您想在训练 Luxonis Train 之前加快数据集准备工作时,它会非常有用。要使用自定义类别生成数据集,您只需执行两个命令:
Command Line
1pip install datadreamer
2datadreamer --class_names person moon robot
有关完整的 CLI 表面,请参阅 API 参考以下是一些教程,您可以使用它们来开始使用 DataDreamer 生成数据和训练模型:有关更多信息,请访问 DataDreamer GitHub 仓库

概述

DataDreamer 流程图
DataDreamer 是一个先进的工具包,旨在促进边缘 AI 模型的开发,无论初始数据是否可用。DataDreamer 的独特功能包括:
  • 合成数据生成:消除对 AI 训练所需大量数据集的依赖。DataDreamer 使用户能够从头开始生成合成数据集,利用能够生成高质量、多样化图像的高级 AI 算法。
  • 真实数据预标注:对您已有的图像使用相同的标注管道来引导分类、对象检测和实例分割任务的标签。
  • 从基础模型中提取知识DataDreamer 利用嵌入在复杂预训练 AI 模型中的潜在知识。此功能允许将广泛的理解从这些“基础模型”转移到更小、定制的模型中,从而显著增强其功能。
  • 高效且强大的模型DataDreamer 的主要目标是能够创建紧凑的模型,这些模型在尺寸上适合集成到任何设备,并且在性能上足够强大以完成特定任务。

特征

  • 提示生成:使用强大的语言模型自动创建图像提示。提供的类别名称: ["horse", "robot"]生成的提示:“一张马和机器人和谐地共存于宁静的牧场中的照片。”
  • 图像生成:使用最先进的生成模型生成合成数据集。
生成的图像
  • 数据集标注:利用基础模型自动标记数据集。
标注的图像
  • 预标注现有数据:当您想要在手动质量检查之前获得初始标签时,可以在真实图像目录上运行 DataDreamer。
  • 边缘模型训练:训练高效的小型神经网络以进行边缘部署。(不属于此库的一部分)

预标注现有数据集

DataDreamer 可以完全跳过合成图像生成,并标注您已有的图像。当您想在不更改其余训练工作流的情况下加快标注速度时,这很有用。
Command Line
1datadreamer \
2  --task instance-segmentation \
3  --image_annotator owlv2-slimsam \
4  --save_dir dataset_path \
5  --class_names dumpling \
6  --annotate_only
--annotate_only 禁用了提示生成和图像生成,因此 DataDreamer 只运行标注阶段。将其与 --task--image_annotator 结合使用,可以在分类、检测和实例分割工作流之间切换。

安装

DataDreamer 可以从 PyPI 安装,也可以运行已发布的 Docker 镜像。
Command Line
1pip install datadreamer
Command Line
1docker pull ghcr.io/luxonis/datadreamer:latest
2docker run --rm -v "$(pwd):/app" ghcr.io/luxonis/datadreamer:latest --save_dir generated_dataset --device cpu
在支持 CUDA 的机器上运行容器时,请将 --gpus all--device cuda 一起使用。

硬件要求

  • 建议使用具有至少 16 GB 内存的 CUDA 兼容 GPU 以获得最佳体验。
  • 建议至少有 16 GB 系统 RAM,对于较大的任务,建议使用 32 GB 或更多。

可用模型

模型类别模型名称描述/备注
Prompt GenerationMistral-7B-Instruct-v0.1语义丰富的提示
TinyLlama-1.1B-Chat-v1.0小型语言模型
Qwen2.5-1.5B-InstructQwen2.5 语言模型
Simple random generator随机选择的对象名称组合
Profanity FilterQwen2.5-1.5B-Instruct快速准确的语言模型脏话过滤器
Image GenerationSDXL-1.0慢且准确(1024x1024 图像)
SDXL-Turbo快速且不太准确(512x512 图像)
SDXL-Lightning快速且准确(1024x1024 图像)
Shuttle-3-Diffusion快速且准确(512x512 图像)
Image AnnotationOWLv2开放词汇对象检测器
CLIP零样本图像分类
AIMv2零样本图像分类
SlimSAM零样本实例分割
SAM2.1零样本实例分割

用法

DataDreamer 可以直接通过 CLI 参数或 YAML 配置文件进行驱动。
Command Line
1datadreamer --save_dir path/to/save_directory --config configs/det_config.yaml
一些最重要的选项包括:
  • --task 用于选择 detectionclassificationinstance-segmentation
  • --dataset_format 用于选择 rawyolococovocluxonis-datasetcls-single
  • --image_annotator 用于选择检测器、分类器或分割堆栈
  • --device 用于在 cudacpu 之间进行选择
在原始格式下,DataDreamer 会生成图像,并附带 prompts.jsonannotations.json 文件。其他输出格式旨在直接集成到常见的训练流程中。

示例

Command Line
1datadreamer --save_dir path/to/save_directory --class_names person moon robot --prompts_number 20 --prompt_generator simple --num_objects_range 1 3 --image_generator sdxl-turbo
此命令会为指定的对象生成图像,并将它们及其注释保存在指定的目录中。该脚本允许通过各种参数自定义生成过程,以适应不同的需求和硬件配置。

有用技巧

  • 批量生成:在内存允许的情况下,增加 --batch_size_prompt--batch_size_image--batch_size_annotation 以提高吞吐量。
  • 更好的图像质量:当质量比速度更重要时,请优先选择 sdxl-lightningshuttle-3sdxl 而不是 sdxl-turbo
  • 图像选择:当您希望 DataDreamer 花费更多时间选择更好的生成结果时,请使用 --use_image_tester--image_tester_patience
  • 每张图像的对象数量:请将 --num_objects_range 设置得适中。当前图像生成器通常难以可靠地渲染超过 3 个对象。
  • 提示生成:当您想要比简单随机生成器更丰富的提示时,请使用 --prompt_generator tinylmqwen2