缺失 PPE 检测:使用 Construction-PPE 训练 Ultralytics YOLO
了解 Construction-PPE 如何标注缺失的头盔、背心和手套,然后训练 Ultralytics YOLO,让它在你自己的现场摄像头画面中检测缺失的 PPE。
Paula Derrenger9 分钟阅读
要可靠地检测缺失的 PPE,只标注摄像头能看到的内容。在新的 Ultralytics Construction-PPE 数据集中,躲在钢梁后面的头部不代表缺少头盔。只有实际可见且没有戴头盔的头部才会标注 no_helmet 框;被遮挡或位于画面之外的头部则完全不会标注为缺少装备。
我们于 2026 年 11 月 3 日在 Ultralytics 8.4.200 中发布了该数据集:包含 1,000 张图像、12 个类别和 14,863 个经过审核的边界框,涵盖人员、叉车、防护装备和可见的装备缺失情况;图像和标注采用 CC BY 4.0 许可。类别包括专门的 no_vest 和 forklift,标注由 Ultralytics 团队审核。本指南将介绍数据集内容、缺失 PPE 标注规则,以及如何在该数据集上训练、验证和部署 Ultralytics YOLO26 模型。
Construction-PPE 是一个经过审核、包含 12 个类别的 PPE 检测数据集#
Construction-PPE 是一个面向建筑和工业场所的原创目标检测数据集,由 Ultralytics 团队于 2026 年 11 月创建并开源。图像涵盖建筑工地、车间、仓库、装卸区和维护作业,呈现了多样的视角、光照、工人分布和叉车活动。该数据集旨在教会检测器识别防护装备的外观,以及装备明显缺失时的样子。
根据 Construction-PPE 数据集文档,训练前需要了解以下关键信息:
- 规模: 1,000 张图像、12 个类别,共 14,863 个边界框
- 数据划分: 固定的 800/200 训练集/验证集划分,没有单独的测试集
- 格式: 边界框采用 Ultralytics YOLO 格式,无需转换即可用于训练
- 图像: 人工采集和生成的图像,包含横向、纵向和方形构图,分辨率各异
- 标注: 专家人工标注结合 AI 自动标注,由 Ultralytics 团队于 2026 年 11 月完成
- 许可: 图像和标注采用知识共享署名 4.0 国际许可协议,允许在注明出处的情况下用于商业用途
生成的图像并非真实事件的照片,因此,任何在此数据集上训练的模型都必须最终在你自己的摄像头录像上进行测试。
你可以在 Ultralytics Platform 上浏览所有图像和标注、将数据集克隆到你的工作区,或直接使用该数据集进行训练。

每个 PPE 类别都有对应的装备缺失类别#
这 12 个类别分为三组:五个装备类别、五个装备缺失类别,以及两个用于标注现场人员和车辆的类别。下面的 ID 与标注和 construction-ppe.yaml 一致:
| ID | 类别 | 标注框的对象 |
|---|---|---|
| 0 | helmet | 防护头盔或安全帽 |
| 1 | gloves | 工作手套 |
| 2 | vest | 高可视度安全背心、夹克或衬衫 |
| 3 | boots | 防护工作靴或工作鞋 |
| 4 | goggles | 防护眼镜 |
| 5 | Person | 人员 |
| 6 | no_helmet | 可见但未戴头盔的头部 |
| 7 | no_goggle | 可见但未佩戴防护眼镜的眼部区域 |
| 8 | no_gloves | 可见但未戴手套的手部 |
| 9 | no_boots | 可见但未穿防护工作鞋的脚部或鞋子 |
| 10 | forklift | 叉车 |
| 11 | no_vest | 可见但未穿高可视度安全服的躯干 |
每个装备类别都有对应的“缺失”类别。这种配对为模型提供了装备缺失的直接示例,因此模型可以将裸露的头部或未穿背心的躯干作为独立目标标出,而不必让你的代码根据缺少的检测框来推断装备缺失。

缺失 PPE 标注的是可见身体部位,而不是推测#
装备缺失类别需要有精确的定义。如果标注人员把所有看不到头盔的头部都标上框,包括被横梁挡住或被画面边缘截断的头部,模型就会学到“被遮挡本身就代表违规”。
Construction-PPE 对全部五个装备缺失类别采用统一规则:缺失装备框标注的是装备本应覆盖的可见身体区域;身体部位被遮挡或位于画面之外,本身并不能证明装备缺失。具体来说:
- 可见且未戴头盔的头部应标注
no_helmet框。 - 可见的裸露手部应标注
no_gloves框,而不是藏在工具箱后面的手。 - 可见但未穿高可视度服装的躯干应标注
no_vest框。 - 可见但未穿防护工作鞋的脚部或鞋子应标注
no_boots框。 - 可见但未佩戴防护眼镜的眼部区域应标注
no_goggle框。 - 装备类别标注的是可见装备本身,因此背心有一个框,穿着背心的人则有另一个框。

