Ultralytics YOLO 大词汇检测数据集 LVIS:lvis.yaml 配置解析与 YOLO26 训练实战
LVIS 是当前最主流的"大词汇"(large-vocabulary)目标检测与实例分割基准之一:它复用约 16 万张 COCO 图像,却将类别扩展到 1,203 个,并重点覆盖长尾稀有类别,是检验模型对低频类别识别能力的关键数据集。本文基于 Ultralytics 仓库中的官方文档 LVIS Dataset 与真实配置文件 lvis.yaml 展开,完整介绍数据集划分、YAML 配置结构、首次使用的自动下载机制(源码级原理),以及用 Python 和 CLI 两种方式训练 YOLO 模型的完整流程。
一、LVIS 数据集核心特性
LVIS 由 Facebook AI Research(FAIR)开发并发布,其定位是用"更大的词表 + 更完整的标注"推动检测与分割模型在稀有类别上的进展。核心特性如下:
- 规模:约 160,000 张图像,约 200 万个实例级标注,同时支持目标检测与实例分割两类任务;
- 词表:定义 1,203 个物体类别,既包含汽车、自行车、动物等常见物体,也覆盖雨伞、手提包、运动器材等细粒度类别;
- 标注形式:物体边界框 + 分割掩码(mask),并刻意强调稀有/长尾类别的标注完整性;
- 评估指标:检测任务用 mAP(mean Average Precision),分割任务用 mAR(mean Average Recall),便于横向对比;
- 与 COCO 的关系:LVIS 与 COCO 数据集 使用相同的图像,但划分(split)不同、标注词表大得多——COCO 只有 80 个类别,LVIS 有 1,203 个。
从类别命名方式可以直观感受其"长尾"设计:仓库中 lvis.yaml 的 names 映射采用"主名/同义词"的写法,例如:
names:
0: aerosol can/spray can
2: airplane/aeroplane
93: bicycle/bike/bike bicycle
206: car/car automobile/auto/auto automobile/automobile
792: person/baby/child/boy/girl/man/woman/human
1202: zucchini/courgette
这种同义词聚合方式来自 LVIS 原始标注体系,帮助不同标注者对同一物体给出的一致命名。
二、数据集划分结构
Ultralytics 的 lvis.yaml 定义了三个本地可用的划分:
| Split | 图像数 | 说明 |
|---|---|---|
| Train | 100,170 | 用于训练检测/分割模型 |
| Validation | 19,809 | 训练过程中留出的评估集 |
| Minival | 5,000 | 快速验证子集,与 COCO 的 val2017 集合完全一致 |
在上游 LVIS 基准中还存在约 20,000 张图像的留出测试集,其真值标注不公开——推理结果需提交到 LVIS 官方评测服务器(eval.ai 上的 LVIS challenge)打分,而非本地评估。
注意一个细节:YAML 中 path: lvis 且数据集下载到 datasets/lvis 目录,注释中明确了目录布局与总大小(约 20.7 GB):
# parent
# ├── ultralytics
# └── datasets
# └── lvis ← downloads here (20.7 GB)
三、lvis.yaml 配置文件详解
配置文件位于 ultralytics/cfg/datasets/lvis.yaml,整体分为四部分:
- 数据集根目录:
path: lvis(相对于 Ultralytics 的 datasets 目录); - 三个图像列表文件:
每个train: train.txt # train images (relative to 'path') 100170 images val: val.txt # val images (relative to 'path') 19809 images minival: minival.txt # minival images (relative to 'path') 5000 images.txt是一行一张图的清单,标注以 YOLO 格式随行给出; names类名映射:完整的 1,203 个类别(索引 0~1202),上文已给出示例;download下载脚本:一段可选的 Python 代码,首次训练时自动执行,见下一节。
配置如何被校验:check_det_dataset
训练时传入 data="lvis.yaml" 后,框架会调用 check_det_dataset 完成"校验 + 自动下载 + 路径解析"。从源码可以看到几个关键行为:
- 必填键检查:
train与val键必须存在(validation键会被自动重命名为val);names或nc至少有一个,且两者若同时给出则数量必须一致。LVIS 提供names,因此解析后nc被自动置为 1,203; - 路径解析:
train/val/test/minival等相对路径会被拼接到数据集根目录下并解析为绝对路径,这正是 LVIS 能带minival额外划分的原因——它在路径前缀遍历的键列表中(源码第 629 行for k in "train", "val", "test", "minival"); - 缺失时自动下载:若验证集路径不存在且
autodownload为真(默认),框架会取出 YAML 中的download脚本字段并执行(exec(s, {"yaml": data}),源码第 660 行); - 字体检查:由于类名含大量 Unicode 文本,加载前还会按需确保
Arial.Unicode.ttf字体可用(源码第 664 行check_font)。
自动下载到底下了什么
lvis.yaml 末尾的 download 脚本(源码 lvis.yaml 第 1222-1239 行)定义了完整下载流程:
from pathlib import Path
from ultralytics.utils import ASSETS_URL
from ultralytics.utils.downloads import download
# Download labels
dir = Path(yaml["path"]) # dataset root dir
urls = [f"{ASSETS_URL}/lvis-labels-segments.zip"]
download(urls, dir=dir.parent)
# Download data (test2017.zip excluded: LVIS has no 'test:' split and never reads it)
urls = [
"http://images.cocodataset.org/zips/train2017.zip", # 19G, 118k images
"http://images.cocodataset.org/zips/val2017.zip", # 1G, 5k images
]
download(urls, dir=dir / "images", threads=3)
可以读出三个实现事实:
- 标注包:YOLO 格式的 LVIS 标签(含分割多边形,
lvis-labels-segments.zip)从 Ultralytics 官方资源站下载并解压到datasets/下; - 图像包:直接复用 COCO 官方的
train2017.zip(约 19 GB)与val2017.zip(约 1 GB),以 3 线程并发下载(底层由 download/safe_download 实现,含重试机制); - 刻意排除
test2017.zip:注释明确说明 LVIS 配置没有test:划分、也从不读取该文件——测试集留作官方服务器评测,本地无需下载。
下载完成后,datasets/lvis/ 下即有 images/train2017、images/val2017 与 train.txt/val.txt/minival.txt 清单,总占用约 20.7 GB。
四、在 LVIS 上训练 YOLO 模型
官方文档给出的基准示例是:用 YOLO26n 预训练权重,在 LVIS 上训练 100 个 epoch、输入分辨率 640。数据集(20.7 GB)会在首次使用时自动下载。
Python API
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="lvis.yaml", epochs=100, imgsz=640)
CLI
# Start training from a pretrained *.pt model
yolo detect train data=lvis.yaml model=yolo26n.pt epochs=100 imgsz=640
两点实践说明:
- 传入
data="lvis.yaml"即可,check_det_dataset会把裸名称补全为仓库内置的 YAML(源码第 567-569 行支持coco8→coco8.yaml这类简写); - 完整的训练超参数(
batch、close_mosaic、lr0等)参见 Training 文档;训练后可用 Validation 模式 在val或minival上评估、用 Predict 模式 做推理。
马赛克数据增强
LVIS 训练 batch 的一个典型特征是马赛克增强:多张含大量类别的复杂场景图像被拼接成一张训练图,提升每个 batch 内物体与场景的多样性,帮助模型适应不同尺度、宽高比与上下文。这一增强由 Ultralytics 数据流水线默认开启(mosaic=1.0),配合 1,203 类的长尾分布,可在有限采样内让模型"看到"更多稀有类别组合。
五、典型应用场景
LVIS 常被用于训练和评估各类深度学习模型:检测方向如 YOLO(见 YOLO26 模型文档)、Faster R-CNN、SSD;分割方向如 Mask R-CNN。它之所以成为长尾类别能力的关键基准,是因为三点组合:大词表 + 高标注量 + 标准化 mAP/mAR 指标。如果你的业务场景涉及开放式物体识别(商品、零部件、户外细碎物品等类别极多的场景),在 LVIS 上验证模型对低频类别的召回表现,比在 COCO 的 80 类上验证更具说服力。
六、引用与致谢
若在研究或开发中使用 LVIS 数据集,请引用原始论文:
@inproceedings{gupta2019lvis,
title={LVIS: A Dataset for Large Vocabulary Instance Segmentation},
author={Gupta, Agrim and Dollar, Piotr and Girshick, Ross},
booktitle={Proceedings of the {IEEE} Conference on Computer Vision and Pattern Recognition},
year={2019}
}
该数据集由 LVIS Consortium 创建并持续维护,是计算机视觉社区的重要公开资源。
七、FAQ
LVIS 数据集用于什么? 用于在大规模、长尾词表上训练与基准测试目标检测和实例分割模型。1,203 个类别、约 200 万实例标注,使其成为衡量 YOLO 等模型对常见与稀有类别识别能力的关键资源。
图像与类别数量?
lvis.yaml 覆盖 1,203 个类别:训练 100,170 张、验证 19,809 张、minival 5,000 张(与 COCO val2017 相同)。图像与 COCO 相同,但词表与标注密度大得多。
LVIS 与 COCO 的核心区别? 图像相同、划分与标注不同:类别从 80 个扩展到 1,203 个,并强调标注的完整性与多样性,用于推动检测/分割模型在细粒度、低频类别上的上限。
是否有测试集?
本地配置只有 train/val/minival 三个划分;上游另有约 20,000 张的留出测试集,真值不公开,需提交 LVIS 评测服务器打分。因此自动下载脚本也刻意跳过了 test2017.zip。
相关入口:数据集文档 docs/en/datasets/detect/lvis.md、COCO 对照文档 docs/en/datasets/detect/coco.md、配置文件 ultralytics/cfg/datasets/lvis.yaml、数据集校验与下载实现 ultralytics/data/utils.py。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00