【數據相關】目標檢測中的數據標注及格式轉換代碼


在目標檢測中有很多常用的數據標注工具,如LabelImg、Labelme等等,經過標注生成的格式各不相同,但基本符合幾大數據集的標注格式。

本文用來介紹目標檢測中常見的幾種數據格式,以及格式之間的相互轉換代碼。

1、數據格式

我之前整理了圖像分類和目標檢測領域常用的數據集,點此查看:鏈接

下圖也給出了常用的數據集,本文主要關注PASCAL VOC、ImageNet和COCO的標注形式,其中PASCAL VOC和ImageNet使用同樣的xml標注格式,COCO為json標注格式。

1.1 PASCAL VOC(xml,csv)

PASCAL VOC挑戰賽(The PASCAL Visual Object Classes )是計算機視覺領域最著名的競賽之一,該競賽始於2005年,於2012年舉辦了最后一屆。

PASCAL VOC目標檢測任務中所使用的的數據集和標注格式為xml,每張圖片對應一個xml格式的標注文件。以一個xml文件為例:

xml文件中給出了:圖片名稱、圖像尺寸、標注矩形框坐標、目標物類別、遮擋程度和辨別難度等信息。

<annotation>
    <folder>VOC2007</folder>
    <filename>test100.mp4_3380.jpeg</filename>
    <size>
        <width>1280</width>    <!--圖像尺寸-->
        <height>720</height>
        <depth>3</depth>
    </size>
    <object>
        <name>banana</name>   <!--目標類別-->
        <bndbox>                <!--GT矩形框坐標-->
            <xmin>549</xmin>
            <xmax>715</xmax>
            <ymin>257</ymin>
            <ymax>289</ymax>
        </bndbox>
        <truncated>0</truncated>  <!--物體是否被遮擋(>15%)-->
        <difficult>0</difficult>  <!--物體是否難以辨別,主要指需結合背景才能判斷出類別的物體-->
    </object>
    <segmented>0</segmented>   <!--是否有分割label-->
</annotation>

由於標注文件是每個圖像對應一個xml文件,在訓練時首先需要將xml文件轉為一個統一的csv文件,xml_to_csv的轉換代碼后面說明。

轉換后的數據集為以下格式:

  • csv/
    • annotation.csv
    • images/
      • image_1.jpg
      • image_2.jpg
      • ...

annotation.csv的形式為:

/path/to/image,xmin,ymin,xmax,ymax,class

1.2 COCO(json)

COCO數據集是微軟構建的一個數據集,其中包括detection, segmentation, keypoints等任務。從前面的圖片也可以看出,COCO數據集的類別總數雖然沒有 ImageNet 中用於detection的類別總數多,但是每個類別的實例目標總數要比PASCAL和ImageNet都要多。

使用labelme等標注工具進行標注,同樣是一張圖片對應一個json文件json格式如下:

{
  "version": "3.16.7",
  "flags": {},
  "shapes": [
    {
      "label": "scratches",
      "line_color": null,
      "fill_color": null,
      "points": [
        [
          0.6363636363636402,
          96.2809917355372
        ],
        [
          199,
          123
        ]
      ],
      "shape_type": "rectangle",
      "flags": {}
    }
  ],
  "lineColor": [
    0,
    255,
    0,
    128
  ],
  "fillColor": [
    255,
    0,
    0,
    128
  ],
  "imagePath": "JPEGImages\\scratches_100.jpg",
  "imageData": "<----太長省略了---->",
  "imageHeight": 200,
  "imageWidth": 200
}

在訓練時,需要將labelme標注的json文件轉換成統一的COCOjson文件,注意這兩種json格式是有很大差異的。COCO的json文件由以下五個字段組成:

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

info和licenses字段的內容一般不太關注

images字段是包含了多個image信息的序列,例如下面的這個images包含了4個images的信息,每個圖片唯一對應一個id

"images": [
    {
      "height": 200,
      "width": 200,
      "id": 0,
      "file_name": "scratches_30.jpg"
    },
    {
      "height": 200,
      "width": 200,
      "id": 1,
      "file_name": "scratches_229.jpg"
    },
    {
      "height": 200,
      "width": 200,
      "id": 2,
      "file_name": "scratches_109.jpg"
    },
    {
      "height": 200,
      "width": 200,
      "id": 3,
      "file_name": "scratches_232.jpg"
    }

annotations字段是包含多個annotation實例的一個列表,以一個annotation實例為例,內容包括圖像id,目標物類別category_id,標注框的坐標信息

"annotations": [
    {
      "id": 0,
      "image_id": 0,
      "category_id": 1,
      "segmentation": [
        [
          14,
          1,
          14,
          37.0,
          14,
          73,
          24.0,
          73,
          34,
          73,
          34,
          37.0,
          34,
          1,
          24.0,
          1
        ]
      ]}

轉換COCO格式的數據集為以下形式:

  • csv/
    • annotation.csv
      • instances_train.json
      • instances_val.json
    • images/
      • image_1.jpg
      • image_2.jpg
      • ...

1.3 YOLO(txt)

labelImg等標注工具,既可以標注生成VOC的xml格式,也可以生成YOLO的txt格式。

YOLO的txt標注文件有兩部分組成:類別編號和矩形框坐標。

類別編號:如果都是實現目標檢測功能的話,那么所有的類別編號均為0。

矩形框坐標:矩形框坐標為歸一化之后的信息,從左到右分別為:中心點x坐標、中心點y坐標,矩形框寬度和矩形框高度

0 0.467785 0.486111 0.054398 0.241770
0 0.311728 0.090021 0.030093 0.179012
0 0.077932 0.201132 0.155093 0.308642
0 0.795139 0.281636 0.233796 0.204218

2、格式轉換

篇幅有限,格式轉換需要的代碼和使用指南我整理匯總到了一起。如果有需要,關注我的公眾號一刻AI,回復:數據轉換  即可獲取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM