制作VOC数据集

制作VOC数据集

  1. PASCAL VOC数据集的构成:
--VOC2007
   --Annotations
   --ImageSets
     --Main
     --Layout
     --Segmentation
   --JPEGImages
   --SegmentationClass
   --SegmentationObject

*JPEGImages:存放图片。
*Annotations:每张图片对应的XML文件,内容是标记的各个目标的位置和类别信息
*ImageSets:Layout 存放人体部位的数据。(用不上)
Segmentation 存放分割的数据。(用不上)
Main 存放的是目标识别的数据,主要有test.txt , train.txt, val.txt, trainval.txt(测试集图片的文件名、训练集图片的文件名、训练验证集图片的文件名、验证集图片的文件名)四个文件。
*SegmentationClass与SegmentationObject:存放的是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别 。object segmentation 标注出每一个像素属于哪一个物体。

  1. 创建各个文件
import os
def make_voc_dir():
    os.makedirs('E:/headX/Annotations')
    os.makedirs('E:/headX/ImageSets')
    os.makedirs('E:/headX/ImageSets/Main')
    os.makedirs('E:/headX/ImageSets/Layout')
    os.makedirs('E:/headX/ImageSets/Segmentation')
    os.makedirs('E:/headX/JPEGImages')
    os.makedirs('E:/headX/SegmentationClass')
    os.makedirs('E:/headX/SegmentationObject')
if __name__ == '__main__':
    make_voc_dir()
  1. 准备所需图片若干张,放入指定文件夹。
    step1.将准备好的图片进行resize,设置成大小相同的图像。
import cv2
import glob
import os

image_path = "E:/headX/img/*.jpg"  # 原始图片路径
output_path = "E:/headX/JPEGImages/"   # 修改后的保存路径
count = 0
for jpgfile in glob.glob(image_path):
    
    #img = Image.open(jpgfile)
    image = cv2.imread(jpgfile)
    image = cv2.resize(image,(1280,720),interpolation=cv2.INTER_CUBIC)
    cv2.imwrite(os.path.join(output_path,os.path.basename(jpgfile)), image)
    print("save%d"%count)
    count += 1
print("resize finished!")

step2.将调整好大小的图片进行顺序重命名。

import os
path = input('请输入文件路径:/……/')

#获取该目录下所有文件,存入列表中
fileList = os.listdir(path)
n = 0
m = 0   # 图片编号从m+1开始
for i in fileList:
    #设置旧文件名(就是路径+文件名)
    oldname = path + os.sep + fileList[n]   # os.sep添加系统分隔符
    #设置新文件名
    # newname = path+os.sep  + str(m+1)+".jpg"
    newname = path + os.sep + '%04d' % m + ".jpg"
    os.rename(oldname, newname)   #用os模块中的rename方法对文件改名
    print(oldname, '======>', newname)
    n += 1
    m += 1

step3.采用labelimg标注图像,生成相应的Annotations目录下的XML文件。(如何安装labelimg请期待下一篇)
本人采用anaconda安装,因此labelImg的进入如下:
打开Anaconda Prompt(anaconda),
输入conda activate pt
cd *\labelImg-master
python labelImg.py
进入labelImg进行图像标注,获得.xml文件。
在这里插入图片描述
step4.生成ImageSets下的Main(test.txt , train.txt, val.txt, trainval.txt)。

# 4make_imagesets
import os
import random

xmlfilepath = r'E:/headX/Annotations/'  # xml文件的路径
saveBasePath = r'E:/headX/ImageSets/'  # 生成的txt文件的保存路径

trainval_percent = 0.9  # 训练验证集占整个数据集的比重(划分训练集和测试验证集)
train_percent = 0.8  # 训练集占整个训练验证集的比重(划分训练集和验证集)
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)

print("train and val size", tv)
print("traub suze", tr)
ftrainval = open(os.path.join(saveBasePath, 'Main/trainval.txt'), 'w')
ftest = open(os.path.join(saveBasePath, 'Main/test.txt'), 'w')
ftrain = open(os.path.join(saveBasePath, 'Main/train.txt'), 'w')
fval = open(os.path.join(saveBasePath, '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()

得到图中所示的.txt文件。
在这里插入图片描述
至此基本完成了VOC数据集制作。
主要参考:
https://blog.csdn.net/qq_40927867/article/details/114984762

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
遥感数据制作VOC数据集是一种将遥感图像数据转化为VOC数据集格式的过程。VOC数据集是一种常用的目标检测识别数据集格式,适用于训练深度学习模型进行目标检测任务。 首先,需要收集大量的遥感图像数据,可以通过航拍、卫星遥感等方式获取。这些图像数据应涵盖各种地物、场景和目标。 接下来,需要对这些遥感图像进行标注。标注包括两个主要步骤:目标框标注和类别标注。 目标框标注是指在遥感图像中确定目标物体的位置和边界框。可以使用标注工具(如LabelImg)手动框选目标物体,并记录目标框的坐标信息。 类别标注是对每个目标框指定一个类别标签。遥感图像中可能存在多种目标物体,如车辆、建筑物、道路等。针对每个目标框,可以手动选择适当的类别标签(如"car"、"building"、"road"等)。 完成标注后,需要将标注信息转化为VOC数据集格式。VOC数据集格式包括图像文件、标注文件和类别文件。图像文件保留原始的遥感图像,标注文件记录每个目标框的位置和类别信息,类别文件记录所有可能的类别标签。 最后,通过使用相关工具(如LabelImg)对VOC数据集进行校验和修改,确保数据集的质量和准确性。可以检查每个目标框的位置是否正确,并删除不准确或冗余的标注。 通过以上步骤,就能够制作出一份基于遥感数据的VOC数据集,可以用于训练目标检测模型,提高遥感图像的自动识别和分析能力,应用于航空、农林、智能交通等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值