目标检测加载数据

文章介绍了目标检测的任务和常见方法,重点关注了VOC和COCO两种数据集的结构及其标注信息。VOC数据集包含XML文件描述目标位置,而COCO数据集提供了更丰富的信息如实例分割和关键点。此外,还提到了在线标注工具MakeSense,并展示了如何使用Python的torchvision库加载和处理VOC数据集。
摘要由CSDN通过智能技术生成

目标检测ObjectDetection

概述

目标检测的目的主要是通过模型检测出目标+类别

主流的目标检测以矩阵框形式输出,更高精度的是语义分割任务(对网络模型的要求更高)

数据集

数据集的标注与网络的输出强相关,下面介绍两种常用的数据集。

voc数据集

官方网站:The PASCAL Visual Object Classes Homepage (ox.ac.uk)

数据集原图片见下
在这里插入图片描述

(常用的是2007、2012数据集)

下面是2007数据集的文件目录:

在这里插入图片描述
依次为:

  • Annotations数据集标注,包含XML文件,描述图片的各种信息(目标的位置坐标等)
  • ImageSets图片集合,主要关注main文件夹,里面的文件包含不同类别目标的训练数据集图片名称
  • JPEGImages原图片
  • SegmentationClass标注(同类别)
  • SegmentationObject标注(单个物体)

举例:000019.jpg

原图像见下:

在这里插入图片描述

标注内容:

<annotation>
	<folder>VOC2007</folder>
	<filename>000019.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
		<flickrid>330638158</flickrid>
	</source>
	<owner>
		<flickrid>Rosenberg1/ Simmo</flickrid>
		<name>?</name>
	</owner>
	<size>
		<width>500</width>
		<height>375</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>cat</name>
		<pose>Right</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>231</xmin>
			<ymin>88</ymin>
			<xmax>483</xmax>
			<ymax>256</ymax>
		</bndbox>
	</object>
	<object>
		<name>cat</name>
		<pose>Right</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>11</xmin>
			<ymin>113</ymin>
			<xmax>266</xmax>
			<ymax>259</ymax>
		</bndbox>
	</object>
</annotation>

描述的是图片的属性信息,例如文件夹在VOC2007下,名称、id、大小

其中有object为cat,位置在right,识别困难值为0、对应的矩形框位置分别在(231,88)-(483,256)

  • caption 用文字描述图片
  • instance 用于语义分割
  • person_keypoints 人体结构

CoCo数据集

在这里插入图片描述

  • info 文件的基本信息
  • version 版本
  • licenses 许可证
  • images 图片
    • id 与标注信息的id对应
    • width
    • height

在这里插入图片描述
在这里插入图片描述

  • category_id 2 表示对应的类别是2
  • iscrowd 是否为群体
  • segmentation 标记区域的点坐标(两个数字一对)
  • area 标注区域的面积
  • bbox 左上角坐标、宽度、高度

在线标注数据集

Make Sense

一种在线标注数据集的方式,比较推荐

标记过程见下:

创建项目

在这里插入图片描述
在这里插入图片描述

添加图片
在这里插入图片描述
在这里插入图片描述

可以加载标签文件,也可以直接创建项目

添加标签值

在这里插入图片描述
在这里插入图片描述

标记为flower标签

在这里插入图片描述

导出标签文件

在这里插入图片描述
在这里插入图片描述

这里选择导出VOC XML标签文件,见下图。(其他的标签类型也可参考)

在这里插入图片描述

VOC数据集加载

import torch
import torchvision

dataset = torchvision.datasets.VOCDetection(root = "D:\\1deeplearning\\vocdataset\\VOCtrainval_06-Nov-2007",
                                            year='2007',
                                            download=False,
                                            )
image, info = dataset[0]

一定注意!!路径问题!!

加载数据集后为了拿到标签数据,可以通过使用“断点调试”的方式查看info对象中的标签数据结构,见下图。

在这里插入图片描述

我们可以看到关心的图片标注在info(dict类型)下的annotation(dict类型),下面的object(list类型),通过遍历拿到object下的数据,再拿到bndbox下的标记位置信息。(层次结构有点复杂,主要是要分清字典、列表数据类型元素的取出)

同时使用PIL库中的ImageDraw模块。使用rectangle函数标记。

import torch
import torchvision
from PIL import ImageDraw
dataset = torchvision.datasets.VOCDetection(root = "D:\\1deeplearning\\vocdataset\\VOCtrainval_06-Nov-2007",
                                            year='2007',
                                            download=False,
                                            )

image,info = dataset[2]
# image.show()

