yolo训练自定义模型

训练普通模型:

一.安装与导入依赖(参考前一篇文章)

二.加载yolo模型

model=torch.hub.load('ultralytics/yolov5','yolov5s',pretrained=True)

三.使用yolov5进行图像物体识别

imgs=[] #图片地址

results=model(imgs) #识别图像

print(results) #输出结果

展示识别的图像:

plt.imshow(results.rander()[0])

四.利用OpenCV实现实时物体识别(识别一段视频)

训练自定义模型:

导包

配置参数(采集类别)

采集 图像数据集(导入一段视频可以按帧数分割成图片)

import cv2
import os

def extract_frames(video_path, output_folder):
    # 检查输出文件夹是否存在,如果不存在则创建
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 打开视频文件
    cap = cv2.VideoCapture(video_path)
    frame_count = 0
    
    # 读取视频帧
    while cap.isOpened():
        ret, frame = cap.read()
        
        # 如果成功读取帧
        if ret:
            # 构造输出图像文件路径
            output_path = os.path.join(output_folder, f"frame_{frame_count}.jpg")
            # 保存帧为图像文件
            cv2.imwrite(output_path, frame)
            frame_count += 1
        else:
            break
    
    # 关闭视频文件
    cap.release()
    cv2.destroyAllWindows()

# 视频文件路径
video_path = 'path/to/your/video.mp4'
# 输出图像文件夹路径
output_folder = 'output_frames/'

# 提取帧并保存为图像文件
extract_frames(video_path, output_folder)

用labelimg给图片打标签

1.在对应的虚拟环境终端安装labelimg

pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

2.新建一个文件夹,用来存自己的数据集(!!所有路径必须是英文,不能有中文)

Lableimg— VOC2007 —
{
Annotations #用来存放标签
JPEGImages #用来存放图片
classes.txt #用来放类别名
}

在VOC2007文件夹下打开cmd

输入命令

labelimg JPEGImages classes.txt

3.使用labelimg进行数据标注

设置需要打标签的图片在哪里(JPEGImages)以及打好标签的图片应该放置在哪里(Annotations)

打完标签后label文件夹会放一个classes.txt里面放的是框的种类

4.打标签

打标签的快捷键:
A:切换到上一张图片
D:切换到下一张图片
W:调出标注十字架
del :删除标注框框

五.配置训练模型

在dataset.yml(去掉注释,用绝对路径/)

path:# 表示数据集的路径,即数据集所在的文件夹或目录的路径。

train:#训练集的文件路径或者文件列表

val:#验证集的文件路径或者文件列表

test:#测试集的文件路径或者文件列表

names:#类别名称列表,即数据集中所有可能的类别或标签的名称

训练数据:train.py

python train.py --data dataset.yaml --weights yolov5s.pt --img 640 --batch-size 16 --epochs 50

  •  train.py 是用来执行模型训练的 Python 脚本。

  • --data dataset.yaml: 这个参数指定了数据集的配置文件的路径

  • --weights yolov5s.pt: 这个参数指定了初始权重文件的路径,用来初始化模型的参数

  • --img 640: 这个参数指定了输入图像的尺寸大小,其中 640 表示图像的宽度和高度都是 640 像素

  • --batch-size 16: 这个参数指定了每个批次中包含的样本数量

  • --epochs 50: 这个参数指定了训练的周期数,其中 50 表示训练会进行 50 个周期

6.使用定制模型

model=torch.hub.load('ultralytics/yolov5','custom',path='yolov5/runs/../best.pt,prtrained=True')

  • 'ultralytics/yolov5': 这是模型的名称,指定了要加载的模型是 yolov5,而 ultralytics 是模型的提供者。

    • custom: 这个参数指定了加载的模型类型是自定义的。这意味着该模型并非官方提供的预训练模型,而是在自定义数据集上训练得到的。

    • path='yolov5/runs/../best.pt': 这个参数指定了模型的权重文件的路径。

    • pretrained=True: 这个参数指定了加载的模型是否要使用预训练权重。设置为 True 表示加载的模型将使用预训练权重。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值