yolov5训练数据集

前提

最近要用yolov5训练看效果,发现网上很多博文都有点问题,感觉不适合我,就自己整理一下,给各位做个参考。

声明一下啊,代码有些是网上找的,然后根据我自己需求改了一下,侵权可以联系我删除。

电脑已配置conda环境,使用pycharm,仅供参考。

一、图像标注

我这里使用的Anaconda,打开Anaconda Prompt,创建一个环境(已有环境可以忽略这步)

conda create -n env_name python=x.x

env_name是环境名,随便取一个能记住的就行,python=x.x是指定python版本。

我这里使用3.9,环境名为了好记取了py39,进入环境

conda activate py39

安装labelimg

pip install labelimg

运行labelimg

labelimg

Open Dir是需要标注的图片路径,Change Save Dir是标注完图片保存的路径,第三个是指保存的格式,现在这个代表保存为VOC格式。

标注前建议打开自动保存,View-->Auto Save Mode。快捷键W为开始画框,A和D控制上下张。

二、数据处理

数据标注完成后,打开yolo v5文件夹,找到yolo v5下data文件夹,在其中新建一个文件夹,命名能记住就行,我标记了几张江西脐橙的数据,此处命名为jiangxi_qicheng。

将图片和标签丢进这个文件夹里,图片文件夹命名为images,标签文件夹命名为xml。

这里有个问题,你如果是按照我的方法来做,标签就是voc格式(文件拓展名为xml),如果你直接标注为yolo格式(拓展名为txt),按照后面的代码就运行不了,我懒得改代码了,如果你是yolo格式,可以使用下方代码,把yolo转换成VOC格式。

import os
import cv2
import pathlib
from xml.dom.minidom import Document


# 支持多种格式图片,可以自己添加
def search_file_name(file_path, img_root):
    file_format = ['.jpg', '.JPG', '.png', '.PNG', '.JPEG', '.jpeg', '.bmp']
    file_path = pathlib.Path(file_path)
    file_name = file_path.stem
    for endsw in file_format:
        file_judge = file_name + endsw
        if os.path.isfile(os.path.join(img_root, file_judge)):
            return file_name, endsw
    return 'stop', 0


def yolo2voc(src_img_root, src_label_root, dst_label_root, class_map):
    not_have_img = []
    if not os.path.exists(dst_label_root):
        os.makedirs(dst_label_root)
    # 遍历所有txt文件
    for i, src_label_name in enumerate(os.listdir(src_label_root)):
        xmlBuilder = Document()
        annotation = xmlBuilder.createElement("annotation")  # 创建annotation标签
        xmlBuilder.appendChild(annotation)
        src_label_path = os.path.join(src_label_root, src_label_name)
        file_name, endsw = search_file_name(src_label_path, src_img_root)
        if file_name == 'stop':
            not_have_img.append(os.path.basename(src_label_path))
            continue
        with open(src_label_path, 'r')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值