VOC数据集介绍以及读取(目标检测object detection)

这篇具有很好参考价值的文章主要介绍了VOC数据集介绍以及读取(目标检测object detection)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

VOC(Visual Object Classes)数据集是一个广泛使用的计算机视觉数据集,主要用于目标检测、图像分割和图像分类等任务。VOC数据集最初由英国牛津大学的计算机视觉小组创建,并在PASCAL VOC挑战赛中使用。

VOC数据集包含各种不同类别的标记图像,每个图像都有与之相关联的边界框(bounding box)和对象类别的标签。数据集中包括了20个常见的目标类别,例如人、汽车、猫、狗等。此外,VOC数据集还提供了用于图像分割任务的像素级标注。

VOC数据集涵盖了多个年度的发布,每个年度的数据集包含训练集、验证集和测试集。训练集用于模型的训练和参数优化,验证集用于模型的调参和性能评估,而测试集则用于最终模型的性能评估和比较。

VOC数据集介绍以及读取(目标检测object detection),Pytorch与深度学习,目标检测,目标跟踪,人工智能,pytorch,python

VOC数据集下载的目录如下

  1. Annotations是用于目标检测的xml标注文件
  2. ImageSets是提前分好的train val test的txt文件,如果不提交比赛,可以自己写一个
  3. JPEGImages是原本的jpg图像
  4. 剩余两个均用于图像分割中

读取VOC数据集的一般流程(目标检测)
Annotations中的xml标注文件样式如下:

<annotation>
	<folder>VOC2007</folder>
	<filename>000001.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
		<flickrid>341012865</flickrid>
	</source>
	<owner>
		<flickrid>Fried Camels</flickrid>
		<name>Jinky the Fruit Bat</name>
	</owner>
	<size>
		<width>353</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>dog</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>48</xmin>
			<ymin>240</ymin>
			<xmax>195</xmax>
			<ymax>371</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>8</xmin>
			<ymin>12</ymin>
			<xmax>352</xmax>
			<ymax>498</ymax>
		</bndbox>
	</object>
</annotation>

xml中object标签下是关于检测框的坐标信息,(xmin,ymin)表示左上角,(xmax,ymax)表示右下角

其对应的图像如下:
VOC数据集介绍以及读取(目标检测object detection),Pytorch与深度学习,目标检测,目标跟踪,人工智能,pytorch,python

通常采取的方式是

  1. 将xml文件转换为txt文本文件,每一行代表了一张图片的坐标信息和类别信息
  2. 读取txt文本文件放入dataset中

以下是xml转换为文本的python code

import xml.etree.ElementTree as ET
import os

def parse_rec(filename):
    print(filename)
    tree = ET.parse(filename)
    objects = []
    for obj in tree.findall('object'):
        obj_struct = {}
        difficult = int(obj.find('difficult').text)
        if difficult == 1:
            continue
        obj_struct['name'] = obj.find('name').text
        bbox = obj.find('bndbox')
        obj_struct['bbox'] = [int(float(bbox.find('xmin').text)),
                              int(float(bbox.find('ymin').text)),
                              int(float(bbox.find('xmax').text)),
                              int(float(bbox.find('ymax').text))]
        objects.append(obj_struct)
        """
        obj_struct:{'name': 'dog', 'bbox': [48, 240, 195, 371]}
        """
    """
    objects: [{'name': 'dog', 'bbox': [48, 240, 195, 371]}, {'name': 'person', 'bbox': [8, 12, 352, 498]}]
    """
    return objects


VOC_CLASSES = (    # always index 0
    'aeroplane', 'bicycle', 'bird', 'boat',
    'bottle', 'bus', 'car', 'cat', 'chair',
    'cow', 'diningtable', 'dog', 'horse',
    'motorbike', 'person', 'pottedplant',
    'sheep', 'sofa', 'train', 'tvmonitor')

train_val_dataset = open('VOC_train_val.txt', 'r')
test_dataset = open('VOC_test.txt', 'r')

train_val_file = open('myDataset_train_val', 'w')
test_file = open('myDataset_test', 'w')

# 读取训练验证图像的名称
train_val_lines = train_val_dataset.readlines()
train_val_lines = [x[:-1].split(' ')[0] for x in train_val_lines]
# 读取测试图像的名称
test_lines = test_dataset.readlines()
test_lines = [x[:-1] for x in test_lines]

Annotations = r'D:/Detection/VOC2007/VOCdevkit/VOC2007/Annotations/'
xml_files = os.listdir(Annotations)

count = 0
for xml_file in xml_files:
    count += 1
    image_path = xml_file.split('.')[0] + '.jpg'
    results = parse_rec(Annotations + xml_file)
    # 理论不存在
    if len(results) == 0:
        continue
    write_line = image_path
    for result in results:
        class_name = result['name']
        name = VOC_CLASSES.index(class_name)
        bbox = result['bbox']
        write_line += ' '+str(bbox[0])+' '+str(bbox[1])+' '+str(bbox[2])+' '+str(bbox[3])+' '+str(name)
    write_line += '\n'
    if xml_file.split('.')[0] in train_val_lines:
        train_val_file.write(write_line)
    elif xml_file.split('.')[0] in test_lines:
        test_file.write(write_line)

train_val_file.close()
test_file.close()

转后的txt文件如下:

