首页 > 其他分享 >如何使用YOLOv8训练自动驾驶路面分类模型。涵数据集准备、模型训练、等步骤,并提供自动驾驶路面道路分类数据集代码示例13GB。极端天气环境下道路分类37万张图像,13GB数据 水、雪、冰等极端天气

如何使用YOLOv8训练自动驾驶路面分类模型。涵数据集准备、模型训练、等步骤,并提供自动驾驶路面道路分类数据集代码示例13GB。极端天气环境下道路分类37万张图像,13GB数据 水、雪、冰等极端天气

时间:2024-12-08 17:32:25浏览次数:4  
标签:classification train 分类 路面 13GB dir images path road

在这里插入图片描述
自动驾驶路面分类数据集,按照不同的天气条件,即干燥、湿润、水上、新雪、融化的雪和冰。不同的道路材料属性包括沥青、混凝土、泥浆和碎石。不同的道路平整性分为光滑、轻微不平和严重不平。共27类,37万张图像,13GB数据

好的,让我们从数据集准备开始,逐步介绍如何使用深度学习框架(以YOLOv8为例)训练自动驾驶路面分类模型。我们将涵盖数据集准备、模型训练、模型评估等步骤,并提供详细的代码示例。

1. 数据集准备

1.1. 数据集结构

确保你的数据集按照以下结构组织:

road_classification/
│
├── images/
│   ├── train/
│   ├── val/
│   └── test/
│
├── labels/
│   ├── train/
│   ├── val/
│   └── test/
│
└── data.yaml
1.2. 创建数据配置文件 (data.yaml)
train: ./road_classification/images/train
val: ./road_classification/images/val
test: ./road_classification/images/test

nc: 27  # 类别数量(27类)
names: ['Dry Asphalt', 'Dry Concrete', 'Dry Mud', 'Dry Gravel', 'Wet Asphalt', 'Wet Concrete', 'Wet Mud', 'Wet Gravel', 'Water Asphalt', 'Water Concrete', 'Water Mud', 'Water Gravel', 'New Snow Asphalt', 'New Snow Concrete', 'New Snow Mud', 'New Snow Gravel', 'Melting Snow Asphalt', 'Melting Snow Concrete', 'Melting Snow Mud', 'Melting Snow Gravel', 'Ice Asphalt', 'Ice Concrete', 'Ice Mud', 'Ice Gravel', 'Smooth Asphalt', 'Smooth Concrete', 'Smooth Mud', 'Smooth Gravel', 'Slightly Bumpy Asphalt', 'Slightly Bumpy Concrete', 'Slightly Bumpy Mud', 'Slightly Bumpy Gravel', 'Severely Bumpy Asphalt', 'Severely Bumpy Concrete', 'Severely Bumpy Mud', 'Severely Bumpy Gravel']  # 类别名称

# 下载数据集
download: ''

2. 安装YOLOv8

确保你已经安装了YOLOv8。YOLOv8是YOLO系列的最新版本,可以从Ultralytics的GitHub仓库中获取。

git clone https://github.com/ultralytics/yolov8.git
cd yolov8
pip install -r requirements.txt

3. 训练模型

3.1. 配置训练

使用YOLOv8进行路面分类。以下是一个示例命令:

python train.py --data ./road_classification/data.yaml --img 640 --batch 16 --epochs 100 --name yolov8_custom_road_classification --weights yolov8n.pt

4. 评估模型

4.1. 运行评估

在验证集上评估训练好的模型:

python val.py --data ./road_classification/data.yaml --weights runs/train/yolov8_custom_road_classification/weights/best.pt
4.2. 可视化结果

你可以使用val命令的--save标志来可视化结果:

python val.py --data ./road_classification/data.yaml --weights runs/train/yolov8_custom_road_classification/weights/best.pt --save

5. 示例代码

5.1. 数据预处理示例
import cv2
import os

def resize_images(input_dir, output_dir, size=(640, 640)):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    for filename in os.listdir(input_dir):
        if filename.endswith(('.jpg', '.png', '.jpeg')):
            img_path = os.path.join(input_dir, filename)
            img = cv2.imread(img_path)
            img_resized = cv2.resize(img, size)
            output_path = os.path.join(output_dir, filename)
            cv2.imwrite(output_path, img_resized)

# 示例用法
resize_images('./road_classification/images/train', './road_classification/images/train_resized')
resize_images('./road_classification/images/val', './road_classification/images/val_resized')
resize_images('./road_classification/images/test', './road_classification/images/test_resized')
5.2. 训练模型
import torch

# 确保YOLOv8路径正确
YOLO_PATH = 'path/to/yolov8'

# 加载YOLOv8模型
model = torch.hub.load(YOLO_PATH, 'custom', path='runs/train/yolov8_custom_road_classification/weights/best.pt')

# 训练模型
model.train()
model.fit(data='road_classification/data.yaml', imgsz=640, batch=16, epochs=100)
5.3. 评估模型
# 加载训练好的模型
model = torch.hub.load(YOLO_PATH, 'custom', path='runs/train/yolov8_custom_road_classification/weights/best.pt')

# 评估模型
results = model.val(data='road_classification/data.yaml', weights='runs/train/yolov8_custom_road_classification/weights/best.pt', save=True)
print(results.metrics)

