深度学习yolo算法训练道路车道线检测数据集 通过训练出道路车道线道路交通引导线数据集的权重道路路面提醒标识数据集 建立基于深度学习道路车道线检测识别系统 识别检测虚线 直线 限速 左转 限速 掉头等

深度学习yolo算法训练道路车道线检测数据集 通过训练出道路车道线道路交通引导线数据集的权重道路路面提醒标识数据集 建立基于深度学习道路车道线检测识别系统 识别检测虚线 直线 限速 左转 限速 掉头等

道路车道线检测数据集1792张,8比2划分训练集和验证集,
训练集1433张,验证集359张
在这里插入图片描述

“道路车道线检测数据集”情况


在这里插入图片描述

🚗 道路车道线检测 数据集统计表(共44 类)

编号类别名称图片数量标注框数量
1DotLine(虚线)9391287
2StraightLine(直线)616964
3RightDirection(右行箭头)409437
4LeftMergeLine(左合流线)252258
5PeopleSafetyZone(行人安全区)245259
6StraightDirection(直行箭头)602900
7RightMergeLine(右合流线)146146
8Speedlimit40(限速40)1524
9LeftDirection(左行箭头)256283
10Leftmergearrow(左合流箭头)180196
11CenterLine(中心线)367380
12Speedlimit80(限速80)1940
13StraightandRight(直右箭头)139141
14Colorcone(彩色锥形桶)2883
15OppositeTriangle(对向三角)9297
16ConstructionZone(施工区域)56
17BusLine(公交专用道)1719
18Speedlimit50(限速50)2539
19Rightmergearrow(右合流箭头)5659
20Speedlimit30(限速30)5177
21Nouturn(禁止转向)1920
22Roaddiamond(路面菱形标记)92162
23NoStraight(禁止直行)135152
24NoRightTurn(禁止右转)3636
25NoLeftTurn(禁止左转)5353
26speedlimit70(限速70)917
27speedlimit60(限速60)1121
28StraightandLeft(直左箭头)116120
29OppositeSideLeft(对向左转)2627
30Speedlimit90(限速90)59
31SuddenlyDotLine(突发虚线)1718
32LeftandUturn(左转+掉头)3636
33TurnDotLine(转弯虚线)4646
34StopLine(停止线)185188
35Uturn(掉头线)4244
36CrossWalk(人行横道)172190
37OppositeSideUturn(对向掉头)1313
38Busstopzone(公交车站区域)67
39bikeroad(自行车道)77
40Constructionleftmergearrow(施工左合流箭头)11
41StraightLeftRight(直左右箭头)11
42TurnDirection(转弯方向箭头)811
43LeftandRight(左右箭头)33
44SpeedLimit50(限速50重复类)11

| 总计 | | 1792 | 7550 |


read:

  • 数据集总图片数:1792 张
  • 总标注框数:7550 个
  • 按照 8:2 的比例划分为训练集(1433 张)和验证集(359 张)
  • 每张图片中可能多个车道线或交通标志目标(如多个标注框),标注框总数大于图片总数

在这里插入图片描述

一、数据准备

确保同学的数据集已按照以下结构组织:

road_lane_marking_dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── data.yaml
  • images/train/labels/train/ 分别存放训练图像及其对应的标签文件。
  • images/val/labels/val/ 分别存放验证图像及其对应的标签文件。

每个图像都需要有一个对应的.txt文件,格式为:class_id center_x center_y width height,所有坐标归一化到[0,1]。
在这里插入图片描述

二、创建 data.yaml 文件

在项目根目录下创建 data.yaml 文件,内容如下:

train: ./road_lane_marking_dataset/images/train
val: ./road_lane_marking_dataset/images/val

nc: 44
names: ['DotLine', 'StraightLine', ..., 'SpeedLimit50']  # 列出所有的44个类别名称

在这里插入图片描述

三、安装依赖库

首先,确保安装了必要的Python包:

pip install ultralytics opencv-python matplotlib numpy

四、模型训练代码(Python脚本)

在这里插入图片描述

下面是用于训练YOLOv8模型的示例代码:

from ultralytics import YOLO

# 加载YOLOv8模型架构配置或预训练模型
model = YOLO('yolov8s.yaml')  # 可根据需求选择不同大小的模型如'n', 'm', 'l', 'x'

