Image Annotation Formats – Format Anotasi Gambar digunakan pada dataset untuk deep machine learning. Perkembangan yang pesat dalam kompetisi deep machine learning setidaknya terdapat beberapa Image Annotation Formats – Format Anotasi Gambar apa saja?
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
Contents
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
Saya biasannya menggunakan format PASCAL VOCO
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