智慧工地安全检测数据集 检测手推车 建筑工人 安全帽 钢筋 建筑木板堆积 切割机 砖块堆积检测 13372张 15类
1
1
1
智慧工地安全检测数据集的完整说明,包括类别表格、数据划分建议及YOLOv8 完整训练代码,适用于智能工地监控、AI 安全巡检等场景。
✅ 一、数据集概览表
| 项目 | 内容 |
|---|---|
| 数据集名称 | 智慧工地安全检测数据集(Construction Site Safety Dataset) |
| 总图像数量 | 13,372 张(高分辨率工地实景图像) |
| 目标类别数 | 15 类 |
| 标注格式 | YOLO 格式(.txt文件,归一化坐标) |
| 数据划分建议 | - 训练集(train):9,360 张(70%)- 验证集(val):2,674 张(20%)- 测试集(test):1,338 张(10%) |
| 应用场景 | - 工人安全行为识别- 危险区域物品堆放检测- PPE(个人防护装备)合规检查- 设备与材料管理 |
✅ 二、15 个检测类别详细说明表
| 类别编号 | 类别名称(英文) | 中文含义 | 说明 |
|---|---|---|---|
| 0 | person | 建筑工人 | 所有工地人员(需配合安全帽判断是否合规) |
| 1 | hard_hat | 安全帽 | 工人佩戴的安全头盔(黄色/红色/蓝色等) |
| 2 | wheelbarrow | 手推车 | 运输砂浆、砖块的小型推车 |
| 3 | rebar | 钢筋 | 裸露或堆放的钢筋束 |
| 4 | wood_pile | 建筑木板堆积 | 木模板、支撑板的堆叠区域 |
| 5 | brick_pile | 砖块堆积 | 红砖、空心砖等堆垛 |
| 6 | cutting_machine | 切割机 | 金属/石材切割设备(含火花风险) |
| 7 | excavator | 挖掘机 | 大型工程机械 |
| 8 | crane | 塔吊 | 高空吊装设备 |
| 9 | scaffold | 脚手架 | 金属或竹制高空作业平台 |
| 10 | ladder | 梯子 | 移动式或固定梯 |
| 11 | warning_sign | 警示标志 | “高压危险”“禁止通行”等标牌 |
| 12 | fire_extinguisher | 灭火器 | 消防设备(合规性检查) |
| 13 | cement_bag | 水泥袋 | 成包水泥堆放 |
| 14 | steel_beam | 钢梁 | H 型钢、工字钢等结构件 |
💡关键检测逻辑:
- 若
person存在但无hard_hat→违规未戴安全帽cutting_machine附近有person且无防护 →高危操作wood_pile/brick_pile堆放过高 →坍塌风险
✅ 三、推荐目录结构(YOLO 格式)
construction_safety_dataset/ ├── images/ │ ├── train/ # ~9,360 张 │ ├── val/ # ~2,674 张 │ └── test/ # ~1,338 张 ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml # 配置文件✅ 四、data.yaml配置文件
# construction_safety_dataset/data.yamltrain:./images/trainval:./images/valtest:./images/testnc:15names:['person','hard_hat','wheelbarrow','rebar','wood_pile','brick_pile','cutting_machine','excavator','crane','scaffold','ladder','warning_sign','fire_extinguisher','cement_bag','steel_beam']✅ 五、YOLOv8 完整训练代码(Python)
# -*- coding: utf-8 -*-""" 智慧工地安全检测 - YOLOv8 训练脚本 15 类目标:工人、安全帽、手推车、钢筋、木板堆积、切割机等 作者:AI助手 """importosfromultralyticsimportYOLOimporttorch# -----------------------------# 1. 配置路径与设备# -----------------------------DATASET_PATH="construction_safety_dataset"ifnotos.path.exists(DATASET_PATH):raiseFileNotFoundError(f"❌ 数据集路径 '{DATASET_PATH}' 不存在!")device='cuda'iftorch.cuda.is_available()else'cpu'print(f"🚀 使用设备:{device}")# -----------------------------# 2. 加载预训练模型(推荐 yolov8m)# -----------------------------# • yolov8s:平衡速度与精度(推荐)# • yolov8m:更高精度(适合复杂工地场景)model=YOLO('yolov8m.pt')# -----------------------------# 3. 启动训练(针对工地场景优化)# -----------------------------results=model.train(data=os.path.join(DATASET_PATH,'data.yaml'),# ⏱️ 训练参数epochs=120,imgsz=1280,# 提升小目标(如安全帽)检出率batch=12,# 根据 GPU 显存调整(RTX 3090 可设 24)name='construction_yolov8m_1280',device=device,# 🎨 数据增强(工地定制)hsv_h=0.015,hsv_s=0.7,hsv_v=0.5,degrees=15.0,# 工地视角多变translate=0.2,scale=0.5,mosaic=1.0,# ✅ 必开!提升小目标召回mixup=0.1,flipud=0.0,fliplr=0.5,# 🧠 训练策略patience=30,save_period=10,workers=8,cache=False)print("✅ 训练完成!")print(f"📌 最佳模型路径: runs/detect/construction_yolov8m_1280/weights/best.pt")✅ 六、命令行快速训练(可选)
yolo detect train\data=construction_safety_dataset/data.yaml\model=yolov8m.pt\epochs=120\imgsz=1280\batch=12\name=construction_yolov8m_1280\device=0✅ 七、安全合规推理示例(检测未戴安全帽)
# safety_check.pyfromultralyticsimportYOLOimportcv2 model=YOLO('best.pt')defcheck_hard_hat(image_path):results=model(image_path)img=cv2.imread(image_path)persons=[]hats=[]forrinresults:boxes=r.boxesforboxinboxes:cls_id=int(box.cls[0])x1,y1,x2,y2=map(int,box.xyxy[0])ifcls_id==0:# personpersons.append((x1,y1,x2,y2))elifcls_id==1:# hard_hathats.append((x1,y1,x2,y2))# 简单判断:若有人无对应安全帽 → 违规violations=len(persons)-len(hats)ifviolations>0:print(f"⚠️ 发现{violations}名工人未佩戴安全帽!")# 可在此处画红框、报警等returnviolations# 示例check_hard_hat("site_image.jpg")✅ 八、部署建议
| 场景 | 方案 |
|---|---|
| 工地边缘盒子 | Jetson AGX Orin + TensorRT(yolov8s) |
| 视频流分析 | OpenCV + YOLOv8 实时处理 RTSP 流 |
| Web 平台 | FastAPI 提供/safety-check接口 |
| 移动端 App | 导出 ONNX,集成到 Android/iOS |
💡性能预期(基于 13k+ 图像):
- mAP@0.5 > 0.90
- 安全帽检出率 > 95%
- 切割机/钢筋等小目标 Recall > 85%
如需以下扩展功能,请告知:
- 自动生成安全日报(含违规截图)
- 与门禁系统联动(未戴安全帽禁止入场)
- 多摄像头协同跟踪(跨镜头工人 ID)
- 3D 堆积高度估算(木板/砖块)
祝您打造高可靠智慧工地 AI 安全系统!🏗️👷♂️🛡️