diff --git a/CHANGELOG.md b/CHANGELOG.md index b9f2bee6..fe2a11a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ All notable changes to this project will be documented in this file. +## 1.5.2 + +### Added + +- Action recognition support: + - `roboflow project create --type action-recognition` creates an action + recognition project. `roboflow.config.TYPE_ACTION_RECOGNITION` names the type. + - `Version.train(model_type="cosmos3-edge")` now exports `video-coco`, the + format the server trains Cosmos on. `cosmos3-edge-vlm` exports `jsonl`. + Both previously fell back to `yolov5pytorch`. + ## 1.5.1 ### Added diff --git a/roboflow/__init__.py b/roboflow/__init__.py index 6c556500..f829fd0c 100644 --- a/roboflow/__init__.py +++ b/roboflow/__init__.py @@ -21,7 +21,7 @@ CLIPModel = None # type: ignore[assignment,misc] GazeModel = None # type: ignore[assignment,misc] -__version__ = "1.5.1" +__version__ = "1.5.2" def check_key(api_key, model, notebook, num_retries=0): diff --git a/roboflow/cli/handlers/project.py b/roboflow/cli/handlers/project.py index fd072dc0..05e3070d 100644 --- a/roboflow/cli/handlers/project.py +++ b/roboflow/cli/handlers/project.py @@ -19,6 +19,7 @@ class ProjectType(str, Enum): instance_segmentation = "instance-segmentation" semantic_segmentation = "semantic-segmentation" keypoint_detection = "keypoint-detection" + action_recognition = "action-recognition" project_app = typer.Typer(cls=SortedGroup, help="Manage projects", no_args_is_help=True) diff --git a/roboflow/config.py b/roboflow/config.py index 800ef6ac..60147af6 100644 --- a/roboflow/config.py +++ b/roboflow/config.py @@ -74,6 +74,7 @@ def get_conditional_configuration_variable(key, default): TYPE_SEMANTIC_SEGMENTATION = "semantic-segmentation" TYPE_KEYPOINT_DETECTION = "keypoint-detection" TYPE_TEXT_IMAGE_PAIRS = "text-image-pairs" +TYPE_ACTION_RECOGNITION = "action-recognition" TASK_DET = "det" TASK_SEG = "seg" diff --git a/roboflow/util/versions.py b/roboflow/util/versions.py index f07bf006..b09289f4 100644 --- a/roboflow/util/versions.py +++ b/roboflow/util/versions.py @@ -126,6 +126,9 @@ def get_model_format(model_type: str) -> str: "rfdetr": "coco", "rf-detr": "coco", "deep": "png-mask-semantic", + # Substring match: the image VLM sibling must win before the video model's prefix. + "cosmos3-edge-vlm": "jsonl", + "cosmos3-edge": "video-coco", } for prefix, format in model_formats.items(): diff --git a/tests/util/test_versions.py b/tests/util/test_versions.py index 5a7803f2..6a9d6bef 100644 --- a/tests/util/test_versions.py +++ b/tests/util/test_versions.py @@ -36,6 +36,8 @@ def test_get_model_format_with_various_ids(self): ("resnet14", "folder"), ("resenet38", "yolov5pytorch"), ("invlid-type", "yolov5pytorch"), + ("cosmos3-edge", "video-coco"), + ("cosmos3-edge-vlm", "jsonl"), ] for model_type, expected_format in cases: