img = cv2.imread(dic["file_name"], cv2.IMREAD_COLOR)[:, :, ::-1] basename = os.path.basename(dic["file_name"]) vis = Visualizer(img, metadata) vis_pred = vis.draw_proposals_separately( proposal_by_image[dic["image_id"]], img.shape[:2], args.conf_threshold) predictions = create_instances(pred_by_image[dic["image_id"]], img.shape[:2]) vis = Visualizer(img, metadata) pred = vis.draw_instance_predictions(predictions).get_image() vis_pred.append(pred) vis = Visualizer(img, metadata) gt = vis.draw_dataset_dict(dic).get_image() concat = vis.smart_concatenate(vis_pred, min_side=1960) vis = np.concatenate([pred, gt], axis=1) if args.show: webcv2.imshow(basename + ' - Press D for details', vis[:, :, ::-1]) key = webcv2.waitKey() if key == 100: # 'd' webcv2.imshow(basename, concat[:, :, ::-1]) webcv2.waitKey() else: cv2.imwrite(os.path.join(args.output, basename), vis[:, :, ::-1]) cv2.imwrite( os.path.join(args.output, basename) + '-proposals.jpg', concat[:, :, ::-1])
for range_name in ratios_ranges.keys(): if not len(grouped_gt[range_name]) > 0: continue visualized = True vis = Visualizer(img, metadata, scale=scale) topk_boxes, topk_indices = vis.topk_iou_boxes( predictions.pred_boxes, Boxes([ BoxMode.convert(x["bbox"], BoxMode.XYWH_ABS, BoxMode.XYXY_ABS) for x in grouped_gt[range_name] ])) topk_indices = topk_indices.reshape((-1, )) # Transform indices to list since shape 1 tensors will be regarded as scalars. vis.draw_dataset_dict({"annotations": grouped_gt[range_name]}) vis_boxes = vis.draw_instance_predictions( predictions[topk_indices.tolist()]) if args.show: webcv2.imshow(basename + "-boxes@" + range_name, vis_boxes.get_image()[..., ::-1]) else: save(vis_boxes.get_image()[..., ::-1], args.output, "boxes", basename + "@%s.jpg" % range_name) vis_anchor = Visualizer(img, metadata) anchors = predictions.anchors.tensor[topk_indices] vis_anchor = vis_anchor.overlay_instances( boxes=anchors.reshape(-1, 4), labels=predictions.scores[topk_indices.reshape(-1).tolist()])