import os for dirname, _, filenames in os.walk('/kaggle/input'): for filename in filenames: print(os.path.join(dirname, filename)) #Importing Libraries import cv2 import matplotlib.pyplot as plt %matplotlib inline from IPython.display import Image import keras_cv import keras_core as keras from collections import defaultdict import json class COCOParser: def __init__(self, anns_file, imgs_dir): with open(anns_file, 'r') as f: coco = json.load(f) self.annIm_dict = defaultdict(list) self.cat_dict = {} self.annId_dict = {} self.im_dict = {} self.licenses_dict = {} for ann in coco['annotations']: self.annIm_dict[ann['image_id']].append(ann) self.annId_dict[ann['id']]=ann for img in coco['images']: self.im_dict[img['id']] = img for cat in coco['categories']: self.cat_dict[cat['id']] = cat for license in coco['licenses']: self.licenses_dict[license['id']] = license def get_imgIds(self): return list(self.im_dict.keys()) def get_annIds(self, im_ids): im_ids=im_ids if isinstance(im_ids, list) else [im_ids] return [ann['id'] for im_id in im_ids for ann in self.annIm_dict[im_id]] def load_anns(self, ann_ids): im_ids=ann_ids if isinstance(ann_ids, list) else [ann_ids] return [self.annId_dict[ann_id] for ann_id in ann_ids] def load_cats(self, class_ids): class_ids=class_ids if isinstance(class_ids, list) else [class_ids] return [self.cat_dict[class_id] for class_id in class_ids] def get_imgLicenses(self,im_ids): im_ids=im_ids if isinstance(im_ids, list) else [im_ids] lic_ids = [self.im_dict[im_id]["license"] for im_id in im_ids] return [self.licenses_dict[lic_id] for lic_id in lic_ids] coco_images_dir = "/kaggle/input/coco-2017-dataset/coco2017/train2017" annot_file = "/kaggle/input/coco-2017-dataset/coco2017/annotations/instances_train2017.json" coco = COCOParser(annot_file, coco_images_dir) from PIL import Image import numpy as np # define a list of colors for drawing bounding boxes color_list = ["pink", "red", "teal", "blue", "orange", "yellow", "black", "magenta","green","aqua"]*10 num_imgs_to_disp = 4 total_images = len(coco.get_imgIds()) # total number of images sel_im_idxs = np.random.permutation(total_images)[:num_imgs_to_disp] img_ids = coco.get_imgIds() selected_img_ids = [img_ids[i] for i in sel_im_idxs] ann_ids = coco.get_annIds(selected_img_ids) im_licenses = coco.get_imgLicenses(selected_img_ids) fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(15,10)) ax = ax.ravel() #Loading and visualizing the dataset for i, im in enumerate(selected_img_ids): image = Image.open(f"{coco_images_dir}/{str(im).zfill(12)}.jpg") ann_ids = coco.get_annIds(im) annotations = coco.load_anns(ann_ids) for ann in annotations: bbox = ann['bbox'] x, y, w, h = [int(b) for b in bbox] class_id = ann["category_id"] class_name = coco.load_cats(class_id)[0]["name"] license = coco.get_imgLicenses(im)[0]["name"] color_ = color_list[class_id] rect = plt.Rectangle((x, y), w, h, linewidth=2, edgecolor=color_, facecolor='none') t_box=ax[i].text(x, y, class_name, color='red', fontsize=10) t_box.set_bbox(dict(boxstyle='square, pad=0',facecolor='white', alpha=0.6, edgecolor='blue')) ax[i].add_patch(rect) ax[i].axis('off') ax[i].imshow(image) ax[i].set_xlabel('Longitude') ax[i].set_title(f"License: {license}") plt.tight_layout() plt.show()