000001.jpg 48 240 195 371 11 8 12 352 498 14
000002.jpg 139 200 207 301 18
000003.jpg 123 155 215 195 17 239 156 307 205 8
000004.jpg 13 311 84 362 6 362 330 500 389 6 235 328 334 375 6 175 327 252 364 6 139 320 189 359 6 108 325 150 353 6 84 323 121 350 6
000006.jpg 187 135 282 242 15 154 209 369 375 10 255 207 366 375 8 138 211 249 375 8
000008.jpg 192 16 364 249 8
000010.jpg 87 97 258 427 12 133 72 245 284 14
000011.jpg 126 51 330 308 7
000013.jpg 299 160 446 252 9
...

第一个表示图片的名称,接下来没5个数字看成一组,前四个分别为xmin,ymin,xmax,ymax,第五个为类别编号。文章来源地址https://www.toymoban.com/news/detail-519386.html

到了这里,关于VOC数据集介绍以及读取(目标检测object detection)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目标检测【Object Detection】

    目标检测是计算机视觉中的一个重要问题,它的目的是从图像或视频序列中识别出特定的目标,并将其从背景中分离出来。目标检测的任务包括: 检测出图像或视频序列中的目标,例如人、车辆、动物等。 对目标进行分类,例如将人分为人类、车辆、动物等。 确定目标的位

    2023年04月14日
    浏览(39)
  • 什么是目标检测--Object Detection

    目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。目标检测不仅要用算法判断图片中物品的分类, 还要在图片中标记出它的位置, 用边框或红色方框把物品圈起来, 这就

    2024年02月07日
    浏览(46)
  • 目标检测(Object Detection)学习笔记(概述与传统算法与基于深度学习算法)

    本文为课程研讨需要,对目标检测算法进行理论学习,无实战内容,欢迎交流探讨 目标检测(Object Detection) 的任务是找出图像中所有感兴趣的目标(物体),不同于分类和回归问题,目标检测还需要确定目标在图像中的位置 (定位) ,而确定识别目标的类别和位置 (分类

    2024年02月02日
    浏览(41)
  • opencv dnn模块 示例(19) 目标检测 object_detection 之 yolox

    YOLOX是旷视科技在2021年发表,对标YOLO v5。YOLOX中引入了当年的黑科技主要有三点,decoupled head、anchor-free以及advanced label assigning strategy(SimOTA)。YOLOX的性能如何呢,可以参考原论文图一如下图所示。YOLOX比当年的YOLO v5略好一点,并且利用YOLOX获得当年的Streaming Perception Challenge第一

    2024年02月06日
    浏览(49)
  • [深度学习]Open Vocabulary Object Detection 部署开放域目标检测模型使用感受

    Open Vocabulary Object Detection (OpenVOD) 是一种新型的目标检测方法,它使用开放词汇的概念来识别和检测图像中的对象。与传统的目标检测方法相比,OpenVOD具有更高的灵活性和可扩展性,因为它允许用户自定义对象类别和词汇,从而能够适应各种不同的应用场景和需求。 OpenVOD的核

    2024年01月22日
    浏览(53)
  • 遥感目标检测(3)-DAL(Dynamic Anchor Learning for Object Detection)

    目录 一、概述 二、背景 三、建议 1、旋转RetinaNet 2、动态锚框分布 3、匹配敏感损失  四、实验         由于选择正样本锚框进行回归,不一定能够定位真实的GT,而部分负样本回归甚至可以回归到真实的GT,说明相当多的负样本锚框有着准确定位的能力,这说明IoU进行回归

    2024年02月16日
    浏览(46)
  • 目标检测(Object Detection):Fast R-CNN,YOLO v3

    目录 目标检测(Object Detection) R-CNN SPPNet Fast R-CNN YOLO v1 YOLO v2 YOLO v3 任务是计算机视觉中非常重要的基础问题,也是解决图像分割、目标跟踪、图像描述等问题的基础。目标检测是检测输入图像是否存在给定类别的物体,如果存在,输出物体在图像中的位置信息(矩形框的坐标

    2024年02月11日
    浏览(43)
  • 【论文阅读】Untargeted Backdoor Attack Against Object Detection(针对目标检测的无目标后门攻击)

    论文题目: Untargeted Backdoor Attack Against Object Detection(针对目标检测的无目标后门攻击) 发表年份: 2023-ICASSP(CCF-B) 作者信息: Chengxiao Luo (清华大学深圳国际研究生院) Yiming Li(清华大学深圳国际研究生院) Yong Jiang(清华大学深圳国际研究生院,鹏程实验室人工智能研

    2024年02月09日
    浏览(38)
  • cvpr2023-目标检测-Combating noisy labels in object detection datasets

    我们都知道数据对于深度学习模型的重要性,但是如何省时省力的得到高质量的数据呢?这就是此文章探讨的问题。 目录 1. 论文下载 2. 背景  3. 相关技术 4. 创新点 5. 算法 5.1 置信学习(Confident learning)  5.2 目标检测中的CL算法 https://arxiv.org/abs/2211.13993 对于深度学习模型来

    2024年02月06日
    浏览(48)
  • opencv dnn模块 示例(25) 目标检测 object_detection 之 yolov9

    YOLOv9 是 YOLOv7 研究团队推出的最新目标检测网络,它是 YOLO(You Only Look Once)系列的最新迭代。YOLOv9 在设计上旨在解决深度学习中信息瓶颈问题,并提高模型在不同任务上的准确性和参数效率。 Programmable Gradient Information (PGI) :YOLOv9 引入了可编程梯度信息(PGI)的概念,这是

    2024年04月29日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包