图像数据格式#

介绍Coovally中图像类任务使用到的数据集格式,如:COCO、VOC、YOLO等。

ImageNet格式数据集说明#

ImageNet数据库简介#

ImageNet是一种数据集。斯坦福大学教授李飞飞为了解决机器学习中过拟合和泛化的问题而牵头构建的数据集。该数据集从2007年开始收集建立,直到2009年作为论文的形式在CVPR 2009上面发布。截止目前,该数据集仍然是深度学习领域中图像分类、检测、定位的最常用数据集之一。随着对该项目中数据的使用逐渐衍生出一种同名的数据标注规范。与ImageNet数据集相对应的格式也是Coovally目前支持的格式之一,可用于分类任务。

分类任务数据准备#

需要按如下目录准备我们的训练文件:

├── annotations
│   ├── label.csv
│   ├── meta.json
├── images
     ├── cat
             ├── cat_example_1.jpg
             ├── cat_example_2.jpg
     ├── dog
             ├── dog_example_1.jpg
             ├── dog_example_2.jpg

数据层级结构

当按照上述格式上传数据到系统时,系统会自动生成分类任务标签,格式如下。

annotations文件夹下应包含两个标签文件,分别为label.csv和meta.json两个文件。label.csv文件主要包含两列:第一列为图片的地址;第二列为该行图片所属的分类,如下所示。

images/cat/cat_example_1.jpg, cat
images/dog/dog_example_2.jpg, dog

label.csv文件内容

meta.json文件格式如下:

{
    "img_count": 4,
    "label_count": 2,
    "label2id": {
        "cat": 0,
        "dog": 1
    },
    "id2label": {
        "0": "cat",
        "1": "dog"
    }
}

meta.json文件内容

各个字段的含义:

  • img_count 图片总数量

  • label_count 标签类别数量

  • label2id 标签到id的映射

  • id2label id到标签的映射

COCO格式数据集说明#

COCO数据集简介#

COCO数据集是一个可用于图像检测(image detection),语义分割(semantic segmentation)和图像标题生成(image captioning)的大规模数据集。它有超过330K张图像(其中220K张是有标注的图像),包含150万个目标,80个目标类别(object categories:行人、汽车、大象等),91种材料类别(stuff categoris:草、墙、天空等),每张图像包含五句图像的语句描述,且有250,000个带关键点标注的行人。同样地,COCO数据也有其同名的数据格式标注规范。在Coovally平台中,COCO格式主要适用于目标检测、语义分割和实例分割任务。

COCO格式数据集准备#

Coovally平台会自动切分训练集和测试集,将COCO数据集格式数据按照以下数据目录层级结构放置即可:

├── annotations
│   ├── instances_train2017.json
├── images
     ├── cat_example.jpg
     ├── dog_example.jpg

以instances_train2017.json为例,标签目录annotations文件夹下应包含一个名为instances_train2017.json的json格式标签文件,images文件下放置需要处理的图像数据。

下面对json格式标签文件进行介绍。

{
    "images": [
        {
            "file_name": "cat_example.jpg",
            "height": 1400,
            "width": 1600,
            "id": 1
        },
        {
            "file_name": "dog_example.jpg",
            "height": 1400,
            "width": 1600,
            "id": 2
        }
    ],
    "annotations": [
        {
            "segmentation": [
                [
                    333.0,
                    72.0,
                    426.0,
                    72.0,
                    426.0,
                    159.0,
                    333.0,
                    159.0
                ]
            ],
            "area": 8091.0,
            "iscrowd": 0,
            "image_id": 1,
            "bbox": [
                333.0,
                72.0,
                93.0,
                87.0
            ],
            "category_id": 1,
            "id": 1,
            "ignore": 0
        }
    ],
    "categories": [
        {
            "name": "cat",
            "id": 1
        },
        {
            "name": "dog",
            "id": 2
        }
    ]
}

json格式标签文件内容

