Format Anotasi Gambar pada Deep Machine Learning

By | March 13, 2021
2,639 Views

Kompetisi dalam deep machine learning membutuhkan jutaan dataset dan membutuhkan waktu belasan dan bahkan puluhan jam dalam sesi training. Pengalaman saya sendiri membutuhkan waktu 18 jam karena butuh 5000 dataset dengan ukuran 128×128.

Image Annotation Formats – Format Anotasi Gambar secara umum ada 3 yaitu

Format Annotation COCO

COCO merupakan Image Annotation Formats yang mempunyai 6 komponen yaitu object detection, keypoint detection, stuff segmentation, panoptic segmentation, dan  image captioning yang disimpan dalam format JSON, berikut contoh dari format COCO. Kalian peroleh jutaan dataset dengan format COCO disini

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

categories[{
"id": int,
"name": str,
"supercategory": str,}]

Format COCO adalah format paling lengkap informasinya, biasanya untuk kompetesi pada ImageNet menggunakan format ini,

Format Annotation Pascal VOC

Pascal VOC menggunakan format XML yang berisi lokasi bbox atas sebuah image

<annotation> 
  <folder>Train</folder> 
  <filename>01.png</filename>      
  <path>/path/Train/01.png</path> 
  <source>  
    <database>Unknown</database> 
  </source>
  <size>  
    <width>224</width>  
    <height>224</height>  
    <depth>3</depth>   
  </size> 
  <segmented>0</segmented> 
  <object>  
    <name>36</name>  
    <pose>Frontal</pose>  
    <truncated>0</truncated>  
    <difficult>0</difficult>  
    <occluded>0</occluded>  
    <bndbox>   
      <xmin>90</xmin>   
      <xmax>190</xmax>   
      <ymin>54</ymin>   
      <ymax>70</ymax>  
    </bndbox> 
  </object>
</annotation>

Format PACSAL VOCO biasanya digunakan untuk object detection, kalian butuh parser XML untuk mendapatkan bbox nya. Kalian bisa menggunakan kode berikut untuk membaca PASCAL VOCO

def read_pascal(xml_file: str):

    tree = ET.parse(xml_file)
    root = tree.getroot()

    list_with_all_boxes = []

    for boxes in root.iter('object'):

        filename = root.find('filename').text

        ymin, xmin, ymax, xmax = None, None, None, None

        for box in boxes.findall("bndbox"):
            ymin = int(float(box.find("ymin").text))
            xmin = int(float(box.find("xmin").text))
            ymax = int(float(box.find("ymax").text))
            xmax = int(float(box.find("xmax").text))

        list_with_single_boxes = [xmin, ymin, xmax, ymax]
        list_with_all_boxes.append(list_with_single_boxes)
    return filename, list_with_all_boxes

Sedangkan aplikasi untuk membaca XML, bisa kalian gunakan

Belajar Python dan OpenCV- Crop the image by annotation XML

Saya biasannya menggunakan format PASCAL VOCO

See also  Pilihan terbaik Image Processing di portable device

Format Annotation YOLO

YOLO merupakan format paling standar terkadang dikasih extension *.txt atau *.csv isinya mirip dengan PASCAL VOCO, namun menggunakan 1 baris saja

<object-class> <x> <y> <width> <height>

Misalkan seperti ini

0 45 55 29 67
1 99 83 28 44

Image Annotation Tools

Untuk edit image Annotation, kalian bisa menggunakan tools berikut,

Namun demikian, saya terbiasa menggunakan LabelImg atau kalian yang sering menggunakan Matlab, ada koq aplikasi bawaan nya

https://www.mathworks.com/help/vision/ug/get-started-with-the-image-labeler.html