Skip to content

Part 3: 计算机视觉—— 安全帽佩戴检测

1. 背景介绍

在建筑工地上,安全帽是工人的生命线。但在实际作业中,工人未佩戴或不规范佩戴安全帽的情况时有发生。人工巡检效率低、成本高,而利用计算机视觉技术实时监控工人是否佩戴安全帽,是“智慧工地”最典型的应用场景之一。

你的任务:从零开始,训练一个能识别“戴了安全帽”和“没戴安全帽”的 YOLOv5 模型。

2. 任务拆解

Step 1:数据挖掘

任务

我们不提供数据集,请自己动手去互联网的各个角落寻找数据。

数据来源(两种方式,二选一或混合)

  • 方式 A:自己收集图片 + 自己打标签
    • 优点:更能体现你的数据能力与工程完整度;数据分布由你控制。
    • 缺点:耗时,需要完成标注与格式检查。
  • 方式 B:直接使用网上现成的 YOLO 格式数据集(建议)
    • 优点:能快速进入训练与调参环节。
    • 缺点:要注意类别定义是否匹配(helmet/head)、标注质量是否可靠、数据许可是否允许使用。

无论选择哪种方式,都请在最终提交中说明你的数据来源,并附上必要的截图证明。

Step 2:数据标注(如果你选用自己收集数据)

任务

体验算法工程师最朴实无华的工作——打标签。

工具推荐

  • LabelImg:本地老牌工具,轻量好用
  • Roboflow:在线工具,自动化程度高,但需要注册

⚠️ 格式避坑指南

  • YOLO 模型不吃 XML 格式(PascalVOC),只吃 TXT 格式。
  • 如果你使用 LabelImg,请务必在左侧工具栏将保存格式从 PascalVOC 切换为 YOLO

你可以抽查一下:打开你生成的某个 .txt 文件,它长得应该像这样,全是 0-1 之间的小数:

text
0 0.48 0.63 0.69 0.71
1 0.74 0.52 0.31 0.42

每一行的含义是:class_id x_center y_center width height,所有坐标都已归一化,除以了图片的宽高。

标注类别

  • 0: helmet(佩戴了安全帽)
  • 1: head(未佩戴安全帽 / 普通头发)

注:在 YOLO 的 classes.txt 中,第一行对应的 ID 是 0,第二行是 1,以此类推。请记住你定义的顺序。

注意

标注框要尽量贴合目标,不要框得太大或太小。这直接决定了你模型的精度。

Step 3:模型训练

核心任务

使用经典的 YOLOv5 框架进行训练。

操作指引

  • Clone YOLOv5 的官方仓库
  • 按照 YOLO 的格式要求整理你的文件夹结构imageslabels
  • 编写 / 修改 data.yaml 配置文件,指向你的数据集路径
  • 开始训练

目标

  • 观察 Loss 曲线是否下降
  • 观察 mAP(mean Average Precision)指标是否上升

Step 4:成果展示

任务

找一段网上关于“工地施工”的视频(视频找不到的话使用图片来验证模型效果也可)。

输出

使用你训练好的模型对视频进行推理,生成一个带有检测框的视频文件。

预期效果

  • 视频中戴了帽子的人头上框出 helmet
  • 没戴的人框出 head

3. 提交内容

  • 如果选择自己收集数据的话,记得展示你标注好的文件夹内容或 LabelImg 界面,证明是你自己标的
  • 结果演示:推理完成的视频文件或截图
  • 核心代码 / 配置:
    • data.yaml 文件截图
    • 运行训练命令的截图

Released under the MIT License.