说明:

  • images保存图片部分信息;

    • file_name图片名;

    • height图片高度;

    • width图片宽度;

    • id图片id;

  • annotations保存标注信息,包括bbox和segmentation;

    • area 多边形所围成的面积;

    • iscrowd 0:单个物体,1:多个物体的集合体;iscrowd=0时,segmentation将使用polygons格式;当iscrowd=1时,segmentation将使用RLE格式;

    • image_id 图片id;

    • bbox 标注框[x, y, width, height];

  • segmentation 会标注多边形所有点的x坐标,y坐标;

    • category_id 类别id;

    • id 标签id;

    • ignore 是否忽略,默认为0;

  • categories包含样本标签和ID的对应关系;

VOC格式数据集说明#

VOC格式是一种图片的标注规范,很多目标检测或者目标分割的算法都会遵循VOC标注规范的数据集,下文以经典VOC为例,介绍VOC格式数据集的格式与组成。

VOC格式数据准备#

在使用Coovally平台时,VOC格式数据所需准备的文件格式需按如下目录层级结构放置:

├── annotations
│   ├── cat_example.xml
│   ├── dog_example.xml
├── images
     ├── cat_example.jpg
     ├── dog_example.jpg

其中,annotations文件夹下应包含所有图片的标签文件(xml格式)。images文件夹下应包含所需处理的图像数据(.jpg、.png等)。

下面是XML格式详情,以供参考。

<annotation>
     <folder>catsvsdogs</folder>
     <filename>cat_example.jpg</filename>  //标签对应的图像文件名
     <path>D:\ catsvsdogs\ images\ cat_example.jpg</path> //图片地址
     <source>
             <database>Unknown</database>//图像来源(不重要)
     </source>
     <size>                                          //图像尺寸
             <width>2592</width>             //宽度
             <height>1944</height>   //高度
             <depth>3</depth>                //通道数
     </size>
     <segmented>0</segmented>        //是否用于分割,默认选0
     <object>
             <name>cat</name>        //第一个对象的类别
             <pose>Unspecified</pose>//默认为Unspecified
             <truncated>0</truncated>//默认为0
             <difficult>0</difficult>//默认为0
             <bndbox>                                //bounding-box位置
                     <xmin>100</xmin>        //bbx左上角x坐标
                     <ymin>100</ymin>        //bbx左上角y坐标
                     <xmax>200</xmax>        //bbx右下角x坐标
                     <ymax>200</ymax>        //bbx右下角y坐标
             </bndbox>
     </object>
     <object>
             <name>cat</name>        //第二个对象的类别
             <pose>Unspecified</pose>//默认为Unspecified
             <truncated>0</truncated>//默认为0
             <difficult>0</difficult>//默认为0
             <bndbox>                                //bounding-box位置
                     <xmin>300</xmin>        //bbx左上角x坐标
                     <ymin>300</ymin>        //bbx左上角y坐标
                     <xmax>400</xmax>        //bbx右下角x坐标
                     <ymax>400</ymax>        //bbx右下角y坐标
             </bndbox>
     </object>
</annotation>

xml格式标签文件内容

ICDAR数据集格式说明#

ICDAR(International Conference on Document Analysis and Recognition)数据集 ,目前ICDAR包含的格式由ICDAR2013、ICDAR2015、ICDAR2017。

ICDAR 2013 包含聚焦场景文本的229个训练图像和233个测试图像。它继承了ICDAR 2003数据集的大部分样本。他们都是真实世界的图像,显示标志牌、书籍、海报或其他物品上的文字。文字都是英文的且水平对齐。标注是轴对齐的边界框,共划分出1015个裁剪的单词图像。该数据集被广泛用于测试文本探测器的性能,通常被称为ICDAR 2013。

ICDAR2015 包含1,000个训练图像和500个测试图像。这些图像是使用谷歌眼镜获得的,没有考虑视角、位置或图像质量。文本实显示方向随意、也可能尺寸很小或低分辨率,使其比ICDAR 2013更加难以识别。完整的数据集有7,548个带有四边形形式标注的文本实例。它通常用于基准测试,现在称作ICDAR 2015。

