目标检测数据集制作(VOC2007格式数据集制作和处理教程)

  • VOC2007数据集结构(目标检测+图像分割)
  • #VOC2007数据集结构如下:
    VOC2007
    	|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
    				 #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
    	|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
    		|-Layout#存放的是具有人体部位的数据(如人的head、hand、feet等等)
    		|-Main#存放的是图像物体识别的数据
    		|-Segmentation#存放的是可用于分割的数据
    	|-JPEGImages#存放的是原图片
    	|-SegmentationClass#按类别进行图像分割,同一类别的物体会被标注为相同颜色
    	|-SegmentationObject#按对象进行图像分割,即使是同一类别的物体会被标注为不同的颜色。

    本次的是目标检测,对应的如下结构

  • #VOC2007数据集结构如下:
    VOC2007
    	|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
    				 #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
    	|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
    		|-Main#存放的是图像物体识别的数据
    	|-JPEGImages#存放的是原图片

    1、安装工具

此次数据标注使用labelImg工具,我是在pycharm终端中进行pip安装的,安装方式很多,就不一一列举了,还需要安装lxml库和pytq可以,安装步骤如下:

pip3 install labelImg

pip install lxml

pip install pytq

进入标注工具,只需要在pycharm终端处输入LabelImg,LabelImg工具自动弹出打开,如下:

2、数据集准备

在VOC2007文件夹下创建这三个文件夹:

  • Annotations文件夹该文件下存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片。
  • JPEGImages文件夹:该文件夹下存放的是数据集图片(原图),包括训练和测试图片。把原图数据放到此文件夹下
  • ImageSets文件夹该文件夹下存放了三个文件,分别是Layout、Main、Segmentation。在这里我们只用存放图像数据的Main文件

ImageSets下创建Main文件夹,在该文件夹下创建如下4个txt文件:

  • test.txt:测试集
  • train.txt:训练集
  • val.txt:验证集
  • trainval.txt:训练和验证集

对数据重命名

  • 处理代码:
import os

path = r"D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\JPEGImages"  # JPEGImages文件夹所在路径
filelist = os.listdir(path)  # 该文件夹下所有的文件(包括文件夹)
count = 0
for file in filelist:
    print(file)
for file in filelist:  # 遍历所有文件
    Olddir = os.path.join(path, file)  # 原来的文件路径
    if os.path.isdir(Olddir):  # 如果是文件夹则跳过
        continue
    filename = os.path.splitext(file)[0]  # 文件名
    filetype = '.jpg'  # 文件扩展名
    Newdir = os.path.join(path, str(count).zfill(6) + filetype)  # 用字符串函数zfill 以0补全所需位数
    os.rename(Olddir, Newdir)  # 重命名
    count += 1

4、数据标注

  • 添加标注数据集

安装好的工具,输入LabelImge打开标注工具,然后添加需要标注的数据文件夹,数据原图是放在JPEGImages‘文件夹中的,操作如下图:
在这里插入图片描述

  • 标注方式选择
    标注方式选择Create rectBox矩形标注,或者选择快捷键w键快速标注:

在这里插入图片描述

  • 标注及标签设置
    用框框住标注目标,标注完成后,弹出标签值框,输入需要添加的标签,点击ok:
  • 标注结果保存
    标注结果默认方式每一次保存都需要选择保存文件夹,快捷键选择默认保存文件夹,使用快捷键Ctrl+r键,选择默认保存的文件夹为Annotation:
  • 在这里插入图片描述第一次标注设置好后,接下来就是快速标注,快捷键:
    w键选择标注,Ctrl+s键保存,d键切换下一张图片直到标注完成。
  • 标注结果展示
    标注好后,标注结果保存在VOC2007下的Annotation文件内,内容展示如下:

5、数据处理

  • 对标注结果xml文件夹进行数据处理
    import os
    import random
    
    trainval_percent = 0.9  # 验证集和训练集占的百分比
    train_percent = 0.7  # 训练集占的百分比
    xmlfilepath = r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\Annotations'  # Annotation文件夹所在位置
    txtsavepath = r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main'  # ImageSets文件下的Main文件夹所在位置
    total_xml = os.listdir(xmlfilepath)
    
    num = len(total_xml)
    list = range(num)
    tv = int(num * trainval_percent)
    tr = int(tv * train_percent)
    trainval = random.sample(list, tv)
    train = random.sample(trainval, tr)
    # Main文件夹下所对应的四个txt文件夹路径
    ftrainval = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\trainval.txt', 'w')
    ftest = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\test.txt', 'w')
    ftrain = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\train.txt', 'w')
    fval = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\val.txt', 'w')
    
    for i in list:
        name = total_xml[i][:-4] + '\n'
        if i in trainval:
            ftrainval.write(name)
            if i in train:
                ftrain.write(name)
            else:
                fval.write(name)
        else:
            ftest.write(name)
    
    ftrainval.close()
    ftrain.close()
    fval.close()
    ftest.close()

    至此,VOC2007格式数据集制作完成。

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VOC格式数据集制作涉及到对图像和标注信息的整理和组织。首先,需要准备图像数据集,这些图像应该包含你感兴趣的目标物体。可以使用不同的方法来获取这些图像,包括从互联网上下载或者自己采集。然后,需要对图像进行标注,标注的方式可以是使用矩形框标注物体的位置或者进行像素级的标注。接下来,需要将图像和标注信息整理成VOC格式数据集。 VOC格式数据集的文件夹结构如下所示: - VOCdevkit/ - VOC2007/ 或者 VOC2012/ (根据你使用的数据集年份选择一个) - Annotations/ (包含所有图像的标注XML文件) - ImageSets/ (包含用于训练、验证和测试的图像索引文件) - Main/ (包含训练、验证和测试集的图像索引文件) - JPEGImages/ (包含所有的图像文件) 在VOC格式数据集中,每个图像都有一个对应的XML文件,用于存储标注信息。XML文件包含物体的类别、边界框的坐标等信息。图像索引文件用于指示哪些图像用于训练、验证和测试。 要制作VOC格式数据集,你需要按照上述的文件夹结构组织你的数据集。对于每个图像,你需要创建一个对应的XML文件来存储标注信息。在XML文件中,你需要指定物体的类别和边界框的位置。 为了训练和测试模型,还需要创建图像索引文件,将图像分为训练、验证和测试集。 在制作VOC格式数据集时,需要保持文件格式和组织形式的统一,以确保后续的代码处理的统一性。可以根据自己的需求和任务对数据集进行定制和重构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【机器学习】 - 目标检测 - VOC格式数据集介绍与自己制作](https://blog.csdn.net/qq_41289920/article/details/105940011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值