0
点赞
收藏
分享

微信扫一扫

voc数据集格式转coco数据集格式(1)

刚入门目标检测时,用的都是VOC格式的数据集,简单且评价标准单一。目前cv领域用的都是COCO格式的评价标准,前期使用Labelimg自制的数据集格式都是voc格式的xml文件,所以需要转换成COCO数据集的json格式。在转格式之前,弄清voc和coco标注文件的组成是非常必要的

VOC数据集

什么是VOC数据集
PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, PASCAL全称:Pattern Analysis, Statical Modeling and Computational Learning,是一个由欧盟资助的网络组织。http://host.robots.ox.ac.uk/pascal/VOC/
简言之,VOC是 (Visual Object Classes)的简称,它是一套检测和识别标准化的数据集,可以说是该类数据集的开山之作,后续的很多数据集,都是在此基础上的扩展。目前应用最广的是VOC 2007和VOC 2012,即在2007推出的VOC和2012年推出的。但是,VOC系列止步于2012版本,后续就不再更新,学术界的主流用的是COCO数据集和其评价标准,VOC数据集数据量不大,可用于入门。

VOC数据集的组成

在这里插入图片描述

● Annotations:这里所谓的标注信息,实际上是图片中物体(instances)的位置坐标和。文件的形式是xml,并且是1个xml和1张图片相对应
● ImageSets:
○ Layout下存放的是具有人体部位的数据(人的head、hand等)
○ Segmentation下存放的是可用于分割的数据。
○ Main文件夹中存放的主要又有四个文本文件test.txt, train.txt, trainval.txt, val.txt,其中分别存放的是测试集图片的文件名、训练集图片的文件名、训练验证集图片的文件名、验证集图片的文件名。
● SegmentationClass与SegmentationObject:存放的都是图片,且都是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别 。object segmentation 标注出每一个像素属于哪一个物体。

接下来分析最重要的label文件。VOC数据集的标注文件是xml格式

<annotation>
  <folder>17</folder> # 图片所处文件夹
  <filename>77258.bmp</filename> # 图片名
  <path>~/frcnn-image/61/ADAS/image/frcnn-image/17/77258.bmp</path>
  <source>  #图片来源相关信息
    <database>Unknown</database>  
  </source>
  <size> #图片尺寸
    <width>640</width>
    <height>480</height>
    <depth>3</depth>
  </size>
  <segmented>0</segmented>  #是否有分割label
  <object> 包含的物体
    <name>car</name>  #物体类别
    <pose>Unspecified</pose>  #物体的姿态
    <truncated>0</truncated>  #物体是否被部分遮挡(>15%)
    <difficult>0</difficult>  #是否为难以辨识的物体, 主要指要结体背景才能判断出类别的物体。虽有标注, 但一般忽略这类物体
    <bndbox>  #物体的bound box
      <xmin>2</xmin>
      <ymin>156</ymin>
      <xmax>111</xmax>
      <ymax>259</ymax>
    </bndbox>
  </object>
</annotation>

● annotation:文件以annotation开头,也以它结尾,信息存储在其中
● size:代表图片的分辨率,以该xml为例,对应的图片宽度是353pixel,高度是500pixel,通道数是3
● object:代表目标,里面有name,pose和bndbox(bounding box)。其中比较重要的是name和bndbox。name是指目标所属类别,bndbox是标注框的信息,信息为左上角的xy坐标和右下角的xy坐标

MS COCO

What is the COCO Dataset? What you need to know in 2022

COCO数据集

MS COCO的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集,与ImageNet竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。 MS COCO数据集中的图像分为训练、验证和测试集
COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。可用于目标检测与实例分割、人体关键点检测、材料识别、全景分割、图像描述。

解析数据集

COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用json文件存储。
在这里插入图片描述

上面所述的一共有三种类型,每种类型又包含了训练和验证,所以共6个JSON文件。
在这里插入图片描述

包含5个字段信息:info, licenses, images, annotations, categories。上面3种标注类型共享的字段信息有:info、image、license。不共享的是annotation和category这两种字段,他们在不同类型的JSON文件中是不一样的

以目标检测为例,解析COCO格式

images字段

在这里插入图片描述

images字段中包含图像的基本信息,名称、url地址、尺寸。

categories字段

在这里插入图片描述

supercategory是父类,name是子类,id是类别id(按照子类统计)
annotations字段
包括下图中的内容,每个序号对应一个注释,一张图片上可能有多个注释
● category_id:该注释的类别id,与image的id一一对应,且唯一
● id:当前注释的id号
● image_id:该注释所在的图片id号
● area:标注区域面积
● bbox:目标的矩形标注框
● iscrowd:0或1。0表示标注的单个对象,此时segmentation使用polygon表示;1表示标注的是一组对象,此时segmentation使用RLE格式。
● segmentation:
○ 若使用polygon标注时,则记录的是多边形的坐标点,连续两个数值表示一个点的坐标位置,因此此时点的数量为偶数
○ 若使用RLE格式(Run Length Encoding(行程长度压缩算法))

RLE算法概述
将图像中目标区域的像素值设定为1,背景设定为0,则形成一个张二值图,该二值图可以使用z字形按照位置进行 编码,例如:0011110011100000…… 但是这样的形式太复杂了,可以采用统计有多少个0和1的形式进行局部压缩,因此上面的RLE编码形式为: 2-0-4-1-2-0-3-1-5-0……(表示有2个0,4个1,2个0,3个1,5个0)

举报

相关推荐

0 条评论