SAHIPublished by onesixx on 22-09-0422-09-04 Convert any dataset to COCO object detection format with SAHI – Fatih Cagatay Akyon kitty-tiny to Coco Python # https://www.immersivelimit.com/tutorials/create-coco-annotations-from-scratch # https://github.com/obss/sahi/blob/main/docs/coco.md # from distutils.log import info # import inspect # ****** Import required classes from sahi.utils.coco import Coco, CocoCategory, CocoImage, CocoAnnotation from sahi.utils.file import save_json import mmcv import os from PIL import Image path_root = './kitti_tiny/' path_img = os.path.join(path_root, 'training/image_2') path_anno = os.path.join(path_root, 'training/label_2') fullNm_trainSet = os.path.join(path_root,'train.txt') # ****** Init Coco object coco = Coco() # ****** Add Category (id from 0) CLASSES = ('Car', 'Truck', 'Pedestrian', 'Cyclist') for i, cls in enumerate(CLASSES): coco.add_category( CocoCategory(id=i, name=cls) ) # ****** Add Image image_list = mmcv.list_from_file(fullNm_trainSet) cate2anno = {c:i for i, c in enumerate(CLASSES)} for id, image_id in enumerate(image_list): #image_id = image_list[0] filenNm = f'{image_id}.jpeg' img_fullNm = os.path.join(path_img, filenNm) width, height = Image.open(img_fullNm).size coco_image = CocoImage( height=height, width=width, id = id, file_name = filenNm ) # ****** Add Annotation anno4Img = mmcv.list_from_file(os.path.join(path_anno, image_id+'.txt')) # annoList = [line.strip().split(' ') for line in anno4Img] # bbox_labels = [row[0] for row in annoList] # bboxes = [ [float(info) for info in row[4:8]] for row in annoList] for i, line in enumerate(anno4Img): # line = lines[1] row = line.strip().split(' ') bbox_label = row[0] if bbox_label in cate2anno: cateId = cate2anno[bbox_label] #cateNm = CLASSES[cateId] # [x_min, y_min, width, height], pnt = [float(info) for info in row[4:8]] bboxes = [pnt[0], pnt[1], pnt[2]-pnt[0], pnt[3]-pnt[1]] coco_image.add_annotation( CocoAnnotation( image_id = id, bbox = bboxes, segmentation = [], category_id = cateId ) ) else: pass # "segmentation" =[], # "attribute" # "id" auto # ****** add coco image to coco Object coco.add_image(coco_image) coco_json = coco.json coco_json["licenses"] = [dict()] coco_json["info"] = [dict(items="x", dictionary ='x')] fullNm_result = os.path.join(path_root,'anno_cc.json') save_json(data=coco_json, save_path=fullNm_result) xView to COCO conversion scriptVisDrone to COCO conversion scriptGitHub – obss/sahi: A lightweight vision library for performing large scale object detectionObject detection and instance segmentation are by far the most important fields of applications in Computer Vision… Categories: vision onesixx Blog Owner Label {} [+] Name* Email Δ Label {} [+] Name* Email Δ 0 Comments Inline Feedbacks View all comments