Skip to content

Roboflow 100数据集

Roboflow开发并由Intel赞助的Roboflow 100是一个开创性的对象检测基准测试。它包含了从超过90,000个公共数据集中采样的100个多样化数据集。该基准测试旨在测试模型对各种领域的适应性,包括医疗保健、航空影像和电子游戏。

Roboflow 100概览

主要特点

  • 包含七个领域的100个数据集:航空、电子游戏、显微镜、水下、文档、电磁和现实世界。
  • 该基准测试包含224,714张图像,涵盖805个类别,得益于超过11,170小时的标注工作。
  • 所有图像均调整为640x640像素,重点在于消除类别模糊性并过滤掉代表性不足的类别。
  • 标注包括对象的边界框,使其适用于训练和评估对象检测模型。

数据集结构

Roboflow 100数据集分为七个类别,每个类别包含一组不同的数据集、图像和类别:

  • 航空:包含7个数据集,总计9,683张图像,涵盖24个不同类别。
  • 电子游戏:包括7个数据集,涵盖11,579张图像,跨越88个类别。
  • 显微镜:包含11个数据集,总计13,378张图像,涵盖28个类别。
  • 水下:包含5个数据集,涵盖18,003张图像,跨越39个类别。
  • 文档:包含8个数据集,总计24,813张图像,分为90个类别。
  • 电磁:包含12个数据集,总计36,381张图像,涵盖41个类别。
  • 现实世界:最大的类别,包含50个数据集,提供110,615张图像,跨越495个类别。

这种结构为对象检测模型提供了一个多样化和广泛的测试平台,反映了现实世界的应用场景。

基准测试

数据集基准测试通过使用标准化的指标(如准确性平均精度均值和F1分数)来评估机器学习模型在特定数据集上的性能。

基准测试

基准测试结果将存储在"ultralytics-benchmarks/evaluation.txt"中

基准测试示例

import os
import shutil
from pathlib import Path

from ultralytics.utils.benchmarks import RF100Benchmark

# 初始化RF100Benchmark并设置API密钥
benchmark = RF100Benchmark()
benchmark.set_key(api_key="YOUR_ROBOFLOW_API_KEY")

# 解析数据集并定义文件路径
names, cfg_yamls = benchmark.parse_dataset()
val_log_file = Path("ultralytics-benchmarks") / "validation.txt"
eval_log_file = Path("ultralytics-benchmarks") / "evaluation.txt"

# 在RF100的每个数据集上运行基准测试
for ind, path in enumerate(cfg_yamls):
    path = Path(path)
    if path.exists():
        # 修复YAML文件并运行训练
        benchmark.fix_yaml(str(path))
        os.system(f"yolo detect train data={path} model=yolo11s.pt epochs=1 batch=16")

        # 运行验证和评估
        os.system(f"yolo detect val data={path} model=runs/detect/train/weights/best.pt > {val_log_file} 2>&1")
        benchmark.evaluate(str(path), str(val_log_file), str(eval_log_file), ind)

        # 删除'runs'目录
        runs_dir = Path.cwd() / "runs"
        shutil.rmtree(runs_dir)
    else:
        print("YAML文件路径不存在")
        continue

print("RF100基准测试完成!")

应用

Roboflow 100对于与计算机视觉深度学习相关的各种应用非常有价值。研究人员和工程师可以使用此基准测试来:

  • 在多领域背景下评估对象检测模型的性能。
  • 测试模型对超出常见对象识别的现实世界场景的适应性。
  • 在多样化的数据集(包括医疗保健、航空影像和电子游戏中的数据集)上基准测试对象检测模型的能力。 如需更多关于实际应用的想法和灵感,请务必查看我们关于实际项目的指南

使用方法

Roboflow 100 数据集可在 GitHubRoboflow Universe 上获取。

您可以直接从 Roboflow 100 GitHub 仓库访问它。此外,在 Roboflow Universe 上,您只需点击每个数据集内的导出按钮,即可灵活下载单个数据集。

样本数据和标注

Roboflow 100 包含从各种角度和领域捕获的多样化图像和视频数据集。以下是 RF100 基准测试中标注图像的示例。

Sample Data and Annotations

Roboflow 100 基准测试中可以看到的多样性,相较于传统基准测试中通常专注于在有限领域内优化单一指标,是一个显著的进步。

引用和致谢

