使用LabelImg标注数据集及在Yolov5中划分训练集和验证集
2024.04.02 10:21浏览量:18简介:本文将介绍如何使用LabelImg工具标注自己的数据集,并详细阐述如何在Yolov5项目中划分训练集和验证集,从而有效地训练和优化目标检测模型。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
一、使用LabelImg标注数据集
安装LabelImg
在开始之前,您需要安装LabelImg工具。LabelImg是一个图像标注工具,用于创建目标检测、图像分割等任务所需的数据集。您可以通过pip轻松安装:
pip install labelimg
准备图像数据
将需要标注的图片放在一个文件夹中。LabelImg会从这个文件夹中读取图片进行标注。
启动LabelImg
在命令行中运行LabelImg:
labelimg
这将启动一个图形用户界面(GUI),您可以通过这个界面来标注图片。
标注图片
在GUI中,打开需要标注的图片,然后使用鼠标绘制边界框(bounding box)来标注目标对象。您可以为每个对象指定类别,并输入相应的类别名称。
保存标注数据
标注完成后,LabelImg会生成一个XML文件,其中包含每个图片中所有标注对象的边界框坐标和类别信息。通常,每个图片会对应一个XML文件,保存在与图片相同的目录下。
转换标注格式(可选)
Yolov5通常使用COCO格式的数据集,因此您可能需要将LabelImg生成的XML格式转换为COCO格式。这可以通过编写脚本来实现,或者使用现成的工具如
xml_to_coco.py
。
二、在Yolov5中划分训练集和验证集
准备数据集结构
确保您的数据集目录结构符合Yolov5的要求。通常,数据集应该包含
images
、labels
和yaml
三个文件夹,分别存放图片、标注文件和配置文件。划分数据集
您可以使用Python脚本来随机划分数据集为训练集和验证集。以下是一个简单的示例脚本,用于将数据集划分为80%的训练集和20%的验证集:
import os
import shutil
import random
def split_dataset(src_dir, train_dir, val_dir, split_ratio=0.8):
if not os.path.exists(train_dir):
os.makedirs(train_dir)
if not os.path.exists(val_dir):
os.makedirs(val_dir)
files = os.listdir(src_dir)
random.shuffle(files)
train_count = int(len(files) * split_ratio)
train_files = files[:train_count]
val_files = files[train_count:]
for file in train_files:
shutil.copy(os.path.join(src_dir, file), train_dir)
for file in val_files:
shutil.copy(os.path.join(src_dir, file), val_dir)
# 使用示例
src_dir = 'path/to/your/dataset' # 原始数据集目录
train_dir = 'path/to/your/dataset/train' # 训练集目录
val_dir = 'path/to/your/dataset/val' # 验证集目录
split_dataset(src_dir, train_dir, val_dir)
执行此脚本后,您将拥有两个子目录:一个用于训练,另一个用于验证。确保您还更新
data.yaml
或coco.yaml
配置文件,以反映新的训练集和验证集路径。修改配置文件
在Yolov5的
data
目录下,找到相应的.yaml
配置文件(例如coco.yaml
或您自定义的.yaml
文件),并更新train
和val
字段的路径,以指向您刚刚划分的训练集和验证集目录。开始训练
使用Yolov5的训练命令来开始训练您的模型。确保您已经安装了所有必要的依赖项,并且您的环境配置正确。
python train.py --img 640 --batch 16 --epochs 100 --data your_dataset.yaml --weights yolov5s.pt --name your_model

发表评论
登录后可评论,请前往 登录 或 注册