YOLO入门教程(一)——训练自己YOLOv10模型【含教程源码+一键分类数据集 + 故障排查】

引言

YOLO(You Only Look Once)作为一个目标检测算法,主要是针对矩形边界框的标注设计的,通常情况下使用的是矩形边界框,常用的LabelImg可以只支持矩形标注,该软件标注的标签可以直接用于应用,本文教程主要介绍如何训练自己的YOLO模型,LabelMe多边形标注的标签如何训练。

前期准备

在开始前建议先下载YOLOv10训练源码,安装Anaconda,VSCode,LabelMe并配置好Python环境,OpenCV环境,PyTorch即可开始训练自己的数据集。

Step1 打标训练

使用LabelMe软件进行打标签,会在原图路径下生成.json标签文件。
在这里插入图片描述

Step2 格式转换

LabelMe生成的.json标签文件格式不适用于YOLO训练,需要转换格式为.txt标签文件,利用以下代码将.json标签文件归一化为YOLO可直接训练的.txt标签文件。

import json
import os
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import numpy as np

#定义分类
name2id = {
   'background':0,'dot':1}
#通过相对路径索引到标签文件
label_floder_path = './source'

def convert(img_size, corners):
    # 输入的image_size[0]为宽,[1]为高
    # 输入的corners[0]和[1]左上角的xy坐标,[2][3]为右下角的xy坐标
    dw = 1./(img_size[0])
    dh = 1./(img_size[1])
    x = (corners[0] + corners[2]) / 2.0 - 1
    y = (corners[1] + corners[3]) / 2.0 - 1
    w = abs(corners[2] - corners[0])
    h = abs(corners[3] - corners[1])
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    print("归一化后矩形中心坐标为(", x, ",", y, ")")
    print("归一化后矩形中心宽高为(", w, ",", h, ")")
    return (x, y, w, h)
 
def decode_json(label_floder_path, label_name):
 
    # txt文件名为:文件名.json转换为文件名.txt
    txt_name = label_floder_path + "/" + label_name[0:-5] + '.txt'
    # 打开txt后续可以进行写入,若不存在改文件会自动创建
    print("新建的txt文件名称为", txt_name)
    txt_file = open(txt_name, 'w')

    # 文件路径+文件名称组成完整路径
    label_path = os.path.join(label_floder_path, label_name)
    print("文件路径为", label_floder_path, "文件名称为", label_name)

    # 打开json后续可进行读取,编码方式为GBK
    data = json.load(open(label_path, 'r', encoding='GBK'))

    
    # 用索引的方式可以得到数据
    img_w = data['imageWidth']
    img_h = data['imageHeight']
 
    for i in data['shapes']:
        
        label_name = i['label']
        # 标签形状为矩形时的转换方式
        if (i['shape_type'] == 'rectangle'):
            print("标签形状为矩形进行转换")
 
            x1 = int(i['points'][0][0])
            y1 = int(i['points'][0][1])
            x2 = int(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值