6. 其他建议

  • 数据增强:使用数据增强技术来提高模型的鲁棒性。YOLOv8支持多种数据增强方法,如翻转、旋转、裁剪等。
  • 模型集成:集成多个模型以提高性能。
  • 模型量化:量化模型以适应边缘设备。

7. 示例代码

7.1. 数据预处理示例
import cv2
import os

def resize_images(input_dir, output_dir, size=(640, 640)):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    for filename in os.listdir(input_dir):
        if filename.endswith(('.jpg', '.png', '.jpeg')):
            img_path = os.path.join(input_dir, filename)
            img = cv2.imread(img_path)
            img_resized = cv2.resize(img, size)
            output_path = os.path.join(output_dir, filename)
            cv2.imwrite(output_path, img_resized)

# 示例用法
resize_images('./road_classification/images/train', './road_classification/images/train_resized')
resize_images('./road_classification/images/val', './road_classification/images/val_resized')
resize_images('./road_classification/images/test', './road_classification/images/test_resized')

8. 运行和调试

确保你的环境配置正确,并且所有依赖项都已安装。运行模型训练和评估时,确保模型文件路径正确,并且数据集路径正确。

标签:classification,train,分类,路面,13GB,dir,images,path,road
From: https://blog.csdn.net/2401_88440984/article/details/144280255

相关文章

  • 基于ResNet50和VGG16深度学习模型的阿尔茨海默病MRI图像分类与早期诊断研究
    阿尔茨海默病(AD)是目前全球范围内最常见的神经退行性疾病之一,早期诊断对延缓疾病进程和改善患者生活质量至关重要。随着医学影像学的进步,基于MRI图像的阿尔茨海默病检测成为一种重要的研究方向。本文提出了一种基于深度学习的MRI图像分类方法,利用ResNet50和VGG16两种深度卷积神......
  • 大模型分类及代表性模型列表
    大模型分类及代表性模型列表以下是截至2024年较为全面的大模型分类及其代表性模型列表,涵盖国内外的模型,分为通用语言模型、多模态模型、垂直领域模型、基础模型等类别,具体特点和应用也总结如下:一、通用语言模型(NaturalLanguageProcessing)国外模型:GPT系列(OpenAI)模型......
  • springboot垃圾分类查询管理系统源码毕设+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和居民生活水平的提高,垃圾产生量急剧增加,垃圾分类已成为城市管理中的重要一环。然而,由于垃圾分类知识的普及程度不一,许多居民在......
  • SQL注入分类
    基本型:数字型、字符型、搜索型、xx型数字型注入打开抓包工具,点击代理,开启拦截,抓包再返回漏洞练习平台,点击查询其对应的后台代码为,在虚拟机中打开发现$id后没有单引号,即为数字型注入(不需要闭合引号)字符型注入xx后有引号,与前面的引号形成闭合,即字符型注入搜索型注......
  • 【OpenAI 】从获取OpenAI API Key到实现数据分类Demo的完整教程(超详细)!
    文章目录一、初识OpenAIAPI1.1获取API-Key(两种方案)1.2安装OpenAI库二、Python调用OpenAIAPI的基础设置2.1设置API密钥和BaseURL2.2参数详解三、构建一个简单的聊天应用3.1创建聊天请求3.2参数详解3.3处理响应四、完整代码示例1.Python示例代码(基础)2.Python......
  • IO模型分类
    IO模型分类简单了解阻塞I/O当用户程序执行read,线程被阻塞,等待两个过程,内核数据准备好和数据从内核态拷贝到用户态。read才返回非阻塞I/O非阻塞的read请求在还没准备好数据就返回,期间程序不断轮询内核直到数据准备完成,内核拷贝数据至应用程序缓冲区中,read调用才可以获得结......
  • 【BITCN-BILSTM-multihead-Attention多特征分类预测】基于双向时间卷积神经网络-双向
    %%清空环境变量warningoff%关闭报警信息closeall%关闭开启的图窗clear%清空变量clc%清空命令行%%读取数据res=xlsread('数据集.xlsx');%%分析数据num_class=length(unique(res(:,end)));%类别数(Excel最后一列放类别)num_res=size(res,1);%......
  • 【机器学习】从入门到实战:深入解析 K 最近邻(KNN)算法在手写数字分类中的应用
    从入门到实战:深入解析K最近邻(KNN)算法在手写数字分类中的应用K最近邻(K-NearestNeighbors,KNN)算法基本原理特点总结实战基于KNN对手写数字进行分类超参数调节模型训练与测试性能评估与混淆矩阵绘制完整代码训练代码测试代码不同度量方法比较总结K最近邻(K-Nearest......
  • 在做题中学习(76):颜色分类
    解法:三指针思路:用三个指针,把数组划分为三个区域:for循环遍历数组,i遍历数组,left是0区间的末尾,right是2区间的开头,012区间成功被划分而上面的图画是最终实现的图样,实际left,right的移动得配合nums[i]来:left=-1,right=nums.size();1.nums[i]==0,要保证[0,left]为全0,l......
  • 【人人都能学得会的NLP - 文本分类篇 06】基于 Prompt 的小样本文本分类实践
    【人人都能学得会的NLP-文本分类篇06】基于Prompt的小样本文本分类实践NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://git......