Roboflow 100 数据集#
由 Intel 赞助的 Roboflow 100 是一个具有突破性的目标检测基准数据集。它包含 100 个不同的数据集。该基准专门用于测试计算机视觉模型(例如 Ultralytics YOLO 模型)对不同领域的适应能力,包括医疗保健、航拍图像和视频游戏。
Ultralytics 提供两种许可选项以适应不同的使用场景:
- AGPL-3.0 License:此经 OSI 批准的开源许可证非常适合学生和爱好者,可促进开放式协作和知识共享。有关更多详细信息,请参阅 LICENSE 文件并访问我们的 AGPL-3.0 License 页面。
- Enterprise License:对于开发和生产环境的使用,此许可证能够将 Ultralytics 软件和 AI 模型无缝集成到商业产品和服务中(包括内部工具、自动化工作流和生产部署),从而绕过 AGPL-3.0 的开源要求。要开始使用,请通过 Ultralytics Licensing 联系我们。
主要特性#
- 多元化领域:涵盖了七个不同领域的 100 个数据集:航拍、视频游戏、显微镜、水下、文档、电磁和现实世界。
- 规模:该基准包含来自 805 个类别的 224,714 张图像,代表了超过 11,170 小时的数据标注工作量。
- 标准化:所有图像均经过预处理并调整大小为 640x640 像素,以进行一致的评估。
- 干净的评估:专注于消除类别歧义并过滤掉代表性不足的类别,以确保更干净的模型评估。
- 标注:包含用于物体的bounding boxes,适用于使用诸如mAP等指标来训练和评估目标检测模型。
数据集结构#
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 个类别。
此结构为目标检测模型提供了一个多样化且广泛的测试平台,反映了在各种 Ultralytics Solutions 中发现的大量现实世界应用场景。
基准测试#
数据集基准测试涉及使用标准化指标在特定数据集上评估机器学习模型的性能。常用指标包括准确率、平均精度均值 (mAP) 和F1 分数。你可以在我们的YOLO 性能指标指南中了解有关这些内容的更多信息。
每个输出都分组在一个 runs/<task>/multitrain/ 目录中:每个数据集都在其自己的子目录中进行微调(拥有自己的 results.png),并且数据集指标和平均指标会写入 multitrain_results.json,同时附带一个 multitrain_results.png 条形图。model.train() 调用还返回一个用于程序化访问的 {dataset: metrics} 字典。
下面的脚本从 Roboflow 下载 datasets_links.txt 中列出的 Roboflow 100 数据集,然后在一次 model.train() 调用中跨整个集合微调单个基础模型(例如 YOLO26n)。传递数据集列表将串行微调每个数据集上的基础模型,并自动可视化跨数据集的结果。
import re
from pathlib import Path
from roboflow import Roboflow
from ultralytics import YOLO
from ultralytics.utils import ASSETS_URL, LOGGER, YAML
from ultralytics.utils.downloads import safe_download
# Download the RF100 datasets (requires a Roboflow API key)
rf = Roboflow(api_key="YOUR_ROBOFLOW_API_KEY")
safe_download(f"{ASSETS_URL}/datasets_links.txt") # list of RF100 dataset links
datasets = []
for line in Path("datasets_links.txt").read_text().splitlines():
try:
_, _url, workspace, project, version = re.split("/+", line.strip())
location = f"rf-100/{project}-{version}"
rf.workspace(workspace).project(project).version(version).download("yolov8", location=location)
yaml = Path(location) / "data.yaml"
cfg = YAML.load(yaml) # point train/val at the downloaded image folders
cfg["train"], cfg["val"] = "train/images", "valid/images"
YAML.save(yaml, cfg)
datasets.append(str(yaml))
except Exception as e:
LOGGER.warning(f"Failed to prepare dataset from {line!r}: {e}")
# Fine-tune one base model across all RF100 datasets and visualize the cross-dataset results
model = YOLO("yolo26n.pt")
results = model.train(data=datasets, epochs=100, imgsz=640) # {dataset: metrics}
# Per-dataset runs, multitrain_results.json (per-dataset + mean), and multitrain_results.png are saved
# together under runs/detect/multitrain. Read results in-memory or from the JSON for custom post-processing.
for dataset, metrics in results.items():
if metrics: # None if that dataset failed to train
print(f"{dataset}: mAP50-95 = {metrics['metrics/mAP50-95(B)']:.4f}")应用#
Roboflow 100 对于与计算机视觉和深度学习相关的各种应用非常宝贵。研究人员和工程师可以利用此基准来:
- 在多领域背景下评估目标检测模型的性能。
- 测试模型在常见benchmark datasets(如COCO或PASCAL VOC)之外的真实世界场景中的适应性和robustness。
- 在多样化的数据集上基准测试目标检测模型的能力,包括医疗、航拍图像和视频游戏等专业领域。
- 比较不同神经网络架构和优化技术之间的模型性能。
- 识别可能需要专门的model training tips或诸如transfer learning等fine-tuning方法的特定领域挑战。
有关现实世界应用的更多想法和灵感,请探索我们的实用项目指南,或者查看 Ultralytics Platform 以简化模型训练和部署。
用法#
包含元数据和下载链接的 Roboflow 100 数据集可在官方 Roboflow 100 GitHub 仓库上获取。你可以直接从那里访问和利用该数据集来满足你的基准测试需求。一旦下载并准备好如上所示的数据集,就可以通过传递数据集 YAML 列表,在单个 model.train() 调用中跨整个集合对 Ultralytics 模型进行微调。
示例数据与标注#
Roboflow 100 由包含从各个角度和领域捕获的多种图像的数据集组成。以下是 RF100 基准中包含的标注图像示例,展示了对象和场景的多样性。诸如数据增强之类技术可以在训练期间进一步增强多样性。
在 Roboflow 100 基准中看到的多样性代表了对传统基准的重大进步,传统基准通常专注于在有限领域内优化单个指标。这种综合方法有助于开发出能够在众多不同场景下表现良好的更具鲁棒性和多功能性的计算机视觉模型。
引用与致谢#
如果你在研究或开发工作中使用 Roboflow 100 数据集,请引用原始论文:
@misc{rf100benchmark,
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},
Year = {2022},
Eprint = {arXiv:2211.13523},
url = {https://arxiv.org/abs/2211.13523}
}我们感谢 Roboflow 团队和所有贡献者为创建和维护 Roboflow 100 数据集作为计算机视觉社区的一项宝贵资源所做出的重大努力。
如果你有兴趣探索更多数据集以增强你的目标检测和机器学习项目,请随时访问我们的综合数据集集合,其中包含各种其他检测数据集。
常见问题解答#
什么是 Roboflow 100 数据集,它对于目标检测为何重要?#
Roboflow 100 数据集是目标检测模型的基准。它包含 100 个不同的数据集,涵盖医疗保健、航拍图像和视频游戏等领域。它的意义在于提供了一种标准化的方法,用于测试模型在广泛的现实世界场景中的适应性和鲁棒性,超越了传统的、通常受领域限制的基准。
Roboflow 100 数据集涵盖了哪些领域?#
Roboflow 100 数据集跨越七个不同的领域,为目标检测模型提供了独特的挑战:
- 航拍:7 个数据集(例如卫星图像、无人机视角)。
- 视频游戏:7 个数据集(例如来自各种游戏环境的对象)。
- 显微镜:11 个数据集(例如细胞、颗粒)。
- 水下:5 个数据集(例如海洋生物、水下物体)。
- 文档:8 个数据集(例如文本区域、表单元素)。
- 电磁:12 个数据集(例如雷达特征、光谱数据可视化)。
- 现实世界:50 个数据集(一个广泛的类别,包括日常物品、场景、零售等)。
这种多样性使 RF100 成为评估计算机视觉模型泛化能力的绝佳资源。
在我的研究中引用 Roboflow 100 数据集时应该包含什么?#
使用 Roboflow 100 数据集时,请引用原始论文以肯定创作者的贡献。以下是推荐的 BibTeX 引用:
@misc{rf100benchmark,
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},
Year = {2022},
Eprint = {arXiv:2211.13523},
url = {https://arxiv.org/abs/2211.13523}
}