如果您在研究或开发工作中使用了 Roboflow 100 数据集,请引用以下论文:

@misc{2211.13523,
    Author = {Floriana Ciaglia and Francesco Saverio Zuppichini and Paul Guerrie and Mark McQuade and Jacob Solawetz},
    Title = {Roboflow 100: A Rich, Multi-Domain Object Detection Benchmark},
    Eprint = {arXiv:2211.13523},
}

我们感谢 Roboflow 团队和所有贡献者为创建和维护 Roboflow 100 数据集所做的辛勤工作。

如果您有兴趣探索更多数据集以增强您的目标检测和机器学习项目,欢迎访问我们全面的数据集集合

常见问题

什么是 Roboflow 100 数据集,它对目标检测有何重要意义?

Roboflow 100 数据集由 Roboflow 开发并由 Intel 赞助,是一个关键的目标检测基准测试。它包含来自超过 90,000 个公共数据集的 100 个多样化数据集,涵盖医疗、航空影像和电子游戏等领域。这种多样性确保了模型能够适应各种现实世界场景,增强其鲁棒性和性能。

如何使用 Roboflow 100 数据集来基准测试我的目标检测模型?

要使用 Roboflow 100 数据集进行基准测试,您可以实现 Ultralytics 库中的 RF100Benchmark 类。以下是一个简要示例:

基准测试示例

import os
import shutil
from pathlib import Path

from ultralytics.utils.benchmarks import RF100Benchmark

# 初始化 RF100Benchmark 并设置 API 密钥
benchmark = RF100Benchmark()
benchmark.set_key(api_key="YOUR_ROBOFLOW_API_KEY")

# 解析数据集并定义文件路径
names, cfg_yamls = benchmark.parse_dataset()
val_log_file = Path("ultralytics-benchmarks") / "validation.txt"
eval_log_file = Path("ultralytics-benchmarks") / "evaluation.txt"

# 在 RF100 中的每个数据集上运行基准测试
for ind, path in enumerate(cfg_yamls):
    path = Path(path)
    if path.exists():
        # 修复 YAML 文件并运行训练
        benchmark.fix_yaml(str(path))
        os.system(f"yolo detect train data={path} model=yolo11n.pt epochs=1 batch=16")

        # 运行验证和评估
        os.system(f"yolo detect val data={path} model=runs/detect/train/weights/best.pt > {val_log_file} 2>&1")
        benchmark.evaluate(str(path), str(val_log_file), str(eval_log_file), ind)

        # 删除 'runs' 目录
        runs_dir = Path.cwd() / "runs"
        shutil.rmtree(runs_dir)
    else:
        print("YAML 文件路径不存在")
        continue

print("RF100 基准测试完成!")

Roboflow 100 数据集涵盖哪些领域?

Roboflow 100 数据集涵盖七个领域,每个领域为目标检测模型提供了独特的挑战和应用:

  1. 航空: 7 个数据集,9,683 张图像,24 个类别
  2. 电子游戏: 7 个数据集,11,579 张图像,88 个类别
  3. 显微镜: 11 个数据集,13,378 张图像,28 个类别
  4. 水下: 5 个数据集,18,003 张图像,39 个类别
  5. 文档: 8 个数据集,24,813 张图像,90 个类别
  6. 电磁: 12 个数据集,36,381 张图像,41 个类别
  7. 现实世界: 50 个数据集,110,615 张图像,495 个类别 这种设置使得可以在不同的现实应用中对模型进行广泛而多样的测试。

如何访问和下载 Roboflow 100 数据集?

Roboflow 100 数据集可以在 GitHubRoboflow Universe 上访问。你可以从 GitHub 下载整个数据集,或者在 Roboflow Universe 上使用导出按钮选择单个数据集。

在我的研究中引用 Roboflow 100 数据集时应该包含什么?

在研究中使用 Roboflow 100 数据集时,请确保正确引用。以下是推荐的引用格式:

@misc{2211.13523,
    Author = {Floriana Ciaglia and Francesco Saverio Zuppichini and Paul Guerrie and Mark McQuade and Jacob Solawetz},
    Title = {Roboflow 100: A Rich, Multi-Domain Object Detection Benchmark},
    Eprint = {arXiv:2211.13523},
}

更多详情,请参阅我们的综合数据集集合


📅 Created 8 months ago ✏️ Updated 13 days ago

Comments