左侧工人的头部被自己搬运的胶合板遮挡,因此标注既不表示戴了头盔,也不表示没戴头盔。右侧工人可见的裸露头部和未穿高可视度服装的可见躯干,都标注了装备缺失框。
这条规则不仅适用于此数据集,也适用于数据标注。如果你用自己的摄像头图像扩展 Construction-PPE,就要遵循同一规则进行标注,否则模型会针对同一个问题收到两种相互矛盾的答案。我们的 Academy 课程介绍了如何将这类规则写进标注指南,以及人在回路中的审核为何能发现自动化流程遗漏的情况,详见标注最佳实践。
Forklift 和 no_vest 让车辆区域也能纳入同一个模型#
许多现场规定涉及人员与车辆共用空间,而不只是装备缺失。forklift 类别将车辆和工人纳入同一个检测器,因此一个 YOLO26 模型就能在一次推理中返回叉车、附近人员,以及未穿高可视度服装的可见躯干。
借助专门的 no_vest 类别,在 Construction-PPE 上训练的模型可以在一次推理中为装卸区返回 forklift、Person 和 no_vest 框。

将这些框关联成一个事件属于应用逻辑:把每个 no_vest 框与正确的人员匹配,确定叉车附近的判定范围,并设置某种情况需要持续多久。若要测量距离,距离计算指南可以计算所选检测框中心之间的像素距离;实际距离则需要进行摄像头标定。
几行代码即可在 Construction-PPE 上训练 YOLO26#
先安装 Ultralytics Python 包。首次使用时,YOLO 会下载并解压数据集压缩包。
from ultralytics import YOLO
# 从使用 COCO 预训练的 YOLO26 nano 模型开始
model = YOLO("yolo26n.pt")
# 使用 Construction-PPE 压缩包进行训练
model.train(
data="https://github.com/ultralytics/assets/releases/download/v0.0.0/construction-ppe.zip",
epochs=100,
imgsz=640,
)对应的 CLI 命令只有一行:
yolo detect train model=yolo26n.pt data=https://github.com/ultralytics/assets/releases/download/v0.0.0/construction-ppe.zip epochs=100 imgsz=640YOLO26n 是检查训练流程是否正常的合理起点。在现场摄像头的拍摄距离下,手套、护目镜和靴子都是小目标,因此在确定模型前,可以对比更大的 YOLO26s 或 YOLO26m;训练文档介绍了图像尺寸、批量大小和其他所有参数。如果你更喜欢在浏览器中使用免费 GPU,Ultralytics 也提供了 Construction-PPE 的 Colab 笔记本。
不想写代码?在 Ultralytics Platform 上训练#
在 Ultralytics Platform 上打开 Construction-PPE 数据集,然后使用 YOLO26 模型开始云端训练,并在浏览器中选择训练轮数、图像尺寸和 GPU。Platform 会跟踪损失曲线、每轮的精确率、召回率和 mAP,还能让你并排比较不同训练运行。若要添加自己的摄像头图像,请从 Explore 克隆数据集(参见 Ultralytics Platform Explore 指南),上传图像,然后在标注编辑器中进行标注;Smart Annotation 可以先生成框供你审核。
按类别评估模型,不要只看一个平均值#
单一的 mAP 数值无法体现安全团队需要了解的情况。模型可能因为能可靠地检测人员、头盔和背心而获得不错的总体分数,却漏掉大多数 no_gloves 或 no_goggle 情况。验证时要查看各类别的指标:
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt")
metrics = model.val() # uses the dataset's 200-image validation split
print(f"mAP50: {metrics.box.map50:.3f} mAP50-95: {metrics.box.map:.3f}")
for c in metrics.box.ap_class_index:
print(f"{model.names[c]:>10} mAP50-95: {metrics.box.maps[c]:.3f}")先查看装备缺失类别对应的结果行,并打开验证时保存的混淆矩阵。如果 helmet 和 no_helmet 混淆,或某个缺失类别很少被检测到,就检查漏检图像,并确认训练集划分中该类别包含多少个实例,然后再考虑其他调整。YOLO 性能指标指南介绍了如何解读各类图表。
这 200 张验证图像与训练集来自同一批数据。部署前,请从实际运行模型的摄像头采集一组独立数据,并在这组数据上再次验证,用它来衡量模型在你现场的性能。
将缺失 PPE 检测结果转化为可审核的事件#
由于装备缺失本身就是一个类别,最初的审核规则可以很简单:标记所有包含置信度超过阈值的缺失 PPE 框的画面。
from ultralytics import YOLO
MISSING = {"no_helmet", "no_goggle", "no_gloves", "no_boots", "no_vest"}
model = YOLO("runs/detect/train/weights/best.pt")
for r in model.predict("site_camera_frame.jpg", conf=0.4):
for cls, conf in zip(r.boxes.cls.int().tolist(), r.boxes.conf.tolist()):
if r.names[cls] in MISSING:
print(f"Review: {r.names[cls]} ({conf:.2f})")处理视频时,将 predict 替换为 track。目标跟踪会为跨帧检测结果分配 ID。然后,应用程序将每个缺失 PPE 框与某个人员轨迹关联起来,例如,检查其中是否包含 Person 框;再应用持续时间和事件规则,让审核人员看到一个事件,而不是一连串画面:
从 Ultralytics 8.4.202 起,保存 RTSP 流和网络摄像头预测结果时会使用各数据流自身的帧率,因此录制的片段能够以正确速度回放。模型准备就绪后,可以将模型导出为 ONNX、TensorRT、OpenVINO 或其他格式,用于边缘设备;也可以从 Platform 部署到专用端点。
检测器报告摄像头能看到的内容。它无法判断头盔是否经过认证或背心是否损坏,因此要将检测事件交给能够作出判断的人处理。
哪些人适合使用 Construction-PPE#
你可以用 Construction-PPE 作为起点,在建筑工地、车间、仓库或装卸区检测其中五种 PPE 类型及其缺失情况。如果你需要以下能力,这个数据集就很适合你:
- 检测装备缺失,而不只是检测装备。五个专门的装备缺失类别采用一致的可见身体部位规则进行标注,为模型提供了装备缺失情况的直接示例。
- 在一个模型中同时识别车辆和行人。
forklift、Person和no_vest共同覆盖装卸区场景。 - 许可清晰且可直接用于训练的标注。图像和标注采用 CC BY 4.0 许可,允许在注明出处的情况下用于商业用途;YOLO 格式的标注无需转换即可用于 YOLO26 训练。你在此数据集上训练的 YOLO 模型采用单独的许可协议;请参阅下方的许可问题。
如果你的项目只需大规模检测安全帽和背心,Ultralytics Platform 还托管了 Safety Helmet and Reflective Jacket,包含 10,138 张图像和 2 个类别。对于只检测安全帽的任务,Safety Helmet Detection 包含 5,000 张图像,标注了 head、helmet 和 person。如果你需要完整的现场工作流程,从制定第一条规则到监控部署,请阅读我们的指南:使用 Ultralytics 进行 PPE 检测和工作场所安全。
常见问题
使用专门的装备缺失类别进行训练,例如
no_helmet和no_vest;仅在身体部位可见时标注这些类别;在依赖警报前,先检查模型在你自己的摄像头图像上的各类别指标。Construction-PPE 提供了五个此类类别,并采用一致的可见性规则。这取决于你需要哪些类别。Ultralytics Construction-PPE 在 1,000 张经过审核的图像中涵盖 12 个类别,包括五个装备缺失类别、
forklift和Person,并采用 CC BY 4.0 许可。如果只需要检测安全帽和背心,Ultralytics Platform 上的 Safety Helmet and Reflective Jacket 数据集提供了更多图像;Safety Helmet Detection 则只涵盖安全帽。无论选择哪一个,要部署到现场都应添加来自你自己的摄像头的图像。2026 年 11 月发布的版本包含 1,000 张图像、14,863 个边界框和 12 个类别,训练集/验证集的划分为 800/200。类别包括 helmet、gloves、vest、boots、goggles、Person、no_helmet、no_goggle、no_gloves、no_boots、forklift 和 no_vest。
安装或更新
ultralytics软件包,加载yolo26n.pt,并使用 Construction-PPE 压缩包 URL 作为data调用model.train(),例如使用epochs=100和imgsz=640。你也可以不写代码,直接在 Ultralytics Platform 上进行云端训练。专门的装备缺失类别能为模型提供装备缺失情况的直接示例,因此模型可以将可见的裸露头部作为独立目标检测出来。简单的“人员框内没有头盔框”规则可能会把被遮挡的头部误判为裸露头部,除非它也会检查可见性。Construction-PPE 只在身体部位可见时标注装备缺失,因此适用于第一种方法。
可以。图像和标注采用知识共享署名 4.0 国际许可协议发布,允许分享和改编(包括商业用途),但需要注明出处。请注明 Ultralytics 团队,链接到数据集和许可协议,并说明是否进行了修改。这仅适用于数据集:你在此数据集上训练的 Ultralytics YOLO 模型采用单独的许可协议(请参阅下一个问题)。
所有 Ultralytics YOLO 训练模型默认采用 AGPL-3.0 许可,包括在 Construction-PPE 上训练的模型。要使用 Ultralytics YOLO 代码或模型,你需要将整个项目按 AGPL-3.0 开源,或获取 Ultralytics 企业版许可证。这也适用于内部使用和研发。如果你希望项目保持私有,则需要企业版许可证。
作者
评论
提出问题、分享你的结果,或帮助其他人。










