【COCO】制作自己的coco格式实例分割数据集

目录

1数据下载

2数据格式解析

3举例

3.1实例分割任务的示例如下:

3.2图像描述生成任务的示例如下:

3.3人体关键点检测任务示例如下:

4实例分割任务标注详解

4.1label详解

1.info

2.licenses

3.images

4.categories

5.annotations

4.2image详解

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


1数据下载

        下载COCO2014/2017数据集,里面有label格式,可以按照这个数据格式准备自己的数据集。这里是废了很大力气的。下载数据集命令:

sh COCO_test.sh

        其中coco_test.sh内容如下:

#!/bin/bash

start=`date +%s`

# handle optional download dir
if [ -z "$1" ]
  then
    # navigate to ./data
    echo "navigating to ./data/ ..."
    mkdir -p ./data
    cd ./data/
    mkdir -p ./coco
    cd ./coco
    mkdir -p ./images
    mkdir -p ./annotations
  else
    # check if specified dir is valid
    if [ ! -d $1 ]; then
        echo $1 " is not a valid directory"
        exit 0
    fi
    echo "navigating to " $1 " ..."
    cd $1
fi

if [ ! -d images ]
  then
    mkdir -p ./images
fi

# Download the image data.
cd ./images
echo "Downloading MSCOCO train images ..."
curl -LO http://images.cocodataset.org/zips/train2017.zip
echo "Downloading MSCOCO val images ..."
curl -LO http://images.cocodataset.org/zips/val2017.zip

cd ../
if [ ! -d annotations ]
  then
    mkdir -p ./annotations
fi

# Download the annotation data.
cd ./annotations
echo "Downloading MSCOCO train/val annotations ..."
curl -LO http://images.cocodataset.org/annotations/annotations_trainval2014.zip
curl -LO http://images.cocodataset.org/annotations/annotations_trainval2017.zip
echo "Finished downloading. Now extracting ..."

# Unzip data
echo "Extracting train images ..."
unzip -qqjd ../images ../images/train2017.zip
echo "Extracting val images ..."
unzip -qqjd ../images ../images/val2017.zip
echo "Extracting annotations ..."
unzip -qqd .. ./annotations_trainval2014.zip
unzip -qqd .. ./annotations_trainval2017.zip

echo "Removing zip files ..."
rm ../images/train2017.zip
rm ../images/val2017.zip
rm ./annotations_trainval2014.zip
rm ./annotations_trainval2017.zip


end=`date +%s`
runtime=$((end-start))

echo "Completed in " $runtime " seconds"

         下载数据界面,过程可能比较慢。。。

2数据格式解析

        标注文件:instances_train2017.json
        以 COCO2017\annotations_train2017\annotations\instances_train2017.json
为例。这个json文件中的信息有以下5个键值所指。
        基本结构如下:

        数据集标注json文件所在目录annotations_train2017,文件目录如下:

【COCO】制作自己的coco格式实例分割数据集_第1张图片

  1. instances_train2017.json实例分割数据集标注格式
  2. captions_train2017.json图像描述生成数据集标注格式
  3. person_keypoints_train2017.json人体关键点数据集标注格式 

3举例

3.1实例分割任务的示例如下:

【COCO】制作自己的coco格式实例分割数据集_第2张图片

3.2图像描述生成任务的示例如下:

a man flying through the air while riding a skateboard.
a skateboarder doing a trick at a skate park.
a man in black hovers over a skateboard while they are both in the air.
a person jumping a skate board in the sky
a person on a skateboard jumping up into the air.

3.3人体关键点检测任务示例如下:

【COCO】制作自己的coco格式实例分割数据集_第3张图片

4实例分割任务标注详解

4.1label详解

{
“info”: {…},
“licenses”: […],
“images”: […],
“categories”: […],
“annotations”: […]
}

        其中info、images、licenses三个key是不同类型标注文件共享的,最后的annotationscategories按照不同的任务有所不同,这两个也是我们制作自己的实例分割数据集的关键。


1.info

