深度学习 — VOC数据集 处理工具类

article/2025/10/29 18:14:00

文章目录

  • 深度学习 — VOC 数据集 & 处理工具类
    • 一、数据集简介
    • 二、数据集内容
      • 1. Annotations
        • 1) VOC 数据集类别统计
        • 2) VOC 标注文件解析
      • 2. ImageSets
        • 1) VOC数据集划分
      • 3. JPEGImages
      • 4. SegmentationClass
      • 5. SegmentationObject
    • 三 VOC 数据集工具类
    • 四、参考资料

  • 转载请注明原文出处:https://blog.csdn.net/pentiumCM/article/details/109750329

深度学习 — VOC 数据集 & 处理工具类

一、数据集简介

  • VOC数据集官网

  • PASCAL VOC 2007 和 2012 数据集总共分 4 个大类:vehicle、household、animal、person,总共 20 个小类(加背景 21 类),预测的时候是只输出下图中黑色粗体的类别

    在这里插入图片描述

二、数据集内容

  1. 目录结构:

    以VOC2012数据集为例,数据集下载后解压得到一个名为VOCdevkit的文件夹,该文件夹结构如下:

    .
    └── VOCdevkit     #根目录└── VOC2012   #不同年份的数据集,这里只列举了2012的,还有2007等其它年份的├── Annotations        # 存放的是数据集标签文件,xml格式,与JPEGImages中的图片一一对应├── ImageSets          # 数据集的划分文件,txt格式,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本│   ├── Action│   ├── Layout│   ├── Main			│   └── Segmentation├── JPEGImages         # 存放的是数据集图片├── SegmentationClass  # 存放的是图片,语义分割相关└── SegmentationObject # 存放的是图片,实例分割相关
    

以下将介绍每个文件夹的内容。

1. Annotations

  1. 简介:

    Annotation文件夹存放的是 xml 格式的标签文件,每个 xml 文件都对应于 JPEGImages 文件夹的一张同名的图片。
    其中 xml 主要介绍了对应图片的基本信息,如来自那个文件夹、文件名、来源、图像尺寸以及图像中包含哪些目标以及目标的信息等等,内容如下:

    <annotation><folder>VOC2012</folder><filename>2007_000027.jpg</filename><source><database>The VOC2007 Database</database><annotation>PASCAL VOC2007</annotation><image>flickr</image></source><size><width>486</width><height>500</height><depth>3</depth></size><segmented>0</segmented><object><name>person</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>174</xmin><ymin>101</ymin><xmax>349</xmax><ymax>351</ymax></bndbox><part><name>head</name><bndbox><xmin>169</xmin><ymin>104</ymin><xmax>209</xmax><ymax>146</ymax></bndbox></part><part><name>hand</name><bndbox><xmin>278</xmin><ymin>210</ymin><xmax>297</xmax><ymax>233</ymax></bndbox></part><part><name>foot</name><bndbox><xmin>273</xmin><ymin>333</ymin><xmax>297</xmax><ymax>354</ymax></bndbox></part><part><name>foot</name><bndbox><xmin>319</xmin><ymin>307</ymin><xmax>340</xmax><ymax>326</ymax></bndbox></part></object>
    </annotation>
    

1) VOC 数据集类别统计

  1. python代码:

    # !/usr/bin/env python
    # encoding: utf-8
    '''
    @Author  : pentiumCM
    @Email   : 842679178@qq.com
    @Software: PyCharm
    @File    : voc_label_statistics.py
    @Time    : 2020/12/4 23:56
    @desc	 : VOC 数据集类别统计
    '''import xml.dom.minidom as xmldom
    import osdef voc_label_statistics(annotation_path):'''VOC 数据集类别统计:param annotation_path: voc数据集的标签文件夹:return: {'class1':'count',...}'''count = 0annotation_names = [os.path.join(annotation_path, i) for i in os.listdir(annotation_path)]labels = dict()for names in annotation_names:names_arr = names.split('.')file_type = names_arr[-1]if file_type != 'xml':continuefile_size = os.path.getsize(names)if file_size == 0:continuecount = count + 1print('process:', names)xmlfilepath = namesdomobj = xmldom.parse(xmlfilepath)# 得到元素对象elementobj = domobj.documentElement# 获得子标签subElementObj = elementobj.getElementsByTagName("object")for s in subElementObj:label = s.getElementsByTagName("name")[0].firstChild.datalabel_count = labels.get(label, 0)labels[label] = label_count + 1print('文件标注个数:', count)return labelsif __name__ == '__main__':annotation_path = "F:/develop_code/python/ssd-pytorch/VOCdevkit/VOC2007/Annotations"label = voc_label_statistics(annotation_path)print(label)
    

