Spaces:
Build error
Build error
| import typing | |
| import ultralytics | |
| YOLO_V10_MODELS = { | |
| "nano": "jameslahm/yolov10n", | |
| "small": "jameslahm/yolov10s", | |
| "medium": "jameslahm/yolov10m", | |
| "base": "jameslahm/yolov10b", | |
| "large": "jameslahm/yolov10l", | |
| "xlarge": "jameslahm/yolov10x", | |
| } | |
| class YOLOv10Plugin: | |
| def __init__( | |
| self, | |
| yolo_model_name: ( | |
| str | |
| | typing.Literal[ | |
| "nano", | |
| "small", | |
| "medium", | |
| "base", | |
| "large", | |
| "xlarge", | |
| ] | |
| ) = "nano", | |
| verbose: bool = True, | |
| ): | |
| assert ( | |
| yolo_model_name in YOLO_V10_MODELS.keys() | |
| ), f"`yolo_model_name` should be either one of {list(YOLO_V10_MODELS.keys())}" | |
| self.yolo_model_name = yolo_model_name | |
| self.model = ultralytics.YOLOv10.from_pretrained( | |
| YOLO_V10_MODELS[yolo_model_name] | |
| ) | |
| self.verbose = verbose | |
| if self.verbose: | |
| print(f"YOLOv10Plugin::__init__::Model Name: {self.yolo_model_name}") | |
| def detect(self, image): | |
| results = self.model(image) | |
| results = results[0].summary() | |
| out = [] | |
| for result in results: | |
| out.append( | |
| { | |
| "name": result["name"], | |
| "class": result["class"], | |
| "confidence": result["confidence"], | |
| "box": [ | |
| int(result["box"]["x1"]), | |
| int(result["box"]["y1"]), | |
| int(result["box"]["x2"]), | |
| int(result["box"]["y2"]), | |
| ], | |
| } | |
| ) | |
| return out | |
| if __name__ == "__main__": | |
| yolo = YOLOv10Plugin() | |
| yolo.detect("https://ultralytics.com/images/zidane.jpg") | |