目录

  • 图像分割
  • 普通分割
  • 语义分割
  • 实例分割
  • COCO数据集(Common Objects in COntext)
  • annotations中json文件数据类型
  • 解析Object Instance Annotations
  • categories字段
  • 以instance_train2014.json文件为例


图像分割

普通分割

将不同分属不同物体的像素区域分开。
如前景与后景分割开,狗的区域与猫的区域与背景分割开。

语义分割

在普通分割的基础上,分类出每一块区域的语义(即这块区域是什么物体)。
如把画面中的所有物体都指出它们各自的类别。

实例分割

在语义分割的基础上,给每个物体编号。
如这个是该画面中的狗A,那个是画面中的狗B。

COCO数据集(Common Objects in COntext)

COCO数据集中图像都是一样的,标注信息annotations不一样(就是包含注释信息的json文件),有captions,instances,person_keypoints,stuff四大类,表示不同的任务,每一类都分别包含train和val。分为:

  1. instances——实例分割
  2. person_keypoints——关键点分割
  3. stuff——语义分割
  4. captions——图片的配文,是一句话

每个类别分别包含train,val。做实例分割任务时,使用instance_train201X.json文件作为标签信息。

annotations中json文件数据类型

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

images数组元素的数量等同于划入训练集(或者测试集)的图片的数量;
annotations数组元素的数量等同于训练集(或者测试集)中bounding box的数量;
categories数组元素的数量为80(2017年);

解析Object Instance Annotations

每个instance annotation包含一系列字段,包括对象的category id和分割掩码(segmentation mask)。segmentation格式取决于实例是否代表单个对象(iscrowd = 0,在这种情况下使用多边形(polygons))或对象集合(iscrowd = 1,在这种情况下使用RLE(自定义运行长度编码,Run Length Encoding))。

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.

categories字段

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

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

以instance_train2014.json文件为例

{
     "info":      #info信息
          {       #数据集信息
                  "description": "COCO 2014 Dataset", # 描述
                  "url": "http://cocodataset.org",  # 链接
                  "version": "1.0", # 版本
                  "year": 2014, # 年份
                  "contributor": "COCO Consortium",  # 贡献者
                  "date_created": "2017/09/01" # 创建日期
         },
 
 
 
      "images":  #图片信息,数组包含了多张图像
      [   {      #每张图像的具体信息
                  "license": 5,
                  "file_name": "COCO_train2014_000000057870.jpg",
                  "coco_url": "http://images.cocodataset.org/train2014/COCO_train2014_000000057870.jpg",
                  "height": 480,
                  "width": 640,
                  "date_captured": "2013-11-14 16:28:13",
                  "flickr_url": "http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg",
                  "id": 57870
           },
          ......
          ......   #此处省略很多图片
         {
                  "license": 4,
                  "file_name": "COCO_train2014_000000475546.jpg",
                  "http://images.cocodataset.org/train2014/COCO_train2014_000000475546.jpg",
                  "height": 375,
                  "width":500,;、
                  "date_captured": "2013-11-25 21:20:23",
                  "flickr_url": "http://farm1.staticflickr.com/167/423175046_6cd9d0205a_z.jpg",
                  "id": 475546
           }],         #图像描述结束,下面开始介绍licenses
 
 
    "licenses":
         [ {
                  "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/",
                  "id": 1,
                  "name": "Attribution-NonCommercial-ShareAlike License"
           },
            .....#此处省略七个license
            .....
         {
                  "url": "http://creativecommons.org/licenses/by-nc-nd/2.0/",
                  "id": 8,
                  "name": "Attribution-NonCommercial-NoDerivs License"
         }],
 
 
 
      "annotations":
      [   { 
#如果你想了解这个annotations中segment里面是什么,首先它是通过压缩处理后的分割区域的一个表示,TFRecord
 
                 "segmentation":[[312.29,562.89,402.25,511.49,400.96,425.38,398.39,372.69,
                                  388.11,332.85,318.71,325.14,295.58,305.86,269.88,314.86,
                                  258.31,337.99,217.19,321.29,182.49,343.13,141.37,348.27,
                                  132.37,358.55,159.36,377.83,116.95,421.53,167.07,499.92,
                                  232.61,560.32,300.72,571.89]],
                "area": 54652.9556,
                "iscrowd": 0,
                "image_id": 480023,
                "bbox": [116.95,305.86,285.3,266.03],
                "category_id": 58,"id": 86
          },
            .....#此处省略很多图像的分割标签
            .....
                "segmentation":[[312.29,562.89,402.25,511.49,400.96,425.38,398.39,372.69,
                                388.11,332.85,318.71,325.14,295.58,305.86,269.88,314.86,
                                258.31,337.99,217.19,321.29,182.49,343.13,141.37,348.27,
                                132.37,358.55,159.36,377.83,116.95,421.53,167.07,499.92,
                                232.61,560.32,300.72,571.89]],
              "area": 54652.9556,
              "iscrowd": 0,
              "image_id": 480023,
              "bbox": [116.95,305.86,285.3,266.03],
              "category_id": 58,
              "id": 86
          },
 
 
      "categories":#类别信息
     [   {
              "supercategory": "person",
              "id": 1,
              "name": "person"
          },
              .......#此处省略很多图像的类标签
              .......
          {
              "supercategory": "vehicle",
              "id": 2,
              "name": "bicycle"
          },
        {
              "supercategory": "kitchen",#大类
              "id": 50,
              "name": "spoon"
        }