2) VOC 标注文件解析

  1. 简介:

    将 VOC 数据集的标注汇总到 txt 中,(train.txt,val.txt,test.txt — 分别对应训练集,验证集,测试集)

    如下图所示:每一行代表 一张图片的路径 以 及 对应的标注框(xyxy)和 label

    在这里插入图片描述

  2. python代码:

    #!/usr/bin/env python
    # encoding: utf-8
    '''
    @Author  : pentiumCM
    @Email   : 842679178@qq.com
    @Software: PyCharm
    @File    : voc_annotation.py
    @Time    : 2020/11/25 16:54
    @desc	 : VOC 标注文件处理
    '''import os
    import xml.etree.ElementTree as ETdef convert(size, box):"""VOC 的标注转为 yolo的标注,即 xyxy -> xywh:param size: 图片尺寸 (w, h):param box: 标注框(xyxy):return:"""dw = 1. / size[0]dh = 1. / size[1]# 中心点坐标x = (box[0] + box[2]) / 2.0y = (box[1] + box[3]) / 2.0# 宽高w = box[2] - box[0]h = box[3] - box[1]# 归一化x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def xml_annotation(Annotations_path, image_id, out_file, classes, label_type):"""解析 VOC 的 xml 标注文件,汇总到 txt 文件中:param Annotations_path     数据集标注文件夹:param image_id:            对应于每张图片标注的索引:param out_file:            汇总数据集标注 的输出文件:param classes:             数据集类别:param label_type:          标注解析方式:xyxy / xywh:return:"""# 做该校验,为了方便对背景进行训练annotation_filepath = os.path.join(Annotations_path, image_id + '.xml')file_size = os.path.getsize(annotation_filepath)if file_size > 0:in_file = open(os.path.join(Annotations_path, '%s.xml' % image_id), encoding='utf-8')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (int(float(xmlbox.find('xmin').text)),int(float(xmlbox.find('ymin').text)),int(float(xmlbox.find('xmax').text)),int(float(xmlbox.find('ymax').text)))b_box = bif label_type == 'xywh':# 标注格式:x,y,w,h,labelb_box = convert((w, h), b)elif label_type == 'xyxy':# 标注格式:x,y,x,y,labelpass# yolo: out_file.write(str(cls_id) + " " + " ".join([str(a) for a in b_box]) + '\n')out_file.write(" " + ",".join([str(a) for a in b_box]) + ',' + str(cls_id))def convert_annotation(dataset_path, classes, label_type='xyxy'):"""2. 处理标注结果:汇总数据集标注到 txt:param dataset_path     VOC 数据集路径:param classes:         VOC 数据集标注类别:param label_type:      标注解析方式:xyxy / xywh:return:"""JPEGImages_path = os.path.join(dataset_path, 'JPEGImages')Annotations_path = os.path.join(dataset_path, 'Annotations')ImageSets_path = os.path.join(dataset_path, 'ImageSets')assert os.path.exists(JPEGImages_path)assert os.path.exists(Annotations_path)assert os.path.exists(ImageSets_path)sets = ['train', 'test', 'val']for image_set in sets:# 数据集划分文件:ImageSets/Main/train.txtds_divide_file = os.path.join(ImageSets_path, 'Main', '%s.txt' % (image_set))# (训练,验证,测试集)数据集索引image_ids = open(ds_divide_file).read().strip().split()list_file = open(os.path.join(dataset_path, '%s.txt' % (image_set)), 'w', encoding='utf-8')for image_id in image_ids:list_file.write(os.path.join(JPEGImages_path, '%s.jpg' % (image_id)))xml_annotation(Annotations_path, image_id, list_file, classes, label_type)list_file.write('\n')list_file.close()if __name__ == '__main__':# 数据集路径dataset_path = 'mgq_ds'classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow","diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa","train", "tvmonitor"]label_type = 'xyxy'convert_annotation(dataset_path='F:/develop_code/python/ssd-pytorch/VOCdevkit/VOC2007',classes=classes,label_type=label_type)
    

