精华内容
下载资源
问答
  • 将VEDAI数据集的标注转为VOC和COCO格式。图片只能包含可见光或红外,且命名需要对应上。有需要其他数据集转VOCCOCO的可以联系我。附加:可见光图像集512也已上传。
  • VOC和COCO的训练权重

    2020-07-25 16:21:59
    yolo4_voc_weights.pth是VOC数据集的权重 yolo4_weights是COCO数据集的权重
  • 本介绍摘录自bili站up主 VOC和COCO数据集的介绍:

    本介绍摘录自bili站up主
    VOC和COCO数据集的介绍:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • yolo4_voc_weights.pth是VOC数据集的权重 yolo4_weights是COCO数据集的权重
  • 目标检测数据集格式介绍(voc和coco)1.voc数据格式xml文件中包含以下字段:1.coco数据格式json文件中存放5个信息: 1.voc数据格式 VOC数据格式的目标检测数据,是指每个图像文件对应一个同名的xml文件,xml文件中...

    1.voc数据格式

    VOC数据格式的目标检测数据,是指每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。
    Pascal VOC比赛对目标检测任务,对目标物体是否遮挡、是否被截断、是否是难检测物体进行了标注。对于用户自定义数据可根据实际情况对这些字段进行标注。

    xml文件中包含以下字段:

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. filename,表示图像名称。
     <filename>road650.png</filename>
    
    1. size,表示图像尺寸。包括:图像宽度、图像高度、图像深度
    <size>
    	<width>300</width>
    	<height>400</height>
    	<depth>3</depth>
    </size>
    
    1. object字段,表示每个物体。包括:
      name: 目标物体类别名称;
      pose: 关于目标物体姿态描述(非必须字段);
      truncated: 目标物体目标因为各种原因被截断(非必须字段);
      occluded: 目标物体是否被遮挡(非必须字段);
      difficult: 目标物体是否是很难识别(非必须字段);
      bndbox: 物体位置坐标,用左上角坐标和右下角坐标表示: xmin、ymin、xmax、ymax
    包括字段含义是否必需
    name目标物体类别名称必需字段
    pose关于目标物体姿态描述非必需字段
    truncated目标物体目标因为各种原因被截断非必需字段
    occluded目标物体是否被遮挡非必需字段
    difficult目标物体是否是很难识别非必需字段
    bndbox物体位置坐标,用左上角坐标和右下角坐标表示: xmin、ymin、xmax、ymax必需字段

    1.coco数据格式

    coco数据格式,是指将所有训练图像的标注都存放到一个json文件中。数据以字典嵌套的形式存放。

    json文件中存放5个信息:

    json文件中存放了

    info licenses images annotations categories
    

    的信息:

    info中存放标注文件标注时间、版本等信息。
    licenses中存放数据许可信息。
    images中存放一个list,存放所有图像的图像名,下载地址,图像宽度,图像高度,图像在数据集中的id等信息。
    annotations中存放一个list,存放所有图像的所有物体区域的标注信息,每个目标物体标注以下信息:

        {
        	'area': 899, 
        	'iscrowd': 0, 
            'image_id': 839, 
            'bbox': [114, 126, 31, 29], 
            'category_id': 0, 'id': 1, 
            'ignore': 0, 
            'segmentation': []
        }
    
    展开全文
  • 最近在做目标检测实例分割,使用了labelme标注图片,我在上一篇博客讲了怎么标注以及标注后的处理来用于语义分割,本文将记述一下如何用来labelme标注的json来做VOC和COCO格式的数据集。 首先明确一下,labelme...

    最近在做目标检测和实例分割,使用了labelme标注图片,我在上一篇博客讲了怎么标注以及标注后的处理来用于语义分割,本文将记述一下如何用来labelme标注的json来做VOC和COCO格式的数据集。
    首先明确一下,labelme标记之后生成的就是一个个的json文件:

    1. **

    VOC格式的数据集

    **

    1. JPEG图片(原始图片)
    2. xml文件(标注信息)
    3. 文件名称(txt)

    其实只需要通过labelme标注的json文件生成xml文件,然后通过原始的图片生成txt格式的图片名称就可以了。
    本来详写在这里,然后我直接写在了github上,需要的自取:
    https://github.com/dx-momo/labelme_to_VOC-COCO/tree/main.py

    展开全文
  • VOC和COCO数据集

    千次阅读 多人点赞 2019-03-27 16:46:28
    一.Pascal VOC(Pascal Visual Object Classes) Pascal VOC网址:http://host.robots.ox.ac.uk/pascal/VOC/ 查看各位大牛算法的排名的Leaderboards:...

    一.Pascal VOC(Pascal Visual Object Classes)

    Pascal VOC网址:http://host.robots.ox.ac.uk/pascal/VOC/ 
    查看各位大牛算法的排名的Leaderboards:http://host.robots.ox.ac.uk:8080/leaderboard/main_bootstrap.php 
    训练/验证数据集下载(2G):host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

    VOC数据集是目标检测经常用的一个数据集,从05年到12年都会举办比赛(比赛有task: Classification 、Detection(将图片中所有的目标用bounding box框出来) 、 Segmentation(将图片中所有的目标分割出来)、Person Layout)
    VOC2007:中包含9963张标注过的图片, 由train/val/test三部分组成, 共标注出24,640个物体。 VOC2007的test数据label已经公布, 之后的没有公布(只有图片,没有label)。

    VOC2012:对于检测任务,VOC2012的trainval/test包含08-11年的所有对应图片。 trainval有11540张图片共27450个物体。 对于分割任务, VOC2012的trainval包含07-11年的所有对应图片, test只包含08-11。trainval有 2913张图片共6929个物体。

    这些物体一共分为20类:

    • Person: person 
    • Animal: bird, cat, cow, dog, horse, sheep 
    • Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train 
    • Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor
       

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

    .
    └── VOCdevkit     #根目录
        └── VOC2012   #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的
            ├── Annotations        #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
            ├── ImageSets          #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本
            │   ├── Action
            │   ├── Layout
            │   ├── Main
            │   └── Segmentation
            ├── JPEGImages         #存放源图片
            ├── SegmentationClass  #存放的是图片,分割后的效果,见下文的例子
            └── SegmentationObject #存放的是图片,分割后的效果,见下文的例子

    • Annotation文件夹存放的是xml文件,该文件是对图片的解释,每张图片都对于一个同名的xml文件。 
    • ImageSets文件夹存放的是txt文件,这些txt将数据集的图片分成了各种集合。如Main下的train.txt中记录的是用于训练的图片集合 
    • JPEGImages文件夹存放的是数据集的原图片 
    • SegmentationClass以及SegmentationObject文件夹存放的都是图片,且都是图像分割结果图

    JEPGImages文件夹

    该文件夹存放的是数据集的所有源图片,内容如下: 

                          

    Annotation文件夹 

    Annotation文件夹的内容如下: 

                             

    其中xml主要介绍了对应图片的基本信息,如来自那个文件夹、文件名、来源、图像尺寸以及图像中包含哪些目标以及目标的信息等等,内容如下:

    <annotation>
        <folder>VOC2007</folder>
        <filename>000005.jpg</filename>#文件名
        <source>#文件来源
            <database>The VOC2007 Database</database>
            <annotation>PASCAL VOC2007</annotation>
            <image>flickr</image>
            <flickrid>325991873</flickrid>
        </source>
        <owner>
            <flickrid>archintent louisville</flickrid>
            <name>?</name>
        </owner>
        <size>#文件尺寸,包括长、宽、通道数
            <width>500</width>
            <height>375</height>
            <depth>3</depth>
        </size>
        <segmented>0</segmented>#是否用于分割
        <object>#检测目标
            <name>chair</name>#目标类别
            <pose>Rear</pose>#摄像头角度
            <truncated>0</truncated>#是否被截断,0表示完整
            <difficult>0</difficult>#目标是否难以识别,0表示容易识别
            <bndbox>#bounding-box
                <xmin>263</xmin>
                <ymin>211</ymin>
                <xmax>324</xmax>
                <ymax>339</ymax>
            </bndbox>
        </object>
        <object>#检测到的多个物体, 可以看到上图中,图片000005中有多个椅子
            <name>chair</name>
            <pose>Unspecified</pose>
            <truncated>0</truncated>
            <difficult>0</difficult>
            <bndbox>
                <xmin>165</xmin>
                <ymin>264</ymin>
                <xmax>253</xmax>
                <ymax>372</ymax>
            </bndbox>
        </object>
        <object>#检测到的多个物体
            <name>chair</name>
            <pose>Unspecified</pose>
            <truncated>1</truncated>
            <difficult>1</difficult>
            <bndbox>
                <xmin>5</xmin>
                <ymin>244</ymin>
                <xmax>67</xmax>
                <ymax>374</ymax>
            </bndbox>
        </object>
        <object>
            <name>chair</name>
            <pose>Unspecified</pose>
            <truncated>0</truncated>
            <difficult>0</difficult>
            <bndbox>
                <xmin>241</xmin>
                <ymin>194</ymin>
                <xmax>295</xmax>
                <ymax>299</ymax>
            </bndbox>
        </object>
        <object>#检测到的多个物体
            <name>chair</name>
            <pose>Unspecified</pose>
            <truncated>1</truncated>
            <difficult>1</difficult>
            <bndbox>
                <xmin>277</xmin>
                <ymin>186</ymin>
                <xmax>312</xmax>
                <ymax>220</ymax>
            </bndbox>
        </object>
    </annotation>
    

    对应图片为:

                                       

     ImageSets文件夹

    ImageSets包含如下四个子文件夹: 

                              

    • Action下存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)
    • Layout下存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分)
    • Main下存放的是图像物体识别的数据,总共分为20类。
    • Segmentation下存放的是可用于分割的数据。

     然后我们主要关注于main文件夹。里面放了20个类的train、val、trainval的txt。

                                       

    • _train中存放的是训练使用的数据,每一个class的train数据都有5717个。
    • _val中存放的是验证结果使用的数据,每一个class的val数据都有5823个。
    • _trainval将上面两个进行了合并,每一个class有11540个。

                                                      

    上图中前面代表图片编号,后面-1代表负样本,1代表正样本。

     SegmentationClass文件夹

    这里面包含了2913张图片,每一张图片都对应JPEGImages里面的相应编号的图片。这里面的图片的像素颜色共有20种,对应20类物体。比如所有飞机都会被标为红色。

                                    

    SegmentationObject文件夹 

    这里面同样包含了2913张图片,图片编号都与Class里面的图片编号相同。这里面的图片和Class里面图片的区别在于,这是针对Object的。在Class里面,一张图片里如果有多架飞机,那么会全部标注为红色。而在Object里面,同一张图片里面的飞机会被不同颜色标注出来。

                                       

     

    二.Microsoft COCO(Common Objects in Context)

    COCO的 全称是Common Objects in COntext,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像,其使用了亚马逊的Mechanical Turk(AMT)。

    COCO数据集是微软团队获取的一个可以用来图像recognition+segmentation+captioning 数据集,其官方说明网址:http://mscoco.org/

    该数据集主要有的特点如下:(1)Object segmentation(2)Recognition in Context(3)Multiple objects per image(4)More than 300,000 images(5)More than 2 Million instances(6)80 object categories(7)5 captions per image(8)Keypoints on 100,000 people

    该数据集主要解决3个问题:目标检测,目标之间的上下文关系,目标的2维上的精确定位。数据集的对比示意图:

                                

     

    COCO的2019挑战赛有如下内容COCO 2019 DetectionKeypointPanoptic, and DensePose Challenges。

    COCO通过大量使用Amazon Mechanical Turk来收集数据。COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用JSON文件存储。比如下面就是Gemfield下载的COCO 2017年训练集中的标注文件:

                        

    可以看到其中有上面所述的三种类型,每种类型又包含了训练和验证,所以共6个JSON文件。

    基本的JSON结构体类型

    object instances(目标实例)、object keypoints(目标上的关键点)、image captions(看图说话)这3种类型共享这些基本类型:info、image、license。

    而annotation类型则呈现出了多态:

    {
        "info": info,
        "licenses": [license],
        "images": [image],
        "annotations": [annotation],
    }
        
    info{
        "year": int,
        "version": str,
        "description": str,
        "contributor": str,
        "url": str,
        "date_created": datetime,
    }
    license{
        "id": int,
        "name": str,
        "url": str,
    } 
    image{
        "id": int,
        "width": int,
        "height": int,
        "file_name": str,
        "license": int,
        "flickr_url": str,
        "coco_url": str,
        "date_captured": datetime,
    }

    1,info类型,比如一个info类型的实例:

    "info":{
    	"description":"This is stable 1.0 version of the 2014 MS COCO dataset.",
    	"url":"http:\/\/mscoco.org",
    	"version":"1.0","year":2014,
    	"contributor":"Microsoft COCO group",
    	"date_created":"2015-01-27 09:11:52.357475"
    },

    2,Images是包含多个image实例的数组,对于一个image类型的实例:

    {
    	"license":3,
    	"file_name":"COCO_val2014_000000391895.jpg",
    	"coco_url":"http:\/\/mscoco.org\/images\/391895",
    	"height":360,"width":640,"date_captured":"2013-11-14 11:18:45",
    	"flickr_url":"http:\/\/farm9.staticflickr.com\/8186\/8119368305_4e622c8349_z.jpg",
    	"id":391895
    },

    3,licenses是包含多个license实例的数组,对于一个license类型的实例:

    {
    	"url":"http:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/",
    	"id":1,
    	"name":"Attribution-NonCommercial-ShareAlike License"
    },

    Object Instance 类型的标注格式

    1,整体JSON文件格式

    比如上图中的instances_train2017.json、instances_val2017.json这两个文件就是这种格式。

    Object Instance这种格式的文件从头至尾按照顺序分为以下段落:

    {
        "info": info,
        "licenses": [license],
        "images": [image],
        "annotations": [annotation],
        "categories": [category]
    }

    是的,你打开这两个文件,虽然内容很多,但从文件开始到结尾按照顺序就是这5段。其中,info、licenses、images这三个结构体/类型 在上一节中已经说了,在不同的JSON文件中这三个类型是一样的,定义是共享的。不共享的是annotation和category这两种结构体,他们在不同类型的JSON文件中是不一样的。

    images数组元素的数量等同于划入训练集(或者测试集)的图片的数量;

    annotations数组元素的数量等同于训练集(或者测试集)中bounding box的数量;

    categories数组元素的数量为80(2017年);

    >>> ann_train_file='annotations/instances_train2017.json'
    >>> coco_train = COCO(ann_train_file)
    loading annotations into memory...
    Done (t=19.30s)
    creating index...
    index created!
    
    >>> len(coco_train.dataset['categories'])
    80
    >>> len(coco_train.dataset['images'])
    118287
    >>> len(coco_train.dataset['annotations'])
    860001
    >>>

    2,annotations字段

    annotations字段是包含多个annotation实例的一个数组,annotation类型本身又包含了一系列的字段,如这个目标的category id和segmentation mask。segmentation格式取决于这个实例是一个单个的对象(即iscrowd=0,将使用polygons格式)还是一组对象(即iscrowd=1,将使用RLE格式)。如下所示:

    annotation{
        "id": int,    
        "image_id": int,
        "category_id": int,
        "segmentation": RLE or [polygon],
        "area": float,
        "bbox": [x,y,width,height],
        "iscrowd": 0 or 1,
    }

    注意,单个的对象(iscrowd=0)可能需要多个polygon来表示,比如这个对象在图像中被挡住了。而iscrowd=1时(将标注一组对象,比如一群人)的segmentation使用的就是RLE格式。

    注意啊,只要是iscrowd=0那么segmentation就是polygon格式;只要iscrowd=1那么segmentation就是RLE格式。另外,每个对象(不管是iscrowd=0还是iscrowd=1)都会有一个矩形框bbox ,矩形框左上角的坐标和矩形框的长宽会以数组的形式提供,数组第一个元素就是左上角的横坐标值。

    area是area of encoded masks,是标注区域的面积。如果是矩形框,那就是高乘宽;如果是polygon或者RLE,那就复杂点。

    最后,annotation结构中的categories字段存储的是当前对象所属的category的id,以及所属的supercategory的name。

    下面是从instances_val2017.json文件中摘出的一个annotation的实例,这里的segmentation就是polygon格式:

    {
    	"segmentation": [[510.66,423.01,511.72,420.03,510.45......]],
    	"area": 702.1057499999998,
    	"iscrowd": 0,
    	"image_id": 289343,
    	"bbox": [473.07,395.93,38.65,28.67],
    	"category_id": 18,
    	"id": 1768
    },

    polygon格式比较简单,这些数按照相邻的顺序两两组成一个点的xy坐标,如果有n个数(必定是偶数),那么就是n/2个点坐标。下面就是一段解析polygon格式的segmentation并且显示多边形的示例代码:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib
    from matplotlib.patches import Polygon
    from matplotlib.collections import PatchCollection
    fig, ax = plt.subplots()
    polygons = []
    num_sides = 100
    gemfield_polygons = [[125.12, 539.69, 140.94, 522.43......]]
    gemfield_polygon = gemfield_polygons[0]
    max_value = max(gemfield_polygon) * 1.3
    gemfield_polygon = [i * 1.0/max_value for i in gemfield_polygon]
    poly = np.array(gemfield_polygon).reshape((int(len(gemfield_polygon)/2), 2))
    polygons.append(Polygon(poly,True))
    p = PatchCollection(polygons, cmap=matplotlib.cm.jet, alpha=0.4)
    colors = 100*np.random.rand(1)
    p.set_array(np.array(colors))
    
    ax.add_collection(p)
    plt.show()

    如果iscrowd=1,那么segmentation就是RLE格式(segmentation字段会含有counts和size数组),在json文件中gemfield挑出一个这样的例子,如下所示:

    segmentation : 
    {
        u'counts': [272, 2, 4, 4, 4, 4, 2, 9, 1, 2, 16, 43, 143, 24......], 
        u'size': [240, 320]
    }

    COCO数据集的RLE都是uncompressed RLE格式(与之相对的是compact RLE)。 RLE所占字节的大小和边界上的像素数量是正相关的。RLE格式带来的好处就是当基于RLE去计算目标区域的面积以及两个目标之间的unoin和intersection时会非常有效率。 上面的segmentation中的counts数组和size数组共同组成了这幅图片中的分割 mask。其中size是这幅图片的宽高,然后在这幅图像中,每一个像素点要么在被分割(标注)的目标区域中,要么在背景中。很明显这是一个bool量:如果该像素在目标区域中为true那么在背景中就是False;如果该像素在目标区域中为1那么在背景中就是0。对于一个240x320的图片来说,一共有76800个像素点,根据每一个像素点在不在目标区域中,我们就有了76800个bit,比如像这样(随便写的例子,和上文的数组没关系):00000111100111110...;但是这样写很明显浪费空间,我们直接写上0或者1的个数不就行了嘛(Run-length encoding),于是就成了54251...,这就是上文中的counts数组,这里相邻的数字代表了不同的意义,是0和1的相互嵌套,即为记录连续的0和1的个数,当出现0和1的相互转换时,将当前的0或者1的个数记录在数组当中。下面这个python代码片段直观的显示了这些bit:

    rle = [272, 2, 4, 4, 4, 4, 2, 9, 1, 2, 16, 43, 143, 24, 5, 8......]
    assert sum(rle) == 240*320

    也可以使用下面的代码将这个rle数组表示的分割区域画出来:

    import numpy as np
    import matplotlib.pyplot as plt
    rle = [272, 2, 4, 4, 4, 4, 2, 9, 1, 2, 16, 43, 143, 24, 5, 8......]
    assert sum(rle) == 240*320
    M = np.zeros(240*320)
    N = len(rle)
    n = 0
    val = 1
    for pos in range(N):
        val = not val
        for c in range(rle[pos]):
            M[n] = val
            n += 1
    
    GEMFIELD = M.reshape(([240, 320]), order='F')
    plt.imshow(GEMFIELD)
    plt.show()

    3,categories字段

    categories是一个包含多个category实例的数组,而category结构体描述如下:

    {
        "id": int,
        "name": str,
        "supercategory": str,
    }

    从instances_val2017.json文件中摘出的2个category实例如下所示:

    {
    	"supercategory": "person",
    	"id": 1,
    	"name": "person"
    },
    {
    	"supercategory": "vehicle",
    	"id": 2,
    	"name": "bicycle"
    },

    至2017年的时候,一共有80个category。

    Object Keypoint 类型的标注格式

    1,整体JSON文件格式

    比如上图中的person_keypoints_train2017.json、person_keypoints_val2017.json这两个文件就是这种格式。

    Object Keypoint这种格式的文件从头至尾按照顺序分为以下段落,看起来和Object Instance一样啊:

    {
        "info": info,
        "licenses": [license],
        "images": [image],
        "annotations": [annotation],
        "categories": [category]
    }

    是的,你打开这两个文件,虽然内容很多,但从文件开始到结尾按照顺序就是这5段。其中,info、licenses、images这三个结构体/类型 在第一节中已经说了,在不同的JSON文件中这三个类型是一样的,定义是共享的。不共享的是annotation和category这两种结构体,他们在不同类型的JSON文件中是不一样的。

    images数组元素数量是划入训练集(测试集)的图片的数量;

    annotations是bounding box的数量,在这里只有人这个类别的bounding box;

    categories数组元素的数量为1,只有一个:person(2017年);

    2,annotations字段

    这个类型中的annotation结构体包含了Object Instance中annotation结构体的所有字段,再加上2个额外的字段。

    新增的keypoints是一个长度为3*k的数组,其中k是category中keypoints的总数量。每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y坐标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见。

    num_keypoints表示这个目标上被标注的关键点的数量(v>0),比较小的目标上可能就无法标注关键点。

    annotation{
        "keypoints": [x1,y1,v1,...],
        "num_keypoints": int,
        "id": int,
        "image_id": int,
        "category_id": int,
        "segmentation": RLE or [polygon],
        "area": float,
        "bbox": [x,y,width,height],
        "iscrowd": 0 or 1,
    }

    从person_keypoints_val2017.json文件中摘出一个annotation的实例如下:

    {
    	"segmentation": [[125.12,539.69,140.94,522.43...]],
    	"num_keypoints": 10,
    	"area": 47803.27955,
    	"iscrowd": 0,
    	"keypoints": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,309,1,177,320,2,191,398...],
    	"image_id": 425226,"bbox": [73.35,206.02,300.58,372.5],"category_id": 1,
    	"id": 183126
    },

    3,categories字段

    最后,对于每一个category结构体,相比Object Instance中的category新增了2个额外的字段,keypoints是一个长度为k的数组,包含了每个关键点的名字;skeleton定义了各个关键点之间的连接性(比如人的左手腕和左肘就是连接的,但是左手腕和右手腕就不是)。目前,COCO的keypoints只标注了person category (分类为人)。

    定义如下:

    {
        "id": int,
        "name": str,
        "supercategory": str,
        "keypoints": [str],
        "skeleton": [edge]
    }

    从person_keypoints_val2017.json文件中摘出一个category的实例如下:

    {
    	"supercategory": "person",
    	"id": 1,
    	"name": "person",
    	"keypoints": ["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"],
    	"skeleton": [[16,14],[14,12],[17,15],[15,13],[12,13],[6,12],[7,13],[6,7],[6,8],[7,9],[8,10],[9,11],[2,3],[1,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
    }

    Image Caption的标注格式

    1,整体JSON文件格式

    比如上图中的captions_train2017.json、captions_val2017.json这两个文件就是这种格式。

    Image Caption这种格式的文件从头至尾按照顺序分为以下段落,看起来和Object Instance一样,不过没有最后的categories字段:

    {
        "info": info,
        "licenses": [license],
        "images": [image],
        "annotations": [annotation]
    }

    是的,你打开这两个文件,虽然内容很多,但从文件开始到结尾按照顺序就是这4段。其中,info、licenses、images这三个结构体/类型 在第一节中已经说了,在不同的JSON文件中这三个类型是一样的,定义是共享的。不共享的是annotations这种结构体,它在不同类型的JSON文件中是不一样的。

    images数组的元素数量等于划入训练集(或者测试集)的图片的数量;

    annotations的数量要多于图片的数量,这是因为一个图片可以有多个场景描述;

    2,annotations字段

    这个类型中的annotation用来存储描述图片的语句。每个语句描述了对应图片的内容,而每个图片至少有5个描述语句(有的图片更多)。annotation定义如下:

    annotation{
        "id": int,
        "image_id": int,
        "caption": str
    }

    从captions_val2017.json中摘取的一个annotation实例如下:

    {
    	"image_id": 179765,
    	"id": 38,"caption": "A black Honda motorcycle parked in front of a garage."
    }

     

    展开全文
  • VOC目录结构: └── VOCdevkit #根目录 └── VOC2012 #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的 ├── Annotations #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等 ...
  • COCO数据集标注格式的介绍: https://blog.csdn.net/m0_37970224/article/details/89211122 VOC数据集标注格式的介绍: https://blog.csdn.net/m0_37970224/article/details/89212906
  • mAP详解及VOC和COCO mAP的不同之处

    千次阅读 2019-04-20 16:11:48
    =0.5 的作为检测出来的目标,取不同的confidence 阈值计算对应的precision recall,对于每个recall,取其对应的最大precision,对这些precision 求平均即为该类的AP 值。所有类的AP 值求平均即为mAP。 VOC2007的...
  • 这是YOLOv4架构的PyTorch重新实现,它基于正式的实现与PASCAL VOCCOCO和客户数据集 结果(更新中) 姓名 训练数据集 测试数据集 测试大小 地图 推理时间(毫秒) 参数(M) 模型链接 mobilenetv2-YOLOV4 VOC ...
  • 转换一个实例的代码,但是没有批量的转换代码,于是网上很多批量转换代码,其实呢,官方作者已经完成了转换代码,大家可以去官网看看:labelme官网,从官网获取两个文件:labelme2coco.pylabelme2voc.py,使用方法...
  • 这篇文章是记录一下自己准备储罐数据...所以我们先分别对trainval进行筛选,选择有储罐的图像对应的标签。该代码在RRPN-PYTORCH项目里面的/home/wt/RRPN_pytorch/maskrcnn_benchmark/data/DOTA_Pre-processing_tool
  • https://github.com/spytensor/prepare_detection_dataset
  • VOC2COCO 方法一 参考自博客 数据格式的转换实际是将VOC的annotation标注文件转化为COCO的json文件 注:下面代码包含通过txt文件生成通过文件夹生成两种方法 1 通过txt文件生成 :按照VOC数据集下ImageSets/Main中...
  • VOC_COCO.py

    2020-05-31 12:55:33
    voc_coco 数据集转换
  • voc_coco.py

    2021-04-20 09:57:03
    voc数据集的的标签格式txt转换成coco数据集的标签格式json 输入格式: python voc_coco.py的路径 VOCdevkit数据集的路径 --out-dir coco数据集的路径
  • 下面用到的 VOC COCO 是我自己制作的小型数据集。 代码中可能有许多不成熟的地方或者错误的地方,还请各位多多斧正! VOC转换成COCO 重要工具:xml、json 参照COCO的格式,我先把图片名称、目标类别列出来,初始...
  • voc2coco 这是用于将VOC格式的XML转换为COCO格式的json(例如coco_eval.json)的脚本。 为什么我们需要将VOC xmls转换为COCO格式json? 我们可以使用COCO API,这非常有用(例如,计算mAP)。 如何使用 1.制作...
  • VOCCOCO数据集类别

    2020-12-31 14:27:39
    VOCCOCO数据集的类别列表,其中VOC20类,COCO全部90类,但目标实例只有80类。以上均已分别列出。
  • voc2coco 这是用于将VOC格式的XML转换为COCO格式的json(例如coco_eval.json)的脚本。 为什么我们需要将VOC xmls转换为COCO格式json? 我们可以使用COCO API,这非常有用(例如,计算mAP)。 如何使用 1.制作...
  • Pascal VOCCOCO数据

    万次阅读 2018-03-19 17:59:36
    cocodataset/cocoapi philferriere/cocoapi- support Windows build and python3 COCO 标注详解 labelme标注的数据分析 MSCOCO数据标注详解 labelme数据转成COCO数据 详细代码点击这里Pascal VOC 2007数据下载...
  • Leaderboard of VOC and COCO

    千次阅读 2017-02-05 16:48:25
    Leaderboard of voc and coco

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,443
精华内容 3,777
关键字:

voc和coco