xqt's picture
UPD: added setup.py for installation
e312782
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")