2. ImageSets

  1. 简介:

    ImageSets文件夹下存放了三个文件,分别是 Layout,Main,Segmentation

    • Main:
      ImageSets里Main文件夹,存放训练的索引文件,用到4个文件:
      • train.txt: 是用来训练的图片文件的文件名列表 (训练集)
      • val.txt: 是用来验证的图片文件的文件名列表 (验证集)
      • trianval.txt:是用来训练和验证的图片文件的文件名列表 (训练集 + 验证集)
      • test.txt:是用来测试的图片文件的文件名列表 (测试集)

1) VOC数据集划分

  1. 完整代码:

    (训练集,验证集,测试集)

    # !/usr/bin/env python
    # encoding: utf-8
    '''
    @Author  : pentiumCM
    @Email   : 842679178@qq.com
    @Software: PyCharm
    @File    : dataset_divide.py
    @Time    : 2020/11/25 16:51
    @desc	 : 生成:trainval.txt,train.txt,val.txt,test.txt为ImageSets文件夹下面Main子文件夹中的训练集+验证集、训练集、验证集、测试集的划分
    '''import os
    import randomdef ds_partition(annotation_filepath, ds_divide_save__path, train_percent=0.8, trainval_percent=1):"""数据集划分:训练集,验证集,测试集。在ImageSets/Main/生成 train.txt,val.txt,trainval.txt,test.txt:param annotation_filepath:     标注文件的路径 Annotations:param ds_divide_save__path:    数据集划分保存的路径 ImageSets/Main/:param train_percent:           训练集占(训练集+验证集)的比例:param trainval_percent:        (训练集+验证集)占总数据集的比例。测试集所占比例为:1-trainval_percent:return:"""if not os.path.exists(ds_divide_save__path):os.makedirs(ds_divide_save__path)assert os.path.exists(annotation_filepath)assert os.path.exists(ds_divide_save__path)# train_percent:训练集占(训练集+验证集)的比例# train_percent = 0.8# trainval_percent:(训练集+验证集)占总数据集的比例。测试集所占比例为:1-trainval_percent# trainval_percent = 1temp_xml = os.listdir(annotation_filepath)total_xml = []for xml in temp_xml:if xml.endswith(".xml"):total_xml.append(xml)num = len(total_xml)list = range(num)tv_len = int(num * trainval_percent)tr_len = int(tv_len * train_percent)test_len = int(num - tv_len)trainval = random.sample(list, tv_len)train = random.sample(trainval, tr_len)print("train and val size:", tv_len)print("train size:", tr_len)print("test size:", test_len)ftrainval = open(os.path.join(ds_divide_save__path, 'trainval.txt'), 'w')ftest = open(os.path.join(ds_divide_save__path, 'test.txt'), 'w')ftrain = open(os.path.join(ds_divide_save__path, 'train.txt'), 'w')fval = open(os.path.join(ds_divide_save__path, '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()if __name__ == '__main__':# 数据集根路径dataset_path = r'F:/develop_code/python/ssd-pytorch/VOCdevkit/VOC2007'annotation_filepath = os.path.join(dataset_path, 'Annotations')divide_save_path = os.path.join(dataset_path, 'ImageSets/Main')ds_partition(annotation_filepath, divide_save_path)
    

