首页 > 其他分享 >Yolov8训练识别模型

Yolov8训练识别模型

时间:2024-03-29 17:36:19浏览次数:19  
标签:val 模型 Yolov8 train file images path 识别 image

本文手把手教你用YoloV8训练自己的数据集并实现物体识别

操作环境:

系统:Windows10

Python:3.9

Pytorch:2.2.2+cu121

环境安装

  • 安装CUDA以及cudnn

 参考博客《Windows安装CUDA 12.1及cudnn》(https://www.cnblogs.com/RiverRiver/p/18103991)

  • 安装torch, torchvision对应版本,这里先下载好,直接安装
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  •  pip安装yolo包
pip3 install ultralytics
  • pip安装数据标注工具
pip install labelimg

数据准备

提前准备好需要训练的图片数据(尽量多一点),我这里以验证码的形状为例,如下图:

 

  • 命令行输入 labelimg 打开数据标注工具,数据集类型切换成YOLO,然后依次完成标注即可

 点击Create RectBox开始标注,将需要识别的图形框起来,框起来后需要输入标签(注意:同一类型物体要用一个标签)。如下图:

  •  标注划分

标注好之后,使用下面的脚本划分训练集、验证集,注意设置正确的图片和txt路径:

import os
import random
import shutil

# 设置文件路径和划分比例
root_path = "D:\\dataset"
# 标注过的图片存放目录
image_dir = "D:\\dataset\\images"
# 标注过生成的txt存放目录
label_dir = "D:\\dataset\\labels"
train_ratio = 0.7
val_ratio = 0.2
test_ratio = 0.1

# 创建训练集、验证集和测试集目录
os.makedirs("images/train", exist_ok=True)
os.makedirs("images/val", exist_ok=True)
os.makedirs("images/test", exist_ok=True)
os.makedirs("labels/train", exist_ok=True)
os.makedirs("labels/val", exist_ok=True)
os.makedirs("labels/test", exist_ok=True)

# 获取所有图像文件名
image_files = os.listdir(image_dir)
total_images = len(image_files)
random.shuffle(image_files)

# 计算划分数量
train_count = int(total_images * train_ratio)
val_count = int(total_images * val_ratio)
test_count = total_images - train_count - val_count

# 划分训练集
train_images = image_files[:train_count]
for image_file in train_images:
    label_file = image_file[:image_file.rfind(".")] + ".txt"
    shutil.copy(os.path.join(image_dir, image_file), "images/train/")
    shutil.copy(os.path.join(label_dir, label_file), "labels/train/")

# 划分验证集
val_images = image_files[train_count:train_count+val_count]
for image_file in val_images:
    label_file = image_file[:image_file.rfind(".")] + ".txt"
    shutil.copy(os.path.join(image_dir, image_file), "images/val/")
    shutil.copy(os.path.join(label_dir, label_file), "labels/val/")

# 划分测试集
test_images = image_files[train_count+val_count:]
for image_file in test_images:
    label_file = image_file[:image_file.rfind(".")] + ".txt"
    shutil.copy(os.path.join(image_dir, image_file), "images/test/")
    shutil.copy(os.path.join(label_dir, label_file), "labels/test/")

# 生成训练集图片路径txt文件
with open("train.txt", "w") as file:
    file.write("\n".join([root_path + "images/train/" + image_file for image_file in train_images]))

# 生成验证集图片路径txt文件
with open("val.txt", "w") as file:
    file.write("\n".join([root_path + "images/val/" + image_file for image_file in val_images]))

# 生成测试集图片路径txt文件
with open("test.txt", "w") as file:
    file.write("\n".join([root_path + "images/test/" + image_file for image_file in test_images]))

print("数据划分完成!")

运行后会生成划分好的数据集如下:

 训练与预测

  • 开始训练

训练脚本如下:

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')

results = model.train(data='shield.yml', epochs=1300, imgsz=640, device=[0],
                      workers=0, lr0=0.001, batch=128, amp=False)

shield.yml内容如下,注意修改自己的数据集路径即可:

# Ultralytics YOLO 

标签:val,模型,Yolov8,train,file,images,path,识别,image
From: https://www.cnblogs.com/RiverRiver/p/18103892

相关文章

  • TSINGSEE青犀智慧工厂视频汇聚与安全风险智能识别和预警方案
    在智慧工厂的建设中,智能视频监控方案扮演着至关重要的角色。它不仅能够实现全方位、无死角的监控,还能够通过人工智能技术,实现智能识别、预警和分析,为工厂的安全生产和高效运营提供有力保障。TSINGSEE青犀智慧工厂智能视频监控方案,主要是采用高清摄像头,通过智能分析技术,实现对工厂......
  • darknet框架训练YOLOv7模型与工业缺陷检测
    1.darkne介绍Darknet是一个开源的深度学习框架,由JosephRedmon(YOLO~YOLOv3作者或参与者)开发,主要用于实现神经网络模型。这个框架最初是为了实现计算机视觉任务而创建的,尤其是目标检测。其中最著名的应用之一就是YOLO(YouOnlyLookOnce)系列目标检测算法。以下是......
  • 夏季水域安全管理,AI智能识别算法防溺水视频监控方案
    随着夏季的到来,不少人为了一时的痛快凉爽就私自下水游泳,特别是在野外池塘,由于长期无人监管,极易发生人员溺亡事件,如何对池塘水域进行全天候无人值守智能监管,并实现发生人员闯入就立即告警?旭帆科技防溺水智能视频监管方案给出答案。1、视频监控布局在水域附近进行视频监控设备的......
  • TSINGSEE青犀多模型、算力调度与智能分析AI算法中台介绍及应用
    TSINGSEE青犀AI算法中台是一款平台型产品,专注于提供各行业中小场景中部署解决方案。平台具备接入广、性能强、支持跨平台、芯片国产化等特点,可提供丰富的视图接入能力和智能分析能力。平台将不同类型、不同协议前端设备,支持通过不同网络环境进行传输、汇聚、处理,并能在平台内部进......
  • 深度学习技巧应用39-深度学习模型训练过程中数据均衡策略SMOTE的详细介绍,以及SMOTE的
    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用39-深度学习模型训练过程中数据均衡策略SMOTE的详细介绍,以及SMOTE的算法原理与实现,本文介绍了一种用于处理分类数据不平衡问题的过采样方法——SMOTE算法。SMOTE算法通过在少数类的样本之间插值来创建新的样本,从而增加少......
  • OBJ模型简化工具:提升性能与效率的利器
    在计算机图形学领域,OBJ模型简化工具是一种强大的工具,用于减少模型的面数,以提高模型在渲染和处理过程中的性能。本文将全面介绍为何需要简化模型、简化的方法、常见的简化算法以及一款简化工具的使用方法,帮助读者更好地了解和应用这一技术。为何需要简化模型随着计算机图形技......
  • 百度轨迹验证码识别代码分享
    百度出了如图所示的验证码,需要拖动滑块,与如图所示的曲线轨迹进行重合。经过不断研究,终于解决了这个问题。我把识别代码分享给大家。下面是使用selenium进行验证的,这样可以看到轨迹滑动的过程,如果需要使用js逆向的大神,可以自行研究,谢谢。运行下面代码会直接进入验证码页面,可......
  • DICE模型教程
    原文链接:DICE模型教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247599474&idx=6&sn=bd716d5719ddd8bd6c565daa0f361b72&chksm=fa820495cdf58d83360a402cb2a05042e0f13e6d84d96ee36708e4c5ce90fa124ad9a30b9717&token=1105644014&lang=zh_CN#......
  • R语言广义线性混合模型(GLMM)bootstrap预测置信区间可视化
    全文链接:https://tecdat.cn/?p=35552原文出处:拓端数据部落公众号通过线性模型和广义线性模型(GLM),预测函数可以返回在观测数据或新数据上预测值的标准误差。然后,利用这些标准误差绘制出拟合回归线周围的置信区间或预测区间。置信区间(CI)的重点在于回归线,其可以解释为(假设我们绘制的......
  • R语言用多项式回归和ARIMA模型预测电力负荷时间序列数据
    原文链接:http://tecdat.cn/?p=18037原文出处:拓端数据部落公众号 根据我们对温度的预测,我们可以预测电力消耗。绘制电力消耗序列图: htmlplot(elect,type="l")  我们可以尝试一个非常简单的模型,其中日期Y_t的消耗量是时间,温度(以多项式形式表示)以及工业生产指数IPI......