台州市网站建设_网站建设公司_服务器部署_seo优化
2025/12/31 17:46:21 网站建设 项目流程

无人机航拍工地安全 建筑工地施工数据集,航拍工地安全检测图片,标注了车、头盔、无背心、人、水坑等多种目标。图片清晰完整,适合目标检测模型训练。2000张 yolo格式

类别 8类【‘objects’, ‘car’, ‘helmet’, ‘no-helmet’, ‘no-vest’, ‘person’, ‘puddle’, ‘vest’]

1

1

以下是您提供的无人机航拍工地安全检测数据集的详细信息整理成的表格:

属性说明
数据集名称无人机航拍工地安全检测数据集
图像数量2000 张
图像来源无人机航拍(俯视视角)
图像质量清晰完整,适合目标检测
标注格式YOLO 格式(.txt
总类别数8 类
类别列表'objects','car','helmet','no-helmet','no-vest','person','puddle','vest'
典型应用场景建筑工地安全监控、人员合规检测(头盔/反光背心)、危险区域识别(水坑)、车辆管理等
适用任务目标检测、安全违规行为识别、智能工地管理系统
推荐模型YOLOv5 / YOLOv8 / RT-DETR 等主流目标检测模型

💡说明

  • 'objects'类别含义需确认:若为“其他物体”或冗余类别,建议在训练前评估是否保留;
  • 'no-helmet''helmet''no-vest''vest'可用于直接判断安全违规行为
  • 'puddle'(水坑)可用于识别工地积水隐患,提升安全生产预警能力。


1

无人机航拍工地安全检测数据集(2000 张图像,8 类目标,YOLO 格式)的完整 YOLOv8 训练、验证、推理及部署代码,包含:

  • ✅ 数据准备建议
  • dataset.yaml配置
  • ✅ YOLOv8 训练脚本(Python API)
  • ✅ 推理示例(单图 + 视频)
  • ✅ 可选:简易 Web 检测界面(Flask)


🗂️ 一、数据目录结构

同学,请确保您的数据按如下结构组织:

construction_safety_dataset/ ├── images/ │ ├── train/ │ └── val/ # 建议划分验证集(如 1800 train / 200 val) ├── labels/ │ ├── train/ │ └── val/ └── dataset.yaml

🔧若尚未划分验证集,可使用以下脚本自动划分(10% 作验证):

# split_train_val.pyimportosimportrandomimportshutilfrompathlibimportPathdefsplit_dataset(img_dir,label_dir,output_dir,val_ratio=0.1):img_paths=list(Path(img_dir).glob("*.jpg"))+list(Path(img_dir).glob("*.png"))random.shuffle(img_paths)n_val=int(len(img_paths)*val_ratio)fori,img_pinenumerate(img_paths):lbl_p=Path(label_dir)/(img_p.stem+".txt")ifnotlbl_p.exists():continuesplit="val"ifi<n_valelse"train"(Path(output_dir)/"images"/split).mkdir(parents=True,exist_ok=True)(Path(output_dir)/"labels"/split).mkdir(parents=True,exist_ok=True)shutil.copy(img_p,Path(output_dir)/"images"/split/img_p.name)shutil.copy(lbl_p,Path(output_dir)/"labels"/split/lbl_p.name)# 使用split_dataset("original/images","original/labels","construction_safety_dataset",val_ratio=0.1)

📄 二、dataset.yaml配置文件

# construction_safety_dataset/dataset.yamlpath:/your/absolute/path/to/construction_safety_dataset# 替换为你的绝对路径train:images/trainval:images/valnc:8names:['objects','car','helmet','no-helmet','no-vest','person','puddle','vest']

⚠️ 注意:若'objects'是冗余类别(如标注错误或“其他”),建议在训练前清理或合并。


🧪 三、YOLOv8 完整训练代码(Python)

# train_construction_safety.pyfromultralyticsimportYOLO# 1. 加载预训练模型(推荐 yolov8n 或 yolov8s)model=YOLO('yolov8n.pt')# 可替换为 'yolov8s.pt' 获取更高精度# 2. 开始训练results=model.train(data='construction_safety_dataset/dataset.yaml',epochs=100,imgsz=640,# 输入尺寸(航拍图建议 640~1280)batch=16,# 根据 GPU 显存调整(16 for 16GB GPU)name='construction_yolov8n',project='runs/construction_safety',device=0,# GPU ID,CPU 用 'cpu'cache=False,# 缓存图像加速(占内存)workers=8,exist_ok=True,verbose=True,# 可选:启用早停防止过拟合patience=15# 15 轮无提升则停止)print(f"✅ 训练完成!最佳模型保存于:{results.save_dir}/weights/best.pt")

运行:

python train_construction_safety.py

🔍 四、推理代码(单图 + 视频)

单图推理

# infer_single.pyfromultralyticsimportYOLOimportcv2 model=YOLO('runs/construction_safety/construction_yolov8n/weights/best.pt')results=model('test_image.jpg',conf=0.3)# 置信度阈值 0.3annotated=results[0].plot()cv2.imshow("Safety Detection",annotated)cv2.waitKey(0)cv2.destroyAllWindows()

视频/摄像头实时检测

# infer_video.pyfromultralyticsimportYOLOimportcv2 model=YOLO('runs/construction_safety/construction_yolov8n/weights/best.pt')cap=cv2.VideoCapture("drone_video.mp4")# 或 0(摄像头)whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=model(frame,conf=0.4)annotated=results[0].plot()cv2.imshow("Construction Safety AI",annotated)ifcv2.waitKey(1)==ord('q'):breakcap.release()cv2.destroyAllWindows()

🌐 五、简易 Web 界面(Flask + HTML)

后端(app.py

# app.pyfromflaskimportFlask,request,render_template,send_from_directoryfromultralyticsimportYOLOimportcv2importos app=Flask(__name__)UPLOAD_FOLDER='static/uploads'RESULT_FOLDER='static/results'os.makedirs(UPLOAD_FOLDER,exist_ok=True)os.makedirs(RESULT_FOLDER,exist_ok=True)model=YOLO('runs/construction_safety/construction_yolov8n/weights/best.pt')@app.route('/')defindex():returnrender_template('index.html')@app.route('/detect',methods=['POST'])defdetect():file=request.files['image']path=os.path.join(UPLOAD_FOLDER,file.filename)file.save(path)img=cv2.imread(path)results=model(img,conf=0.3)annotated=results[0].plot()result_path=os.path.join(RESULT_FOLDER,'result_'+file.filename)cv2.imwrite(result_path,annotated)returnf''' <h3>检测结果:</h3> <img src="/static/results/result_{file.filename}" width="800"> <br><a href="/">返回</a> '''if__name__=='__main__':app.run(debug=True)

前端(templates/index.html

<!-- templates/index.html --><!DOCTYPEhtml><html><head><title>工地安全AI检测</title></head><body><h2>上传无人机航拍工地图片</h2><formmethod="post"enctype="multipart/form-data"action="/detect"><inputtype="file"name="image"accept="image/*"required><buttontype="submit">开始检测</button></form></body></html>

运行 Web 应用:

pipinstallflask python app.py# 访问 http://localhost:5000

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询