3. JPEGImages

  1. 简介:

    JPEGImages文件夹下存放的是数据集图片,包含训练和测试图片。


4. SegmentationClass


5. SegmentationObject

三 VOC 数据集工具类

  1. 工具类简介:

    • 工具类包含:
      • VOC 数据集类别统计
      • VOC数据集划分:【(训练集,验证集),测试集】
      • VOC标注结果处理,包括:
        • VOC 的标注转为 yolo的标注,即 xyxy -> xywh
        • 解析 VOC 的 xml 标注文件
        • 汇总数据集标注到 txt
  2. 完整代码:

    #!/usr/bin/env python
    # encoding: utf-8
    '''
    @Author  : pentiumCM
    @Email   : 842679178@qq.com
    @Software: PyCharm
    @File    : voc_data_util.py
    @Time    : 2021/6/30 21:31
    @desc	 : VOC 数据集工具类
    '''
    import os
    import random
    import xml.dom.minidom as xmldom
    import xml.etree.ElementTree as ETclass VOCDataUtil:"""VOC 数据集工具类"""def __init__(self, dataset_path,JPEGImages_dir='JPEGImages', annotation_dir='Annotations', ImageSets_dir='ImageSets',label_type='xyxy'):"""VOC 格式数据集初始化:param dataset_path:        数据集文件夹根路径:param JPEGImages_dir:      图片文件夹:param annotation_dir:      标注文件夹:param ImageSets_dir:       数据集划分文件夹:param label_type:          解析标注方式 xyxy(ssd)/ xywh(yolo)"""self.dataset_path = dataset_pathself.JPEGImages = os.path.join(self.dataset_path, JPEGImages_dir)self.Annotations = os.path.join(self.dataset_path, annotation_dir)self.ImageSets = os.path.join(self.dataset_path, ImageSets_dir)self.label_type = label_typeassert os.path.exists(self.JPEGImages)assert os.path.exists(self.Annotations)def fill_blanklabel(self):"""填充 空白(背景)标注文件:return:"""JPEGImages_names = [i.split('.')[0] for i in os.listdir(self.JPEGImages)]Annotations_names = [i.split('.')[0] for i in os.listdir(self.Annotations)]background_list = list(set(JPEGImages_names).difference(set(Annotations_names)))  # 前面有而后面中没有的for item in background_list:file_name = item + '.xml'file_path = os.path.join(self.Annotations, file_name)open(file_path, "w")print('process:', file_path)def remove_blanklabel(self):"""删除 空白(背景)标注文件:return:"""Annotations_names = [os.path.join(self.Annotations, i) for i in os.listdir(self.Annotations)]for item in Annotations_names:file_size = os.path.getsize(item)if file_size == 0:os.remove(item)print('process:', item)def voc_label_statistics(self):'''voc数据集类别统计:return: {'class1':'count',...}'''count = 0annotation_names = [os.path.join(self.Annotations, i) for i in os.listdir(self.Annotations)]labels = dict()for names in annotation_names:names_arr = names.split('.')file_type = names_arr[-1]if file_type != 'xml':continuefile_size = os.path.getsize(names)if file_size == 0:continuecount = count + 1print('process:', names)xmlfilepath = namesdomobj = xmldom.parse(xmlfilepath)# 得到元素对象elementobj = domobj.documentElement# 获得子标签subElementObj = elementobj.getElementsByTagName("object")for s in subElementObj:label = s.getElementsByTagName("name")[0].firstChild.datalabel_count = labels.get(label, 0)labels[label] = label_count + 1print('文件标注个数:', count)return labelsdef dataset_divide(self, train_percent=0.8, trainval_percent=1):"""1. 划分数据集:【(训练集,验证集),测试集】在ImageSets/Main/生成 trainval.txt,train.txt,val.txt,test.txt:param train_percent:           train_percent = 训练集 / (训练集 + 验证集):param trainval_percent:        trainval_percent = (训练集 + 验证集) / 总数据集。测试集所占比例为:1-trainval_percent:return:"""# 数据集划分保存的路径 ImageSets/Main/ds_divide_save__path = os.path.join(self.ImageSets, 'Main')if not os.path.exists(ds_divide_save__path):os.makedirs(ds_divide_save__path)# train_percent:训练集占(训练集+验证集)的比例# train_percent = 0.8# trainval_percent:(训练集+验证集)占总数据集的比例。测试集所占比例为:1-trainval_percent# trainval_percent = 1temp_xml = os.listdir(self.Annotations)total_xml = []for xml in temp_xml:if xml.endswith(".xml"):total_xml.append(xml)num = len(total_xml)list = range(num)tv_len = int(num * trainval_percent)tr_len = int(tv_len * train_percent)test_len = int(num - tv_len)trainval = random.sample(list, tv_len)train = random.sample(trainval, tr_len)print("train and val size:", tv_len)print("train size:", tr_len)print("test size:", test_len)ftrainval = open(os.path.join(ds_divide_save__path, 'trainval.txt'), 'w')ftest = open(os.path.join(ds_divide_save__path, 'test.txt'), 'w')ftrain = open(os.path.join(ds_divide_save__path, 'train.txt'), 'w')fval = open(os.path.join(ds_divide_save__path, '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()def convert(self, size, box):"""VOC 的标注转为 yolo的标注,即 xyxy -> xywh:param size: 图片尺寸 (w, h):param box: 标注框(xyxy):return:"""dw = 1. / size[0]dh = 1. / size[1]# 中心点坐标x = (box[0] + box[2]) / 2.0y = (box[1] + box[3]) / 2.0# 宽高w = box[2] - box[0]h = box[3] - box[1]# 归一化x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def xml_annotation(self, image_id, out_file, classes):"""解析 voc 的 xml 标注文件:param image_id:    对应于每张图片标注的索引:param out_file:    汇总数据集标注 的输出文件:param classes:     数据集类别:return:"""# 做该校验,为了方便对背景进行训练annotation_filepath = os.path.join(self.Annotations, image_id + '.xml')file_size = os.path.getsize(annotation_filepath)if file_size > 0:in_file = open(os.path.join(self.Annotations, '%s.xml' % image_id), encoding='utf-8')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (int(float(xmlbox.find('xmin').text)),int(float(xmlbox.find('ymin').text)),int(float(xmlbox.find('xmax').text)),int(float(xmlbox.find('ymax').text)))b_box = bif self.label_type == 'xywh':# 标注格式:x,y,w,h,labelb_box = self.convert((w, h), b)elif self.label_type == 'xyxy':# 标注格式:x,y,x,y,labelpass# yolo: out_file.write(str(cls_id) + " " + " ".join([str(a) for a in b_box]) + '\n')out_file.write(" " + ",".join([str(a) for a in b_box]) + ',' + str(cls_id))def convert_annotation(self, classes):"""2. 处理标注结果:汇总数据集标注到 txt:param classes:         数据集类别:return:"""sets = ['train', 'test', 'val']for image_set in sets:# 数据集划分文件:ImageSets/Main/train.txtds_divide_file = os.path.join(self.ImageSets, 'Main', '%s.txt' % (image_set))# (训练,验证,测试集)数据集索引image_ids = open(ds_divide_file).read().strip().split()list_file = open(os.path.join(self.dataset_path, '%s.txt' % (image_set)), 'w', encoding='utf-8')for image_id in image_ids:list_file.write(os.path.join(self.JPEGImages, '%s.jpg' % (image_id)))self.xml_annotation(image_id, list_file, classes)list_file.write('\n')list_file.close()if __name__ == '__main__':# VOC_CLASS = [#     "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog",#     "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"# ]vocutil = VOCDataUtil(dataset_path='E:/project/nongda/code/ssd-keras-nd/VOCdevkit/VOC2007', label_type='xyxy')# 1. 汇总数据集标注类别label_dict = vocutil.voc_label_statistics()cus_classes = []for key in label_dict.keys():cus_classes.append(key)# 按照字符串进行正序排序cus_classes.sort()# 2. 划分数据集vocutil.dataset_divide()# 3. 处理标注结果vocutil.convert_annotation(cus_classes)