该字典包含有关数据集的元数据,对于官方的 COCO 数据集,如下:
{
“description”: “COCO 2017 Dataset”,
“url”: “http://cocodataset.org”,
“version”: “1.0”,
“year”: 2017,
“contributor”: “COCO Consortium”,
“date_created”: “2017/09/01”
}
info仅包含基本信息,"url"值指向数据集官方网站(例如 UCI 存储库页面或在单独域中),这是机器学习数据集中常见的事情,指向他们的网站以获取更多信息,例如获取数据的方式和时间。


2.licenses

licenses是数据集中图像许可的链接,例如知识共享许可,具有以下结构:

[
{
“url”: “http://creativecommons.org/licenses/by-nc-sa/2.0/”,
“id”: 1,
“name”: “Attribution-NonCommercial-ShareAlike License”
},
{
“url”: “http://creativecommons.org/licenses/by-nc/2.0/”,
“id”: 2,
“name”: “Attribution-NonCommercial License”
},

]
        这里要注意的重要一点是"id"字段——"images"字典中的每个图像都应该指定其许可证的“id”。

        在使用图像时,请确保没有违反其许可——可以在 URL 下找到全文。如果我们决定创建自己的数据集,请为每个图像分配适当的许可——如果我们不确定,最好不要使用该图像。


3.images

        images这个字典还包含了所有的图片的名称但是没有图片中目标的信息。
        包含有关图像的元数据,images内容示例如下:

{
“license”: 3,
“file_name”: “000000391895.jpg”,
“coco_url”: “http://images.cocodataset.org/train2017/000000391895.jpg”,
“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
}
 


4.categories

categories目标检测/目标分割示例

[
{“supercategory”: “person”, “id”: 1, “name”: “person”},
{“supercategory”: “vehicle”, “id”: 2, “name”: “bicycle”},
{“supercategory”: “vehicle”, “id”: 3, “name”: “car”},

{“supercategory”: “indoor”, “id”: 90, “name”: “toothbrush”}
]

        这些是可以在图像上检测到的对象类别("categories"在 COCO 中是类别的另一个名称,我们可以从监督机器学习中了解到)。

        每个类别都有一个唯一的"id",它们应该在 [1,number of categories] 范围内。类别也分为“超类别”,我们可以在程序中使用它们,例如,当我们不关心是自行车、汽车还是卡车(name)时,一般检测车辆(supercategory)。


5.annotations

annotations包含以下7个信息。

  1. “segmentation”:分割掩码像素列表;这是一个扁平的对列表,因此我们应该采用第一个和第二个值(图片中的 x 和 y),然后是第三个和第四个值,以获取坐标;需要注意的是,这些不是图像索引,因为它们是浮点数——它们是由 COCO-annotator 等工具从原始像素坐标创建和压缩的
  2. “area”:分割掩码内的像素数
  3. “iscrowd”:注释是针对单个对象(值为 0),还是针对彼此靠近的多个对象(值为 1);对于实例分割,此字段始终为 0 并被忽略
  4. “image_id”: ‘images’ 字典中的 ‘id’ 字段;就是图片的名称去除了后缀名
  5. “bbox”:边界框,即对象周围矩形的坐标(左上x,左上y,宽,高);
  6. “category_id”:对象的类,对应"类别"中的"id"字段
  7. “id”: 注释的唯一标识符;警告:这只是注释ID,这并不指向其他词典中的特定图像!

        最后使用数据集时,要使用image_id来获取目标所在的图片,使用bbox获得目标的边界框,category_id来获得目标的类别,这是最主要的三个参数

4.2image详解

        image没有什么可解释的,就是跟正常分割的数据集格式一样,文件夹里包含所有训练数据集原图。

【COCO】制作自己的coco格式实例分割数据集_第4张图片

整理不易,欢迎一键三连!!!


送你们一条美丽的--分割线--

⛵⛵⭐⭐

参考:链接

你可能感兴趣的:(实例分割,python,coco,实例分割,图像描述生成,人体关键点检测,coco数据集)