from inference.core.env import API_KEY, API_KEY_ENV_NAMES from inference.core.exceptions import MissingApiKeyError from inference.core.models.stubs import ( ClassificationModelStub, InstanceSegmentationModelStub, KeypointsDetectionModelStub, ObjectDetectionModelStub, ) from inference.core.registries.roboflow import get_model_type from inference.models import ( YOLACT, VitClassification, YOLONASObjectDetection, YOLOv5InstanceSegmentation, YOLOv5ObjectDetection, YOLOv7InstanceSegmentation, YOLOv8Classification, YOLOv8InstanceSegmentation, YOLOv8ObjectDetection, ) from inference.models.yolov8.yolov8_keypoints_detection import YOLOv8KeypointsDetection ROBOFLOW_MODEL_TYPES = { ("classification", "stub"): ClassificationModelStub, ("classification", "vit"): VitClassification, ("classification", "yolov8n"): YOLOv8Classification, ("classification", "yolov8s"): YOLOv8Classification, ("classification", "yolov8m"): YOLOv8Classification, ("classification", "yolov8l"): YOLOv8Classification, ("classification", "yolov8x"): YOLOv8Classification, ("object-detection", "stub"): ObjectDetectionModelStub, ("object-detection", "yolov5"): YOLOv5ObjectDetection, ("object-detection", "yolov5v2s"): YOLOv5ObjectDetection, ("object-detection", "yolov5v6n"): YOLOv5ObjectDetection, ("object-detection", "yolov5v6s"): YOLOv5ObjectDetection, ("object-detection", "yolov5v6m"): YOLOv5ObjectDetection, ("object-detection", "yolov5v6l"): YOLOv5ObjectDetection, ("object-detection", "yolov5v6x"): YOLOv5ObjectDetection, ("object-detection", "yolov8"): YOLOv8ObjectDetection, ("object-detection", "yolov8s"): YOLOv8ObjectDetection, ("object-detection", "yolov8n"): YOLOv8ObjectDetection, ("object-detection", "yolov8s"): YOLOv8ObjectDetection, ("object-detection", "yolov8m"): YOLOv8ObjectDetection, ("object-detection", "yolov8l"): YOLOv8ObjectDetection, ("object-detection", "yolov8x"): YOLOv8ObjectDetection, ("object-detection", "yolo_nas_s"): YOLONASObjectDetection, ("object-detection", "yolo_nas_m"): YOLONASObjectDetection, ("object-detection", "yolo_nas_l"): YOLONASObjectDetection, ("instance-segmentation", "stub"): InstanceSegmentationModelStub, ( "instance-segmentation", "yolov5-seg", ): YOLOv5InstanceSegmentation, ( "instance-segmentation", "yolov5n-seg", ): YOLOv5InstanceSegmentation, ( "instance-segmentation", "yolov5s-seg", ): YOLOv5InstanceSegmentation, ( "instance-segmentation", "yolov5m-seg", ): YOLOv5InstanceSegmentation, ( "instance-segmentation", "yolov5l-seg", ): YOLOv5InstanceSegmentation, ( "instance-segmentation", "yolov5x-seg", ): YOLOv5InstanceSegmentation, ( "instance-segmentation", "yolact", ): YOLACT, ( "instance-segmentation", "yolov7-seg", ): YOLOv7InstanceSegmentation, ( "instance-segmentation", "yolov8n", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8s", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8m", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8l", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8x", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8n-seg", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8s-seg", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8m-seg", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8l-seg", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8x-seg", ): YOLOv8InstanceSegmentation, ( "instance-segmentation", "yolov8-seg", ): YOLOv8InstanceSegmentation, ("keypoint-detection", "stub"): KeypointsDetectionModelStub, ("keypoint-detection", "yolov8n"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8s"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8m"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8l"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8x"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8n-pose"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8s-pose"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8m-pose"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8l-pose"): YOLOv8KeypointsDetection, ("keypoint-detection", "yolov8x-pose"): YOLOv8KeypointsDetection, } try: from inference.models import SegmentAnything ROBOFLOW_MODEL_TYPES[("embed", "sam")] = SegmentAnything except: pass try: from inference.models import Clip ROBOFLOW_MODEL_TYPES[("embed", "clip")] = Clip except: pass try: from inference.models import Gaze ROBOFLOW_MODEL_TYPES[("gaze", "l2cs")] = Gaze except: pass try: from inference.models import DocTR ROBOFLOW_MODEL_TYPES[("ocr", "doctr")] = DocTR except: pass try: from inference.models import GroundingDINO ROBOFLOW_MODEL_TYPES[("object-detection", "grounding-dino")] = GroundingDINO except: pass try: from inference.models import CogVLM ROBOFLOW_MODEL_TYPES[("llm", "cogvlm")] = CogVLM except: pass try: from inference.models import YOLOWorld ROBOFLOW_MODEL_TYPES[("object-detection", "yolo-world")] = YOLOWorld except: pass def get_roboflow_model(model_id, api_key=API_KEY, **kwargs): task, model = get_model_type(model_id, api_key=api_key) return ROBOFLOW_MODEL_TYPES[(task, model)](model_id, api_key=api_key, **kwargs)