# x_width,x_height,x_depth = info['annotation']['size']
# print(x_width)
# for annotation in info:
#     x_width, x_height, x_depth = annotation['size']

img_handler = ImageDraw.ImageDraw(image)



for i in info['annotation']['object']:
    x_min = int(i['bndbox']['xmin'])
    y_min = int(i['bndbox']['ymin'])
    x_max = int(i['bndbox']['xmax'])
    y_max = int(i['bndbox']['ymax'])
    # print(x_min,y_min,x_max,y_max)
    shape = [(x_min,y_min),(x_max,y_max)]
    print(shape)
    img_handler.rectangle(shape)


image.show()

得到的标记信息见下

在这里插入图片描述

使用Coco数据集类似的方法,在该函数中选择Coco加载即可。

torchvision.datasets
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 目标检测是计算机视觉领域的一个重要研究方向。在现实生活中,很多场景都需要进行目标检测,如自动驾驶、视频监控等。TXT数据扩增是一种数据增强的方法,可以有效提高目标检测的准确率。 TXT数据扩增的方法主要有以下几种:平移、旋转、缩放、翻转等。其中,平移是指将图像在水平和垂直方向上移动一定的像素,旋转是指将图像按照一定的角度进行旋转,缩放是指对图像的大小进行缩放,翻转是指将图像水平或垂直方向上进行翻转。 对于目标检测来说,TXT数据扩增可以帮助模型更好地识别目标。例如,在物体检测中,物体的位置可能会因为光照、风吹偏移等因素而发生变化,而使用平移、旋转、缩放、翻转等操作可以模拟这些变化,从而提高模型的适应性和鲁棒性。 在实际应用中,TXT数据扩增可以结合深度学习进行,通过增加数据集来提高模型的泛化能力,从而使模型在检测目标时更加准确、稳定、鲁棒。同时,为了提高扩增后图像的质量,还可以对图像进行去噪、锐化等操作,以使最终的图像质量更加清晰、锐利。 综上所述,TXT数据扩增是一种有效的数据增强方法,可以提高目标检测的准确率和鲁棒性。在实际应用中,常常需要结合不同的方法来进行数据扩增,以使模型更好地适应不同的场景和问题。 ### 回答2: 目标检测是计算机视觉中的一项重要任务,其核心是对图像中的物体进行检测和识别。在目标检测的过程中,数据集的质量和数量决定了模型的准确性和泛化能力。因此,数据扩增是提高模型性能的重要手段之一。 在目标检测中,常用的数据扩增方式包括图像旋转、缩放、裁剪、镜像等操作。扩增的目的是增加原始数据集的多样性,同时保持物体的几何形态和视觉特征不变。 针对txt数据的扩增,可以通过以下方式实现。首先,读取原始txt文件,将其中包含的物体位置信息和类别标签提取出来。然后,通过图像处理库或自定义函数进行数据扩增,如图像旋转、缩放、裁剪、镜像等操作。在扩增过程中,需要保证物体位置信息和类别标签的一致性和准确性。最后,生成新的扩增后的txt文件,保存在预定义的路径下,以便后续训练使用。 综上所述,目标检测的txt数据扩增是提高模型性能的关键步骤之一。通过扩增数据集,可以增加数据的多样性,提高模型的泛化能力和准确性,从而更好地适应实际场景中的物体检测任务。 ### 回答3: 目标检测是一种计算机视觉技术,它可以自动识别图像或视频中的对象并将其分类。txt数据扩增是指利用一系列数据增强技术扩充txt格式的标注文件,以增加训练数据量,从而提高目标检测算法的精度和鲁棒性。 txt数据扩增的常用方法包括剪切、旋转、镜像、缩放、色彩变换以及添加噪声等。这些方法都可以通过数据增强库来实现,如OpenCV、imgaug等。 剪切是将原图像中的一部分进行裁剪,以产生具有不同纵横比例的图像,从而增加训练样本的多样性。旋转可以对原图像进行不同角度的旋转,使得目标检测算法对目标的不同朝向具有更好的识别能力。镜像则是将原图像翻转,以产生关于中心对称的图像。缩放可以对原图像进行放缩,以使目标在不同尺度下具有更好的检测能力。色彩变换可以改变图像的颜色和亮度,进一步增强算法的鲁棒性。加噪声可以在图像中添加随机噪声,模拟真实环境中的不稳定因素,提高算法的应对能力。 综上所述,txt数据扩增是通过增加数据样本来提高目标检测算法的性能。采用多种数据增强技术可以有效地增加训练数据的多样性,从而提高算法的精度和鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值