Command line interface (CLI)
Overview
A simple command line interface for working with CVAT. At the moment it implements a basic feature set but may serve as the starting point for a more comprehensive CVAT administration tool in the future.
The following subcommands are supported:
-
Projects:
create
- create a new projectdelete
- delete projectsls
- list all projects
-
Tasks:
create
- create a new taskcreate-from-backup
- create a task from a backup filedelete
- delete tasksls
- list all tasksframes
- download frames from a taskexport-dataset
- export a task as a datasetimport-dataset
- import annotations into a task from a datasetbackup
- back up a taskauto-annotate
- automatically annotate a task using a local function
-
Functions (Enterprise/Cloud only):
create-native
- create a function that can be powered by an agentdelete
- delete a functionrun-agent
- process requests for a native function
Installation
To install an official release of CVAT CLI, use this command:
We support Python versions 3.9 and higher.
Usage
The general form of a CLI command is:
where:
<common options>
are options shared between all subcommands;<resource>
is a CVAT resource, such astask
;<action>
is the action to do with the resource, such ascreate
;<options>
is any options specific to a particular resource and action.
You can list available subcommands and options using the --help
option:
$ cvat-cli --help # get help on available common options and resources
$ cvat-cli <resource> --help # get help on actions for the given resource
$ cvat-cli <resource> <action> --help # get help on action-specific options
The CLI implements alias subcommands for some task actions, so that,
for example, cvat-cli ls
works the same way as cvat-cli task ls
. These
aliases are provided for backwards compatibility and are deprecated.
Use the task <action>
form instead.
Examples - tasks
Create
Description of the options you can find in Creating an annotation task section.
For create a task you need file contain labels in the json
format, you can create a JSON label specification
by using the label constructor.
Example JSON labels file
- Create a task named “new task” on the default server “localhost:8080”, labels from the file “labels.json”
and local images “file1.jpg” and “file2.jpg”, the task will be created as current user:
- Create a task named “task 1” on the server “example.com” labels from the file “labels.json”
and local image “image1.jpg”, the task will be created as user “user-1”:
- Create a task named “task 1” on the default server, with labels from “labels.json”
and local image “file1.jpg”, as the current user, in organization “myorg”:
- Create a task named “task 1”, labels from the project with id 1 and with a remote video file,
the task will be created as user “user-1”:
- Create a task named “task 1 sort random”, with labels “cat” and “dog”, with chunk size 8,
with sorting-method random, frame step 10, copy the data on the CVAT server,
with use zip chunks and the video file will be taken from the shared resource:
- Create a task named “task from dataset_1”, labels from the file “labels.json”, with link to bug tracker,
image quality will be reduced to 75, annotation in the format “CVAT 1.1” will be taken
from the file “annotation.xml”, the data will be loaded from “dataset_1/images/”,
the task will be created as user “user-2”, and the password will need to be entered additionally:
- Create a task named “segmented task 1”, labels from the file “labels.json”, with overlay size 5,
segment size 100, with frames 5 through 705, using cache and with a remote video file:
- Create a task named “task with filtered cloud storage data”, with filename_pattern
test_images/*.jpeg
and using the data from the cloud storage resource described in the manifest.jsonl: - Create a task named “task with filtered cloud storage data” using all data from the cloud storage resource
described in the manifest.jsonl by specifying filename_pattern
*
:
Delete
- Delete tasks with IDs “100”, “101”, “102” , the command will be executed from “user-1” having delete permissions:
List
- List all tasks:
- List all tasks in organization “myorg”:
- Save list of all tasks into file “list_of_tasks.json”:
Frames
- Save frame 12, 15, 22 from task with id 119, into “images” folder with compressed quality:
Export as a dataset
- Export annotation task with id 103, in the format
CVAT for images 1.1
and save to the file “output.zip”: - Export annotation task with id 104, in the format
COCO 1.0
and save to the file “output.zip”:
Import annotations from a dataset
- Import annotation into task with id 105, in the format
CVAT 1.1
from the file “annotation.xml”:
Back up a task
- Back up task with id 136 to file “task_136.zip”:
Create from backup
- Create a task from backup file “task_backup.zip”:
Auto-annotate
This command provides a command-line interface to the auto-annotation API.
It can auto-annotate using AA functions implemented in one of the following ways:
-
As a Python module directly implementing the AA function protocol. Such a module must define the required attributes at the module level.
For example:
-
As a Python module implementing a factory function named
create
. This function must return an object implementing the AA function protocol. Any parameters specified on the command line using the-p
option will be passed tocreate
.For example:
-
Annotate the task with id 137 with the predefined torchvision detection function, which is parameterized:
-
Annotate the task with id 138 with an AA function defined in
my_func.py
:
Note that this command does not modify the Python module search path. If your function module needs to import other local modules, you must add your module directory to the search path if it isn’t there already.
- Annotate the task with id 139 with a function defined in the
my_func
module located in themy-project
directory, letting it import other modules from that directory.
Examples - projects
Create
While creating a project, you may optionally define its labels.
The project create
command accepts labels in the same format as the task create
command;
see that command’s examples for more information.
- Create a project named “new project” on the default server “localhost:8080”,
with labels from the file “labels.json”:
- Create a project from a dataset in the COCO format:
Delete
- Delete projects with IDs “100”, “101”, “102”:
List
- List all projects:
- Save list of all projects into file “list_of_projects.json”:
Examples - functions
Note: The functionality described in this section can only be used with the CVAT Enterprise or CVAT Cloud.
Create
-
Create a function that uses a detection model from torchvision and run an agent for it:
cvat-cli function create-native "Faster R-CNN" \ --function-module cvat_sdk.auto_annotation.functions.torchvision_detection \ -p model_name=str:fasterrcnn_resnet50_fpn_v2 cvat-cli function run-agent <ID printed by previous command> \ --function-module cvat_sdk.auto_annotation.functions.torchvision_detection \ -p model_name=str:fasterrcnn_resnet50_fpn_v2
These commands accept functions that implement the
auto-annotation function interface
from the SDK, same as the task auto-annotate
command.
See that command’s examples for information on how to implement these functions
and specify them in the command line.
Delete
- Delete functions with IDs 100 and 101:
cvat-cli function delete 100 101