道路落石及障碍物检测数据集【共2套】
第一套:
智慧化道路落石检测数据集
nc一类:shitou
1
第二套:6类 道路障碍物检测数据集 落石 滑坡检测数据集
6 names: [‘Car’, ‘Motorcycle’, ‘People’, ‘shitou’, ‘Warning-Crash’, ‘landslide’]
1
1
1
1
1
1
1
1
完整 YOLOv8 训练与检测系统方案,包含:
✅ 数据集说明
✅dataset.yaml配置
✅ YOLOv8 训练代码(支持自定义参数)
✅ 推理与可视化脚本
✅ 类别中文对照表
📊 一、数据集信息
- 图像总数:未明确给出,但已划分
train/valid/test三部分 - 标注格式:YOLO 格式(每张
.jpg对应一个.txt) - 类别数量:6 类
- 类别名称(英文 → 中文):
| 英文标签 | 中文含义 | 说明 |
|---|---|---|
Car | 汽车 | 正常行驶车辆 |
Motorcycle | 摩托车 | 两轮机动车 |
People | 行人 | 路面人员 |
shitou | 落石 | 公路上的散落石块(⚠️建议统一为英文如fallen_rock) |
Warning-Crash | 碰撞/事故预警 | 可能表示事故车辆或危险状态 |
landslide | 山体滑坡 | 大规模地质灾害区域 |
💡 建议:将
shitou改为fallen_rock以符合命名规范,避免非 ASCII 字符问题。
📁 二、数据集目录结构
请确保您的数据组织如下:
road_hazard_dataset/ ├── train/ │ ├── images/# .jpg│ └── labels/# .txt├── valid/ │ ├── images/ │ └── labels/ ├── test/ │ ├── images/ │ └── labels/ └── dataset.yaml📄 三、dataset.yaml配置文件
# dataset.yamltrain:../train/imagesval:../valid/imagestest:../test/imagesnc:6names:['Car','Motorcycle','People','shitou','Warning-Crash','landslide']⚠️ 注意:YOLO 要求
labels/文件夹与images/同级且同名。
若当前只有images/而无labels/,需确保.txt文件放在对应labels/目录中。
🚀 四、YOLOv8 训练代码(train.py)
# train.pyfromultralyticsimportYOLOdefmain():# 选择模型大小(n/s/m/l/x)model=YOLO('yolov8s.pt')# 推荐从 yolov8s 开始# 开始训练results=model.train(data='dataset.yaml',# 数据配置文件路径epochs=100,# 训练轮数(可设为 150)imgsz=640,# 输入图像尺寸batch=16,# 批次大小(根据 GPU 显存调整)name='road_hazard_yolov8s',optimizer='AdamW',lr0=0.001,weight_decay=0.0005,mosaic=0.5,# Mosaic 数据增强mixup=0.2,hsv_h=0.015,# 色调增强hsv_s=0.7,hsv_v=0.4,degrees=10.0,# 旋转增强translate=0.1,scale=0.5,flipud=0.0,fliplr=0.5,# 左右翻转device=0,# 使用 GPU 0;多卡用 [0,1]workers=4,save=True,save_period=10,# 每10轮保存一次exist_ok=False# 是否覆盖已有实验)if__name__=='__main__':main()🔍 五、推理与可视化(detect.py)
# detect.pyfromultralyticsimportYOLOimportcv2# 加载训练好的最佳模型model=YOLO('runs/detect/road_hazard_yolov8s/weights/best.pt')defdetect_image(img_path,conf_thres=0.3):results=model(img_path,conf=conf_thres)annotated=results[0].plot()# 自动绘制框和标签cv2.imshow("Road Hazard Detection",annotated)cv2.waitKey(0)cv2.destroyAllWindows()# 或保存# cv2.imwrite("output.jpg", annotated)# 示例detect_image("test_image.jpg")🖥️ 六、批量测试 & 评估(可选)
# evaluate.pyfromultralyticsimportYOLO model=YOLO('runs/detect/road_hazard_yolov8s/weights/best.pt')metrics=model.val(data='dataset.yaml',split='test')print(f"mAP50:{metrics.box.map50:.3f}")print(f"mAP50-95:{metrics.box.map:.3f}")✅ 七、部署建议
导出 ONNX 模型(用于边缘设备):
model.export(format='onnx',imgsz=640,opset=12)部署到无人机/路侧摄像头:
- 使用 NVIDIA Jetson + TensorRT 加速
- 或 OpenVINO(Intel 设备)
Web 系统集成:
- Flask/FastAPI 提供 API
- 前端上传图像 → 返回检测结果 JSON
⚠️ 八、注意事项
类别命名问题:
shitou和Warning-Crash包含中文拼音和连字符,虽 YOLOv8 支持,但建议统一为英文下划线格式,例如:names:['car','motorcycle','people','fallen_rock','crash_warning','landslide']数据平衡:
检查fallen_rock和landslide是否样本较少?若少于 500 张,建议使用过采样或CutMix增强。小目标优化:
落石通常较小,可:- 使用
imgsz=1280 - 添加 P2 检测头(需修改模型结构)
- 启用
close_mosaic=10(最后10轮关闭 Mosaic)
- 使用
该系统可用于智慧交通、山区公路监控、应急预警平台,有效提升道路安全水平。