四、参考资料

  • https://blog.csdn.net/mzpmzk/article/details/88065416

http://chatgpt.dhexx.cn/article/SDQlv9HF.shtml

相关文章

讲解目标检测数据集--------VOC数据集和COCO数据集的使用

仅供学习参考&#xff0c;如有不足&#xff0c;敬请指正 一&#xff1a;VOC数据集 VOC官方网站&#xff1a; http://host.robots.ox.ac.uk/pascal/VOC/ 一般情况下&#xff0c;大家使用2007和2012比较多 voc2007数据集地址&#xff1a; http://host.robots.ox.ac.uk/pasc…

VOC数据集解析 VOC2007解析

VOC数据是 PASCAL VOC Challenge 用到的数据集&#xff0c;官网&#xff1a;http://host.robots.ox.ac.uk/pascal/VOC/ 备注&#xff1a;VOC数据集常用的均值为&#xff1a;mean_RGB(122.67891434, 116.66876762, 104.00698793) pytorch上通用的数据集的归一化指标为&#x…

VOC2007数据集

官方下载地址&#xff1a; https://pjreddie.com/projects/pascal-voc-dataset-mirror/ 下面以voc2017为例 下载训练和验证集&#xff1a; http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar 下载测试集&#xff1a; http://host.robots.ox.ac.uk…