# 开始训练
results = model.train(
    data='./road_lane_marking_dataset/data.yaml',
    epochs=100,
    imgsz=640,
    batch=16,
    name='road_lane_marking_train',
    project='runs/road_lane_marking',
    exist_ok=True,
    device=0 if torch.cuda.is_available() else 'cpu'
)

# 保存最佳权重
best_weights_path = model.save('./road_lane_marking_best.pt')
print(f"Best weights saved to {best_weights_path}")

五、模型验证与性能评估

训练完成后,可以使用以下代码来评估模型在验证集上的表现:

from ultralytics import YOLO

# 加载训练好的模型
model = YOLO('./road_lane_marking_best.pt')

# 在验证集上评估
metrics = model.val()

# 打印关键指标
print(f"mAP@0.5:0.95: {metrics.box.map:.4f}")
print(f"mAP@0.5: {metrics.box.map50:.4f}")
print(f"Recall: {metrics.box.recall.mean():.4f}")
print(f"Precision: {metrics.box.precision.mean():.4f}")

六、单图推理 + 结果可视化

下面是如何对单张图片进行推理并显示结果:

from ultralytics import YOLO
import cv2

def detect_and_show(image_path):
    model = YOLO('./road_lane_marking_best.pt')

    results = model.predict(source=image_path, conf=0.25)
    
    for result in results:
        im_array = result.plot()
        im = cv2.cvtColor(im_array, cv2.COLOR_RGB2BGR)
        cv2.imshow("Detection Result", im)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

# 测试一张图片
detect_and_show('path/to/test_image.jpg')

七、批量推理并保存结果

如果需要对一批图片进行推理并将结果保存:

from ultralytics import YOLO

model = YOLO('./road_lane_marking_best.pt')

# 批量处理指定文件夹下的图片,并保存结果
model.predict(
    source='./road_lane_marking_dataset/images/val',
    save=True,
    project='runs/road_lane_marking/predictions',
    name='val_results',
    conf=0.25
)

以上步骤涵盖了从数据准备、模型训练、验证评估到推理预测的完整流程。根据实际情况调整参数设置(例如学习率、批次大小等)以优化模型性能。

一、环境准备

确保你已经安装了必要的Python包:

pip install ultralytics opencv-python matplotlib numpy

二、数据组织

数据集按照以下结构组织:

road_lane_marking_dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── data.yaml
  • images/train/labels/train/ 分别存放训练图像及其对应的标签文件。
  • images/val/labels/val/ 分别存放验证图像及其对应的标签文件。

每个图像都需要有一个对应的.txt文件,格式为:class_id center_x center_y width height,所有坐标归一化到[0,1]。

三、创建 data.yaml 文件

在项目根目录下创建 data.yaml 文件,内容如下:

train: ./road_lane_marking_dataset/images/train
val: ./road_lane_marking_dataset/images/val

nc: 44
names: ['DotLine', 'StraightLine', ..., 'SpeedLimit50']  # 列出所有的44个类别名称

四、模型训练

使用YOLOv8进行模型训练的代码示例如下:

from ultralytics import YOLO

# 加载YOLOv8模型架构配置或预训练模型
model = YOLO('yolov8s.yaml')  # 根据需求选择不同大小的模型如'n', 'm', 'l', 'x'

# 开始训练
results = model.train(
    data='./road_lane_marking_dataset/data.yaml',
    epochs=100,
    imgsz=640,
    batch=16,
    name='road_lane_marking_train',
    project='runs/road_lane_marking',
    exist_ok=True,
    device=0 if torch.cuda.is_available() else 'cpu'
)

# 保存最佳权重
best_weights_path = model.save('./road_lane_marking_best.pt')
print(f"Best weights saved to {best_weights_path}")

五、模型验证与性能评估

训练完成后,可以使用以下代码来评估模型在验证集上的表现:

from ultralytics import YOLO

# 加载训练好的模型
model = YOLO('./road_lane_marking_best.pt')

# 在验证集上评估
metrics = model.val()

# 打印关键指标
print(f"mAP@0.5:0.95: {metrics.box.map:.4f}")
print(f"mAP@0.5: {metrics.box.map50:.4f}")
print(f"Recall: {metrics.box.recall.mean():.4f}")
print(f"Precision: {metrics.box.precision.mean():.4f}")

