本页目录

  • 快速开始
  • 概述
  • 功能特性
  • 预标注现有数据集
  • 安装
  • 硬件要求
  • 可用模型
  • 使用
  • 示例
  • 实用提示

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 系统内存,对于较大任务,推荐 32 GB 或更多。

可用模型

模型类别模型名称描述/说明
提示生成Mistral-7B-Instruct-v0.1语义丰富的提示
TinyLlama-1.1B-Chat-v1.0小型语言模型
Qwen2.5-1.5B-InstructQwen2.5 语言模型
简单随机生成器随机组合对象名称
脏话过滤Qwen2.5-1.5B-Instruct快速准确的 LM 脏话过滤器
图像生成SDXL-1.0慢速但准确(1024x1024 图像)
SDXL-Turbo快速但准确性较低(512x512 图像)
SDXL-Lightning快速且准确(1024x1024 图像)
Shuttle-3-Diffusion快速且准确(512x512 图像)
图像标注OWLv2开放词汇目标检测器
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