Spaces:
Runtime error
Runtime error
| import cv2 | |
| import numpy as np | |
| from sahi.utils.cv import read_image_as_pil,get_bool_mask_from_coco_segmentation | |
| from sahi.prediction import ObjectPrediction, PredictionScore,visualize_object_predictions | |
| from PIL import Image | |
| def custom_render_result(model,image, result,rect_th=2,text_th=2): | |
| if model.overrides["task"] not in ["detect", "segment"]: | |
| raise ValueError( | |
| f"Model task must be either 'detect' or 'segment'. Got {model.overrides['task']}" | |
| ) | |
| image = read_image_as_pil(image) | |
| np_image = np.ascontiguousarray(image) | |
| names = model.model.names | |
| masks = result.masks | |
| boxes = result.boxes | |
| object_predictions = [] | |
| if boxes is not None: | |
| det_ind = 0 | |
| for xyxy, conf, cls in zip(boxes.xyxy, boxes.conf, boxes.cls): | |
| if masks: | |
| img_height = np_image.shape[0] | |
| img_width = np_image.shape[1] | |
| segments = masks.segments | |
| segments = segments[det_ind] # segments: np.array([[x1, y1], [x2, y2]]) | |
| # convert segments into full shape | |
| segments[:, 0] = segments[:, 0] * img_width | |
| segments[:, 1] = segments[:, 1] * img_height | |
| segmentation = [segments.ravel().tolist()] | |
| bool_mask = get_bool_mask_from_coco_segmentation( | |
| segmentation, width=img_width, height=img_height | |
| ) | |
| if sum(sum(bool_mask == 1)) <= 2: | |
| continue | |
| object_prediction = ObjectPrediction.from_coco_segmentation( | |
| segmentation=segmentation, | |
| category_name=names[int(cls)], | |
| category_id=int(cls), | |
| full_shape=[img_height, img_width], | |
| ) | |
| object_prediction.score = PredictionScore(value=conf) | |
| else: | |
| object_prediction = ObjectPrediction( | |
| bbox=xyxy.tolist(), | |
| category_name=names[int(cls)], | |
| category_id=int(cls), | |
| score=conf, | |
| ) | |
| object_predictions.append(object_prediction) | |
| det_ind += 1 | |
| result = visualize_object_predictions( | |
| image=np_image, | |
| object_prediction_list=object_predictions, | |
| rect_th=rect_th, | |
| text_th=text_th, | |
| ) | |
| return Image.fromarray(result["image"]) |