六、单图推理 + 结果可视化

下面是如何对单张图片进行推理并显示结果:

from ultralytics import YOLO
import cv2

def detect_and_show(image_path):
    model = YOLO('./road_lane_marking_best.pt')

    results = model.predict(source=image_path, conf=0.25)
    
    for result in results:
        im_array = result.plot()
        im = cv2.cvtColor(im_array, cv2.COLOR_RGB2BGR)
        cv2.imshow("Detection Result", im)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

# 测试一张图片
detect_and_show('path/to/test_image.jpg')

七、批量推理并保存结果

如果需要对一批图片进行推理并将结果保存:

from ultralytics import YOLO

model = YOLO('./road_lane_marking_best.pt')

# 批量处理指定文件夹下的图片,并保存结果
model.predict(
    source='./road_lane_marking_dataset/images/val',
    save=True,
    project='runs/road_lane_marking/predictions',
    name='val_results',
    conf=0.25
)

八、部署系统(可选)

为了更进一步地部署你的系统,你可以考虑以下几个方向:

  1. Web应用:使用Flask或FastAPI构建一个简单的API接口,用户可以通过上传图片获取检测结果。
  2. 桌面应用:使用PyQt或Tkinter等工具构建图形界面,方便用户直接拖拽图片进行检测。
  3. 边缘设备部署:如果你希望在嵌入式设备上运行此系统,可以考虑使用TensorRT或其他优化工具对模型进行优化以适应资源受限的环境。

示例:简易Flask API

这里提供一个非常基础的Flask API示例:

from flask import Flask, request, jsonify
from ultralytics import YOLO
import cv2
import numpy as np
from PIL import Image
import io

app = Flask(__name__)
model = YOLO('./road_lane_marking_best.pt')

@app.route('/predict', methods=['POST'])
def predict():
    file = request.files['image']
    img_bytes = file.read()
    img = Image.open(io.BytesIO(img_bytes))
    
    results = model.predict(source=img, conf=0.25)
    for result in results:
        im_array = result.plot()
        im = Image.fromarray(cv2.cvtColor(im_array, cv2.COLOR_BGR2RGB))
        
        img_byte_arr = io.BytesIO()
        im.save(img_byte_arr, format='PNG')
        img_byte_arr = img_byte_arr.getvalue()
        
        return jsonify({"status": "success", "result": base64.b64encode(img_byte_arr).decode('utf-8')}), 200

if __name__ == '__main__':
    app.run(debug=True)

以上文字及代码仅供参考。

### 如何为小米路由器OpenWRT #### 准备工作 为了成功地将OpenWRT入到小米路由器中,需提前准备好必要的工具和软件。这包括但不限于一台电脑用于操作、一根网线连接至路由器以及确保拥有最新的Breed固件版本和支持的小米路由器型号列表[^1]。 #### 开启Telnet服务 通过特定命令或按钮激活隐藏模式下的telnet功能对于后续步骤至关重要。通常情况下,在浏览器地址栏输入`http://miwifi.com`进入管理界面后找到对应的选项来启用此特性;而对于某些特殊机型,则可能需要借助第三方应用或者按照官方文档指示完成设置过程[^2]。 #### 使用FTP上传文件 一旦开启了上述提到的服务之后就可以利用FTP客户端把breed.bin或者其他所需的镜像放置于设备内部存储空间当中去了。这里推荐使用FileZilla这类简单易用的应用程序来进行传输作业,并确认好目标路径是否正确无误[^3]。 #### 写Breed引导程序 当所有准备工作都已就绪之时便可以着手处理最核心的部分——即替换原有的bootloader部分为更加灵活可控的新版breed了。具体做法是在断电状态下按住reset键不放直到电源灯亮起再松手即可自动加载新安装好的环境。 #### 完成OpenWRT系统的部署 最后一步就是正式向flash芯片灌输openwrt.img映像包从而彻底改变原有操作系统架构成为基于Linux内核构建而成的强大网络平台之一。值得注意的是整个过程中要保持稳定供电以免造成不可逆损坏风险存在。 ```bash # 示例代码:通过TFTP服务器发送OpenWRT固件给路由器 tftp -l openwrt-trx-factory.bin -r /dev/mtdblock4 192.168.1.1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值