voc数据集格式详解

计算机视觉经常会用到voc数据集 以如下数据集为例 http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/semantic_contours/benchmark.tgz Annotations 包含着xml文件&#xff0c;就是利用roLabelImg进行标注 JPEGImages 里面就是原始的图片 train.txt和va…

PASCAL VOC数据集分析

PASCAL VOC数据集分析 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集&#xff0c;从2005年到2012年每年都会举行一场图像识别challenge。 本文主要分析PASCAL VOC数据集中和图像中物体识别相关的内容。 在这里采用PASCAL VOC2012作为例子。下载地址为&#xff…

VOC数据集详解

VOC数据集可以用于目标检测、目标分割。 该文件夹下有三个子文件。分别为&#xff1a;ImageSets,JPEGImages,SegmentationClass JPEGImages该文件夹下一般放置原图&#xff1b; SegmentationClass存放标签文件&#xff1b; 该分割结果图是一个灰度图&#xff0c;例如属于飞机部…

VOC数据集介绍及构建自己的VOC格式目标检测数据集

文章目录 1、安装标注工具1.1 ubuntu linux 系统1.2 windows系统 2、labelimg使用方法3、标注结果文件说明3.1 Pascal VOC数据集介绍3.2 Pascal VOC格式3.3 YOLO格式说明 4、标注图片和结果文件整理4.1 Pascal VOC数据组织结构4.2 自定义数据集整理为Pascal VOC格式4.3 Pascal …

VOC数据集制作

VOC数据集制作 1 获取数据1.1 获取图片1.2 图片大小重置1.3 图片重命名 2 标记图片3 按照PascalVOC数据集的格式整理自己的数据4 划分训练集和测试集 1 获取数据 1.1 获取图片 对于数据的获取&#xff0c;可以是图片形式&#xff0c;也可以是视频形式&#xff0c;但最终将转化…

VOC数据集介绍

1、VOC数据集下载 ubuntu系统下打开终端输入命令即可下载 wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar wget http://host.robots.ox.ac.uk/pascal/VOC/…

Voc数据集简述

文章目录 一、了解VOC1.1 voc数据集下载 二、VOC文件结构2.1 Annotations2.2 ImageSets2.3 JPEGImages2.4 SegmentationClass2.5 SegmentationObject 三、目标检测任务四、语义分割任务五、实例分割任务六、类别索引与名称对应关系 一、了解VOC 是一种数据集的格式——VOC格式…

