深度学习框架目标检测算法yolov8模型如何训练自己的数据集之—道路裂缝瑕疵类数据集 RDD道路瑕疵数据集 道路裂缝病害检测数据集的训练及应用 识别检测道路裂缝,坑洼,病害数据集
文章目录
- 🧾 数据集概述
- 📁 数据集结构(YOLOv8适用)
- 📝 创建 `data.yaml` 文件
- ⚙️ 环境搭建(YOLOv8)
- 🧠 模型选择推荐(YOLOv8系列)
- 🏋️♂️ 使用 YOLOv8 训练模型(Python代码)
- 🔍 推理与可视化(单图 + 视频流)
- 单张图像推理:
- 实时视频流检测:
- 📊 模型性能评估(验证集)
- 📦 模型导出(ONNX / TensorRT / OpenVINO)
- 📈 TensorBoard 查看训练过程
- ✅ 高级技巧建议(提升性能)
- ✅ 数据增强策略(YOLOv8内置)
- 📥 模型部署(Flask Web API 示例)
以下文字及代码仅供参考学习。
1包括无人机视角,摩托车视角,车辆视角
无人机视角/摩托车视角/车辆视角
1无人机视角/摩托车视角/车辆视角
RDD2022(Road Damage Detection 2022)道路瑕疵检测数据集,这是一个广泛用于道路缺陷检测数据集。以下是针对该数据集
使用 YOLOv8 模型进行训练、推理和部署的完整流程指南,包含:
—仅供参考学习。
🧾 数据集概述
- 总图像数量: ~24,000张(根据实际提供)
- 标注格式: YOLO
.txt格式 - 类别数: 4类
0: 纵向裂缝 (Longitudinal Crack)1: 横向裂缝 (Transverse Crack)2: 鳄鱼裂缝 (Alligator Crack)3: 坑洼 (Pothole)
- 已划分数据集:
- 训练集: 16,664张图片
- 验证集: 7,133张图片
- 用途: 道路缺陷检测、自动驾驶、交通监控等
📁 数据集结构(YOLOv8适用)
RDD2022/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── data.yaml✅ 假设你已经将数据组织为上述结构。
📝 创建data.yaml文件
创建一个名为data.yaml的文件,内容如下:
train:./images/trainval:./images/valnc:4names:['longitudinal_crack','transverse_crack','alligator_crack','pothole']⚙️ 环境搭建(YOLOv8)
安装 YOLOv8 所需依赖:
pipinstallultralytics opencv-python-headless matplotlib tqdm tensorboard🧠 模型选择推荐(YOLOv8系列)
| 模型 | 推荐场景 |
|---|---|
yolov8n.pt | 轻量级模型,适合快速训练和边缘设备部署 |
yolov8s.pt | 小型模型,性能与速度平衡 |
yolov8m.pt | 中型模型,适合大多数检测任务 |
yolov8l.pt | 大型模型,精度更高但对硬件要求高 |
🏋️♂️ 使用 YOLOv8 训练模型(Python代码)
fromultralyticsimportYOLO# 加载预训练模型(例如 yolov8m.pt)model=YOLO('yolov8m.pt')# 可替换为 yolov8n/s/l# 开始训练results=model.train(data='path/to/data.yaml',# 替换为你的 data.yaml 路径imgsz=640,# 图像尺寸epochs=150,# 总训练轮数batch=32,# 批次大小(根据GPU内存调整)name='road_damage_detection',# 实验名称device='0'iftorch.cuda.is_available()else'cpu',# GPU或CPUproject='runs/detect_road',# 日志保存路径workers=4,# 数据加载线程数pretrained=True,# 是否使用预训练权重optimizer='AdamW',# 优化器lr0=0.001,# 初始学习率lrf=0.01,# 最终学习率比例momentum=0.937,# SGD动量或Adam的beta1weight_decay=0.0005,# 权重衰减cos_lr=False,# 是否使用余弦退火学习率amp=True,# 自动混合精度训练exist_ok=True,# 是否允许覆盖已有实验目录verbose=True# 显示详细输出)🔍 推理与可视化(单图 + 视频流)
单张图像推理:
fromultralyticsimportYOLOimportcv2# 加载训练好的模型model=YOLO('runs/detect_road/road_damage_detection/weights/best.pt')# 进行推理results=model('path/to/test_image.jpg')# 可视化结果forrinresults:im_array=r.plot()cv2.imshow("Detection Result",im_array)cv2.waitKey(0)cv2.destroyAllWindows()实时视频流检测:
defdetect_video(source=0):cap=cv2.VideoCapture(source)whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=model(frame)annotated_frame=results[0].plot()cv2.imshow("Live Detection",annotated_frame)ifcv2.waitKey(1)==ord('q'):breakcap.release()cv2.destroyAllWindows()detect_video()📊 模型性能评估(验证集)
# 在验证集上评估模型性能metrics=model.val(data='path/to/data.yaml')print(f"mAP@0.5:{metrics.box.map50:.4f}")print(f"mAP@0.5:0.95:{metrics.box.map:.4f}")print(f"Recall@max:{metrics.box.recall.max:.4f}")📦 模型导出(ONNX / TensorRT / OpenVINO)
# 导出为 ONNX 格式yoloexportmodel=best.ptformat=onnx# 导出为 TensorRT 引擎(适用于 NVIDIA GPU)yoloexportmodel=best.ptformat=enginedevice=0# 导出为 OpenVINO 格式(适用于 Intel 设备)yoloexportmodel=best.ptformat=openvino📈 TensorBoard 查看训练过程
tensorboard--logdirruns/detect_road在浏览器中打开 http://localhost:6006,查看 loss、mAP、precision 等指标的变化趋势。
✅ 高级技巧建议(提升性能)
✅ 数据增强策略(YOLOv8内置)
YOLOv8 默认使用了多种增强方式,包括:
- Mosaic 增强
- MixUp 增强
- HSV 颜色空间扰动
- 随机翻转、旋转、缩放
你可以自定义增强参数:
model.train(...,hsv_h=0.015,# Hue 变化范围hsv_s=0.7,# Saturation 变化范围hsv_v=0.4,# Value 变化范围degrees=0,# 旋转角度translate=0.1,# 平移比例scale=0.5,# 缩放比例shear=0.0,# 剪切变换perspective=0.0,# 透视变换flipud=0.5,# 上下翻转概率fliplr=0.5,# 左右翻转概率mosaic=1.0,# Mosaic 增强概率mixup=0.2# MixUp 增强概率)📥 模型部署(Flask Web API 示例)
fromflaskimportFlask,request,jsonifyfromPILimportImageimportioimporttorch app=Flask(__name__)model=YOLO('runs/detect_road/road_damage_detection/weights/best.pt')@app.route('/predict',methods=['POST'])defpredict():file=request.files['image']image=Image.open(io.BytesIO(file.read())).convert('RGB')results=model(image)returnjsonify(results[0].tojson())if__name__=='__main__':app.run(host='0.0.0.0',port=5000)以上文字及代码仅供参考学习。