数据集获取主页 个人简介最近在搞安全帽检测项目最头疼的从来不是调参而是搞数据。网上那些开源数据集要么标注稀碎要么场景单一真扔进模型里效果那叫一个感人。被坑了几次后心一横自己动手攒了一份。过程就不提了说多了都是泪懂的都懂。现在搞完了感觉不拿出来给同行们避避坑都对不起掉的这些头发。这份数据集的核心就俩字省心。你拿到手5分钟就能把训练跑起来。1. 数据结构完全按YOLO官方推荐的结构来一层都不带错的你的项目目录/ ├── datasets/ │ └── helmet_data/ # 这是数据集根目录 │ ├── train/ │ │ ├── images/ # 24040张图 │ │ └── labels/ # 24040个txt一个不少 │ ├── val/ │ │ ├── images/ # 1978张 │ │ └── labels/ # 1978个 │ └── test/ │ ├── images/ # 979张 │ └── labels/ # 979个2. 数据质量尺寸统一全部预处理成了640x640不用你再操心resize对齐的问题。标注扎实只标两类0: head人头,1: helmet安全帽。重点看下面的统计头盔的样本量是人头的3倍多这很符合实际场景一个画面里好多人戴了帽子。我们特意做了数据增强缓解这个不平衡问题。3. 怎么用在数据集根目录就是helmet/那一层给你备好了这个data.yaml文件names: path: /你的路径/datasets/Helmet # 就改这里 train: train/images val: val/images test: test/images nc: 2 # 类别数 names: [头, 安全帽] # 类别名别写反了YOLOv8推荐代码最简洁下载【yolov8s.pt】from ultralytics import YOLO # 1. 加载模型 model YOLO(yolov8n.pt) # 也可以用 yolov8s.pt, yolov8m.pt从官网下载 # 2. 训练直接指定yaml路径 results model.train( datapath/to/helmet/data.yaml, epochs100, imgsz640, batch16, device0 # 用GPU如果是CPU就改成cpu ) # 3. 验证训练完自动验证也可以单独跑 val_results model.val() # 自动加载最佳权重验证 print(fmAP50-95: {val_results.box.map:.4f}) print(fmAP50: {val_results.box.map50:.4f})4. 能跑出什么效果我们拿YOLOv8m试了个水默认参数跑了200轮在测试集上mAP0.5能跑到0.97以上。这还只是基线模型你拿去用更好的模型或者调调参冲到更高问题不大。