首页
/ HomeObjects-3K 数据集实战指南:用 YOLO26 训练室内家居物体检测模型

HomeObjects-3K 数据集实战指南:用 YOLO26 训练室内家居物体检测模型

2026-09-04 15:03:29作者:彭桢灵Jeremy

HomeObjects-3K 是 Ultralytics 官方发布的室内物体检测数据集:2,689 张室内图像(2,285 张训练 / 404 张验证),覆盖床、沙发、电视、笔记本电脑等 12 类常见家居物品。本文基于仓库中的 HomeObjects-3K 数据集文档数据集配置文件,讲解数据集的构成、YOLO 标注格式、HomeObjects-3K.yaml 的每个字段含义、首次训练时数据集自动下载的底层机制,以及如何用一条 Python 或 CLI 命令完成 YOLO26 模型的训练。读完本文,你可以直接在本仓库内找到该数据集的完整配置、复现训练流程,并理解从数据校验到自动下载解压的完整调用链。

数据集概览

HomeObjects-3K 面向室内场景理解,标注的是日常家居环境中高频出现的物体,目标场景包括智能家居、机器人导航、增强现实(AR)以及学术研究与教学。与 COCO 等大规模综合数据集不同,它的定位是:

  • 领域聚焦:全部为室内家居场景(bedroom、living room 一类环境中的床、沙发、桌椅、灯具、电视、衣柜等);
  • 规模适中:390 MB 左右、2,689 张图,首次使用时自动下载,适合在消费级硬件上快速跑通"训练—验证—导出"全流程;
  • 开箱即用:标注已采用 Ultralytics YOLO 格式,可直接用于 物体检测跟踪 管线,无需格式转换。

数据划分

数据集预定义为两个子集,由 HomeObjects-3K.yaml 配置声明:

Split 图像数 说明
Train 2,285 含标注家居物体的室内场景,用于训练
Validation 404 留出集,用于评估模型性能

注意:没有单独的 test 划分,验证集同时承担"评估"角色。这意味着若需严谨的泛化结论,建议在验证集之外自行保留少量图像做二次检查,或使用仓库文档中的 K 折交叉验证 方式评估。

12 个目标类别

数据集覆盖家具、电器、装饰三类家居物品,类别与标签 ID 的对应关系在 HomeObjects-3K.yamlnames 字段中定义:

ID 类别 所属分组
0 bed(床) 家具
1 sofa(沙发) 家具
2 chair(椅子) 家具
3 table(桌子) 家具
4 lamp(灯) 家居用品
5 tv(电视) 电器
6 laptop(笔记本电脑) 电器
7 wardrobe(衣柜) 家具
8 window(窗户) 建筑结构
9 door(门) 建筑结构
10 potted plant(盆栽) 装饰
11 photo frame(相框) 装饰

选类逻辑是"现实室内环境中最常遇到的物体":床、沙发、椅子、桌子、灯、电视、笔记本、衣柜、窗、门、盆栽、相框——这 12 类同时支撑机器人导航(门、窗、家具布局)、AR 场景叠加(电视、衣柜上叠加信息)等下游任务。

数据集 YAML 配置详解

数据集的全部配置集中在仓库内的 ultralytics/cfg/datasets/HomeObjects-3K.yaml,这是官方维护的权威版本:

# Ultralytics AGPL-3.0 License
# HomeObjects-3K dataset by Ultralytics
# Example usage: yolo train data=HomeObjects-3K.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── homeobjects-3K ← downloads here (390 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list
path: homeobjects-3K # dataset root dir
train: images/train # train images (relative to 'path') 2285 images
val: images/val # val images (relative to 'path') 404 images

# Classes
names:
  0: bed
  1: sofa
  2: chair
  3: table
  4: lamp
  5: tv
  6: laptop
  7: wardrobe
  8: window
  9: door
  10: potted plant
  11: photo frame

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/homeobjects-3K.zip

各字段的作用(结合仓库源码行为说明):

  • path:数据集根目录名。下载后解压目录名为 homeobjects-3Ktrain/val 均相对于它解析。
  • train / val:训练/验证图像目录。检测数据集的 YAML 必须同时包含这两个键——源码中 check_det_dataset 会显式校验,缺失 trainval 时直接抛出 SyntaxError'train' and 'val' are required in all data YAMLs);若写成 validation 会自动重命名为 val 并告警。
  • names类别ID: 类别名 映射。源码同样要求 names(或整数 nc)必须存在,二者同时出现时长度必须一致,且 nc 会自动推导为 len(names),即本数据集的 12。
  • download:可选字段。当本地找不到验证集图像时,框架检测到该字段以 http 开头且以 .zip 结尾,就会走自动下载路径(见下节)。

自动下载机制:源码级剖析

文档承诺"数据集在首次使用时自动下载",这一行为的实现链路在仓库中清晰可查:

  1. 解析数据集文件名。当你传入 data="HomeObjects-3K.yaml" 时,check_det_dataset 先经 check_file 解析:若文件不在本地且不是 URL,会执行递归 glob 搜索(ROOT / "**" / file)在本仓库中定位 ultralytics/cfg/datasets/HomeObjects-3K.yaml,因此你甚至不需要写完整路径,直接给文件名即可。
  2. 校验 YAML 结构:检查 train/val/names 等键的类型与存在性,并推断类别数 nc
  3. 解析路径path 若不存在且非绝对路径,会被拼接到全局数据集目录 DATASETS_DIR(定义于 ultralytics/utils/init.py,默认为系统 datasets 目录,可通过 settings 中的 datasets_dir 修改)。
  4. 触发下载:当 val 指向的图像目录不存在、且 YAML 中有 download 字段时,调用 safe_download(url=s, dir=DATASETS_DIR, delete=True) 下载 zip 并解压到 DATASETS_DIR,完成后打印 success ✅ (耗时s), saved to <DATASETS_DIR>。下载脚本还支持 bash <cmd> 与内联 Python 脚本两种形式。

