Appearance
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 的格式要求整理你的文件夹结构
images和labels - 编写 / 修改
data.yaml配置文件,指向你的数据集路径 - 开始训练
目标
- 观察 Loss 曲线是否下降
- 观察 mAP(mean Average Precision)指标是否上升
Step 4:成果展示
任务
找一段网上关于“工地施工”的视频(视频找不到的话使用图片来验证模型效果也可)。
输出
使用你训练好的模型对视频进行推理,生成一个带有检测框的视频文件。
预期效果
- 视频中戴了帽子的人头上框出
helmet - 没戴的人框出
head
3. 提交内容
- 如果选择自己收集数据的话,记得展示你标注好的文件夹内容或 LabelImg 界面,证明是你自己标的
- 结果演示:推理完成的视频文件或截图
- 核心代码 / 配置:
data.yaml文件截图- 运行训练命令的截图