ICDAR 2017 MLT5 旨在对多语言场景下的文本检测和识别任务进行基准测试。它包含7,200个训练自然场景图像、1,800个验证自然场景图像和9,000个测试自然场景图像,包含6种不同语言的文本(拉丁语、阿拉伯语、孟加拉语、韩语、平假名、片假名和符号)。标注以四边形、语言类别和转录(UTF-8文本)的形式提供。

ICDAR 2013格式如下:

377,117,463,117,Genaxis Theatre
493,115,519,115,[06]
374,155,409,155,###
492,151,551,151,62-03
376,198,422,198,Carpark
  • 标注格式:xmin, ymin, xmax, ymax, text-

  • 举例:38, 43, 920, 215, “Tiredness”

ICDAR 2015格式如下:

377,117,463,117,465,130,378,130,Genaxis Theatre
493,115,519,115,519,131,493,131,[06]
374,155,409,155,409,170,374,170,###
492,151,551,151,551,170,492,170,62-03
376,198,422,198,422,212,376,212,Carpark
  • 标注格式:x1,y1,x2,y2,x3,y3,x4,y4,text 其中,x1,y1为左上角坐标,x2,y2为右上角坐标,x3,y3为右下角坐标,x4,y4为左下角坐标。

  • 举例:(### 表示文字无法辨认)

    • 377,117,463,117,465,130,378,130,Genaxis Theatre

    • 374,155,409,155,409,170,374,170,###

ICDAR 当有字符但是模糊看不到时标签为###,ICDAR2013的标签中包含5列,前4列为矩形的左上和右下坐标,第5列为字符的内容。ICDAR2015用了平行四边形表示,因此包含了4个点的坐标,按顺时针方向摆放,第9列为字符内容。

Coovally当前支持ICDAR2015格式的数据集,但在模型训练时需要先将ICDAR2015转成COCO格式。

OCRDataset数据集格式说明#

OCRDataset为Coovally文字识别任务输入格式,样例如下:

test_word_1.png JOINT
test_word_2.png yourself
test_word_3.png 154
test_word_4.png 197
test_word_5.png 727
test_word_6.png 198
test_word_7.png 20029

其中,第一列为需要识别图片的名称,第二列为图片中的字符。 PS:这里的图片指的是经过文字检测,切出的仅含字符的图片。

YOLO数据集格式说明#

YOLO数据集格式为YOLOv5模型专用的格式,支持目标检测任务。

YOLO格式数据准备#

在使用Coovally平台时,YOLO格式数据所需准备的文件格式需按如下目录层级结构放置:

├── label
│   ├── cat_example.txt
│   ├── dog_example.txt
├── images
│    ├── cat_example.jpg
│    ├── dog_example.jpg

其中,images文件夹下应包含所需处理的图像数据(.jpg、.png等),label文件夹下应包含所有图片的标签文件(.txt格式)。

PS:此处的标签文件夹名必须为label。

下面对标签文件进行介绍。

0 0.736516 0.247188 0.498875 0.476417
0 0.637063 0.732938 0.494125 0.510583

cat_example.txt文件内容

说明:

  • 标签文件名与图片文件名相同。

  • 标签文件中每行代表一个标签。

  • 每行有5个数字构成。第一个为标签类型;第二个、第三个数字分别为该标签中心点横坐标、纵坐标的归一化值;第四个、第五个数字分别为该标签宽和高的归一化值。

DOTA数据集格式说明#

DOTA(Dataset for Object deTection in Aerial images)数据集 。数据集中,每个对象都通过有向边界框(OBB)进行了注释,可以表示为(x1,y1,x2,y2,x3,y3,x4,y4),其中(xi,yi)表示表示OBB的第i个顶点。顶点按顺时针顺序排列。除了使用OBB进行注释之外,每个实例还带有一个类别和一个难度级别的标签,用于指示该实例是否难以被检测到(1表示难,0表示不难)。以下是图像的示例注释:

x1, y1, x2, y2, x3, y3, x4, y4, category, 1
x1, y1, x2, y2, x3, y3, x4, y4, category, 0
...