从源码结构看,这套机制对所有 Ultralytics 数据集 YAML 通用——HomeObjects-3K 只是提供了标准的 zip 下载 URL,因此"首次训练即自动拉取数据、解压到 datasets 目录"无需任何手动步骤,这也是它适合初学者入门的关键原因。

快速开始:训练 YOLO26

以 YOLO26n(yolo26.yaml 定义的网络)在 HomeObjects-3K 上训练 100 个 epoch、图像尺寸 640 为例:

Python

from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolo26n.pt")

# 在 HomeObjects-3K 数据集上训练
model.train(data="HomeObjects-3K.yaml", epochs=100, imgsz=640)

CLI

yolo detect train data=HomeObjects-3K.yaml model=yolo26n.pt epochs=100 imgsz=640

关键参数说明:

参数 示例值 说明
data HomeObjects-3K.yaml 数据集 YAML;可写文件名(仓库内自动定位)或本地完整路径
model / 构造函数 yolo26n.pt 检测预训练权重;n/s/m/l/x 等规模可选
epochs 100 训练轮数;390 MB 规模的数据在单卡 GPU 上通常数小时到一天量级,可按早停情况调整
imgsz 640 训练输入边长;该数据集以室内中景为主,640 是平衡精度与显存的默认起点

更多训练参数(batchpatience、数据增强、设备选择等)可参考 Training 指南。训练完成后,典型后续步骤包括:

  • 验证model.val(data="HomeObjects-3K.yaml"),在 404 张验证集上查看 mAP 等指标;
  • 基准测试:对比不同模型规模或导出格式的性能,见 Benchmark 指南
  • 导出部署:将最优权重导出为 ONNX / TensorRT 等格式用于端侧实时推理(原数据集文档配套视频演示了 Detection、Validation 与 ONNX Export 的完整流程);
  • 跟踪:在同一数据集训练出的检测器上挂接多目标跟踪,见 Track 指南

典型应用场景

HomeObjects-3K 面向的下游应用(继承自官方文档):

  • 室内物体检测:用 YOLO26 等模型在图像中实时定位床、椅子、灯、笔记本电脑等家居物品,实现室内场景的实时理解;
  • 场景布局解析:帮助机器人与智能家居系统理解房间结构——门、窗、家具的相对位置——从而安全导航并与环境交互;
  • AR 应用:为增强现实 App 提供物体识别能力,例如检测电视、衣柜后在其上叠加附加信息或特效;
  • 教育与科研:作为现成数据集,供学生和研究人员以真实室内样本练习物体检测全流程;
  • 家庭资产盘点:自动检测并列出照片/视频中的家居物品,可用于物品管理、空间整理或房产展示中的家具可视化。

许可证与引用

HomeObjects-3K 由 Ultralytics 团队开发并发布,采用 AGPL-3.0 许可证(见仓库根目录 LICENSE),支持在保留署名与遵守许可证条款的前提下用于开源研究与商业场景。若在研究中使用本数据集,建议按以下信息引用:

@dataset{Jocher_Ultralytics_Datasets_2025,
    author = {Jocher, Glenn and Rizwan, Muhammad},
    license = {AGPL-3.0},
    month = {May},
    title = {Ultralytics Datasets: HomeObjects-3K Detection Dataset},
    version = {1.0.0},
    year = {2025}
}

常见问题(FAQ)

Q1:HomeObjects-3K 是做什么用的? 用于在室内场景中检测日常家居物品(床、沙发、电视、灯等),适配智能家居、机器人、AR 与室内监控系统,既可用于实时端侧部署,也适合学术研究。

Q2:数据集有多少图像和类别? 共 2,689 张图像——2,285 张训练、404 张验证,无独立 test 划分;每张图像均按 12 个类别标注(bed、sofa、chair、table、lamp、tv、laptop、wardrobe、window、door、potted plant、photo frame)。

Q3:为什么选择这 12 个类别? 它们是最常出现的家居物品集合,旨在还原真实室内环境,并支撑机器人导航、AR/VR 场景理解等任务。

Q4:如何下载数据集? 无需手动操作。首次使用 data="HomeObjects-3K.yaml" 训练时(390 MB),框架会自动拉取图像与标注并解压到本地 datasets 目录;更多检测数据集可浏览 检测数据集总览

Q5:如何用它训练 YOLO 模型? 准备 HomeObjects-3K.yaml 配置与预训练权重(如 YOLO26 / 模型总览),然后用上文的一条 Python 或 CLI 命令启动训练,并按需调整 epochsimgszbatch 等参数。

Q6:适合初学者吗? 适合。标准化的 YOLO 格式标注加上紧凑的数据规模,使它成为学生与爱好者入门真实室内物体检测的良好起点。

Q7:标注格式与 YAML 在哪里看? 标注为标准 YOLO 边界框格式(class cx cy w h,归一化坐标),与大多数检测管线兼容;配置见前文 Dataset YAML 一节。

小结

HomeObjects-3K 的价值在于"小而全":一份仓库内可直接引用的 YAML 配置、12 类室内家居标注、自动下载与标准训练入口,构成了从数据到模型的最低摩擦路径。对需要在室内场景做物体检测、机器人布局理解或 AR 叠加的开发者,它是快速验证方案可行性、再扩展到自有标注数据(或更大规模数据集)的合适跳板。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
528
588
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
906
1.83 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
891
5.79 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.53 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.34 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
988
506
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384