【DataWhale Obj Dec Task01】目标检测基础

目标检测的基本概念 报名参加datawhale的目标检测组队学习&#xff0c;虽然做objdec有一段时间了&#xff0c;但是还没有系统的记录过自己的学习历程&#xff0c;就借此机会记录一下自己的感想和经历吧&#xff0c;就当是记笔记了。 理解 目标检测实际上也是一种分类算法&am…

【目标检测】VOC数据集介绍

数据集介绍 VOC数据集是目标检测领域最常用的标准数据集之一&#xff0c;在类别上可以分为4大类&#xff0c;20小类 Annotations 进行 detection 任务时的标签文件&#xff0c;xml 形式&#xff0c;文件名与图片名一一对应ImageSets 包含三个子文件夹 Layout、Main、Segmentat…

VOC数据集简介与制作

一、VOC数据集简介 1.1 VOC的任务 PASCAL VOC 挑战赛主要有 Object Classification &#xff08;分类&#xff09;、Object Detection&#xff08;检测&#xff09;、Object Segmentation&#xff08;分割&#xff09;、Human Layout、Action Classification 这几类子任务。 …

详解 VOC 数据集

本视频配套视频链接&#xff1a;https://www.bilibili.com/video/BV1ZL4y1p7Cz/ 我们先来介绍一个经典的数据集&#xff1a;VOC 数据集。Visual Object Class 的首字母缩写&#xff0c;它的官方地址为 http://host.robots.ox.ac.uk/pascal/VOC/。 虽然现在大家更倾向于使用我…

测试报告编写,测试结果编写

测试报告&#xff0c;就是向整个团队告诉你的测试情况&#xff0c;以及发现一些问题说明。 所以&#xff1a; 第一步&#xff0c;先告诉别人&#xff0c;你的测试结果&#xff0c;测试结果只有两种&#xff0c;测试通过/测试未通过。 第二步&#xff0c;写出这个需求的提测的…

软件测试项目测试报告总结

测试计划概念&#xff1a;就在软件测试工作实施之前明确测试对象&#xff0c;并且通过资源、时间、风险、测试范围和预算等方面的综合分析和规划&#xff0c;保证有效的实施软件测试。 需求挖掘的6个方面&#xff1a; 1、输入方面 2、处理方面 3、结果输出方面 4、性能需求…

稳定性测试-几点总结

混合场景业务比例&#xff1a; 稳定性测试一般基于混合场景进行压测&#xff0c;业务比例由项目组人员给出。&#xff08;最好基于线上业务调用量情况进行统计&#xff0c;但大部分系统没有该数据&#xff0c;那就由他们自己拍脑袋吧&#xff09; PS: JMeter控制业务比例用 th…

测试总结报告模板

1. 编写目的 [简述本报告的目的。例如&#xff1a;本测试报告为XX项目的测试总结报告&#xff0c;目的在于总结测试阶段的测试及分析测试结果&#xff0c;描述系统是否符合需求&#xff08;或达到XX功能目标&#xff09;&#xff0c;同时对软件质量进行相关的评估&#xff0c;…

性能测试结果分析结果

在做性能测试的时候&#xff0c;在使用LR或者jmeter等一些性能测试工具测试执行结束后&#xff0c;首先要做的是判断采集到的结果数据是否真实有效。多数的性能测试场景都要迭代的进行测试&#xff0c;因此很多测试结果本身就不能反应问题&#xff0c;深入分析这样的结果没啥意…

主观评价测试

一、静物测试 1.测试目的&#xff1a;测试IPC在室内正常照度场景下的效果 2.测试设备&#xff1a;色温照度计&#xff0c;激光红外测距仪 3.测试环境&#xff1a;在不同色温环境下A,TL84 CWF D65对静物场景测试图卡和人物进行拍摄&#xff0c;观察图像和人物效果&#xff08…