处理tianchi街景字符编码识别数据集为yolov5格式数据集并训练

这篇博客介绍了如何利用Python脚本将JSON文件中的标注数据转换为YOLOv5训练所需的格式。首先,脚本读取'mchar_train.json'和'mchar_val.json'文件,然后分别处理train和val数据集中的图像,生成对应的txt标签文件。每个txt文件包含了图像中物体的标签、中心坐标、宽高比例等信息。最后,使用`python train.py`命令启动训练,参数包括图像大小、批大小、训练轮数、数据配置文件、初始权重和缓存选项。训练结果保存在指定的runs目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在yolov5的datasets文件夹中,早images/train和images/test中为已经放进去的图片
在这里插入图片描述
下面labels中的train和val都是空的
根据两个json文件导入labels
train中数据导入

import os
import cv2
import json
train_json = json.load(open('mchar_train.json'))
for x in train_json:
    img=cv2.imread("images/train/"+x)
    width=img.shape[1]
    height=img.shape[0]
    train_label =list(map(int,train_json[x]['label']))
    train_height=list(map(int,train_json[x]['height']))
    train_left=list(map(int,train_json[x]['left']))
    train_width=list(map(int,train_json[x]['width']))
    train_top=list(map(int,train_json[x]['top']))
    loc_pic="labels/train/"+x.split('.')[0]+'.txt' 
    pic=open(loc_pic,"w")
    for i in range(len(train_label)):
        pic_label=train_label[i]
        pic_x=(train_left[i]+train_width[i]/2)/width
        pic_y=(train_top[i]+train_height[i]/2)/height
        pic_width=train_width[i]/width
        pic_height=train_height[i]/height            
        pic.write(str(pic_label)+" "+str(pic_x)+" "+str(pic_y)+" "+str(pic_width)+" "+str(pic_height))
        pic.write("\n")
    pic.close()

val中数据导入

import os
import cv2
import json
val_json = json.load(open('mchar_val.json'))
for x in val_json:
    img=cv2.imread("images/val/"+x)
    width=img.shape[1]
    height=img.shape[0]
    val_label =list(map(int,val_json[x]['label']))
    val_height=list(map(int,val_json[x]['height']))
    val_left=list(map(int,val_json[x]['left']))
    val_width=list(map(int,val_json[x]['width']))
    val_top=list(map(int,val_json[x]['top']))
    loc_pic="labels/val/"+x.split('.')[0]+'.txt' 
    pic=open(loc_pic,"w")
    for i in range(len(val_label)):
        pic_label=val_label[i]
        pic_x=(val_left[i]+val_width[i]/2)/width
        pic_y=(val_top[i]+val_height[i]/2)/height
        pic_width=val_width[i]/width
        pic_height=val_height[i]/height            
        pic.write(str(pic_label)+" "+str(pic_x)+" "+str(pic_y)+" "+str(pic_width)+" "+str(pic_height))
        pic.write("\n")
    pic.close()

然后数据就导入了labels文件夹,具体如下
在这里插入图片描述
进行训练

python  train.py --img 320 --batch 64 --epochs 100 --data street_yolo.yaml --weights yolov5s.pt --cache

训练结果回报存在runs/train/exp6中
在这里插入图片描述
训练完成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值