This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# You may need to restart your runtime prior to this, to let your installation take effect | |
import detectron2 | |
from detectron2.utils.logger import setup_logger | |
setup_logger() | |
# import some common libraries | |
import numpy as np | |
import cv2 | |
import random | |
from google.colab.patches import cv2_imshow |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
from detectron2.structures import BoxMode | |
def get_board_dicts(imgdir): | |
json_file = imgdir+"/dataset.json" #Fetch the json file | |
with open(json_file) as f: | |
dataset_dicts = json.load(f) | |
for i in dataset_dicts: | |
filename = i["file_name"] | |
i["file_name"] = imgdir+"/"+filename | |
for j in i["annotations"]: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Visualizing the Train Dataset | |
dataset_dicts = get_board_dicts("Text_Detection_Dataset_COCO_Format/train") | |
#Randomly choosing 3 images from the Set | |
for d in random.sample(dataset_dicts, 3): | |
img = cv2.imread(d["file_name"]) | |
visualizer = Visualizer(img[:, :, ::-1], metadata=board_metadata) | |
vis = visualizer.draw_dataset_dict(d) | |
cv2_imshow(vis.get_image()[:, :, ::-1]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from detectron2.engine import DefaultTrainer | |
from detectron2.config import get_cfg | |
import os | |
cfg = get_cfg() | |
cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml")) #Get the basic model configuration from the model zoo | |
#Passing the Train and Validation sets | |
cfg.DATASETS.TRAIN = ("boardetect_train",) | |
cfg.DATASETS.TEST = ("boardetect_val",) | |
# Number of data loading threads | |
cfg.DATALOADER.NUM_WORKERS = 4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from detectron2.utils.visualizer import ColorMode | |
#Use the final weights generated after successful training for inference | |
cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth") | |
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.8 # set the testing threshold for this model | |
#Pass the validation dataset | |
cfg.DATASETS.TEST = ("boardetect_val", ) | |
predictor = DefaultPredictor(cfg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import the COCO Evaluator to use the COCO Metrics | |
from detectron2.evaluation import COCOEvaluator, inference_on_dataset | |
from detectron2.data import build_detection_test_loader | |
#Call the COCO Evaluator function and pass the Validation Dataset | |
evaluator = COCOEvaluator("boardetect_val", cfg, False, output_dir="/output/") | |
val_loader = build_detection_test_loader(cfg, "boardetect_val") | |
#Use the created predicted model in the previous step | |
inference_on_dataset(predictor.model, val_loader, evaluator) |