VolumeProject¶
- class VolumeProject[source]¶
Bases:
supervisely.project.video_project.VideoProjectMethods
Adds blob file to the project.
Create a video project snapshot in Arrow/Parquet+tar.zst format and return it as BytesIO.
Makes a copy of the
VideoProject.Creates a subdirectory with given name and all intermediate subdirectories for items and annotations in project directory, and also adds created dataset to the collection of all datasets in the project.
Download volume project from Supervisely to the given directory.
download_asyncDownload a Volume Project snapshot into a Parquet-backed binary blob (
.tar.zstfile or in-memory BytesIO).get_classes_statsget_item_paths- rtype
Not available for VolumeProject class.
Not available for VolumeProject class.
Not available for VolumeProject class.
Not available for VolumeProject class.
Get URL to video datasets list in Supervisely.
Read project from given ditectory.
Not available for VideoProject class.
Not available for VideoProject class.
Not available for VideoProject class.
Not available for VideoProject class.
Not available for VideoProject class.
Restore a video project from a snapshot and return ProjectInfo.
Save given KeyIdMap object to project dir in json format.
Saves given
metato project directory in json format.Convert Supervisely project to COCO format.
Not available for VideoProject class.
Convert Supervisely project to Pascal VOC format.
Not available for VideoProject class.
Convert Supervisely project to YOLO format.
Uploads volume project to Supervisely from the given directory.
Restore a volume project from a Parquet blob produced by
download_bin().validateAttributes
Directory for project blobs.
blob_dir_nameList of blob files.
Project datasets.
Path to the project directory.
key_id_mapProject meta.
Project name.
Project parent directory.
Total number of items in project.
Project type.
- add_blob_file(file_name)¶
Adds blob file to the project.
- Parameters
- file_name :
str File name.
- file_name :
- Returns
None
- Return type
NoneType
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) project.add_blob_file("blob_file.tar")
-
static build_snapshot(api, project_id, dataset_ids=
None, batch_size=50, log_progress=True, progress_cb=None, schema_version='v2.0.0')¶ Create a video project snapshot in Arrow/Parquet+tar.zst format and return it as BytesIO.
- Return type
BytesIO
-
copy_data(dst_directory, dst_name=
None, _validate_item=True, _use_hardlink=False)¶ Makes a copy of the
VideoProject.- Parameters
- Returns
VideoProject object.
- Return type
VideoProject- Usage example
import supervisely as sly project = sly.VideoProject("/home/admin/work/supervisely/projects/videos_example", sly.OpenMode.READ) print(project.total_items) # Output: 6 new_project = project.copy_data("/home/admin/work/supervisely/projects/", "videos_example_copy") print(new_project.total_items) # Output: 6
-
create_dataset(ds_name, ds_path=
None)¶ Creates a subdirectory with given name and all intermediate subdirectories for items and annotations in project directory, and also adds created dataset to the collection of all datasets in the project.
- Parameters
- ds_name :
str Dataset name.
- ds_name :
- Returns
Dataset object
- Return type
Dataset- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) for dataset in project.datasets: print(dataset.name) # Output: ds1 # ds2 project.create_dataset("ds3") for dataset in project.datasets: print(dataset.name) # Output: ds1 # ds2 # ds3
-
static download(api, project_id, dest_dir, dataset_ids=
None, download_volumes=True, log_progress=False, progress_cb=None, **kwargs)[source]¶ Download volume project from Supervisely to the given directory.
- Parameters
- api :
Api Supervisely API address and token.
- project_id :
int Supervisely downloadable project ID.
- dest_dir :
str Destination directory.
- dataset_ids :
list[int], optional Dataset IDs.
- download_volumes :
bool, optional Download volume data files or not.
- log_progress : bool
Show uploading progress bar.
- progress_cb : tqdm or callable, optional
Function for tracking the download progress.
- api :
- Returns
None
- Return type
NoneType
- Usage example
import supervisely as sly # Local destination Volume Project folder save_directory = "/home/admin/work/supervisely/source/vlm_project" # Obtain server address and your api_token from environment variables # Edit those values if you run this notebook on your own PC address = os.environ['SERVER_ADDRESS'] token = os.environ['API_TOKEN'] # Initialize API object api = sly.Api(address, token) project_id = 8888 # Download Project sly.VolumeProject.download(api, project_id, save_directory) project_fs = sly.VolumeProject(save_directory, sly.OpenMode.READ)
-
static download_bin(api, project_id, dest_dir=
None, dataset_ids=None, download_volumes=True, log_progress=False, progress_cb=None, return_bytesio=False, schema_version='v2.0.0', *args, **kwargs)[source]¶ Download a Volume Project snapshot into a Parquet-backed binary blob (
.tar.zstfile or in-memory BytesIO).The snapshot stores:
Project info and meta
Dataset tree (dataset infos)
Volume infos (optionally)
Volume annotations (for the included volumes)
The resulting binary snapshot can be restored later with
upload_bin().- Parameters
- api :
Api Supervisely API client.
- project_id : int
Source Volume Project ID on the server.
- dest_dir : str, optional
Local folder where the snapshot file will be written. Required when
return_bytesio=False.- dataset_ids : List[int], optional
Optional list of dataset IDs to include. If provided, only these datasets will be included (recursively, preserving tree structure where applicable).
- download_volumes : bool, optional
If False, only project/meta/dataset tree is stored (volume infos and annotations are skipped). This is useful for “structure-only” snapshots.
- log_progress : bool
If True, show a progress bar (unless a custom
progress_cbis provided).- progress_cb : tqdm or callable, optional
Optional callback (or tqdm-like object) called with incremental progress.
- return_bytesio : bool, optional
If True, return an in-memory
io.BytesIOwith snapshot bytes. If False, write snapshot todest_dirand return the file path.- schema_version : str, optional
Snapshot schema version. Controls the internal Parquet layout/fields. Supported values are the keys from
get_volume_snapshot_schema()(currently:"v2.0.0").
- api :
- Returns
Snapshot file path (when
return_bytesio=False) or a BytesIO (whenreturn_bytesio=True).- Return type
str or io.BytesIO
- Raises
ValueError – If
dest_diris not provided andreturn_bytesiois False.RuntimeError – If required optional dependencies (e.g. pyarrow) are missing.
- Usage example
import supervisely as sly import os api = sly.Api(os.environ["SERVER_ADDRESS"], os.environ["API_TOKEN"]) # 1) Save snapshot to disk out_path = sly.VolumeProject.download_bin( api, project_id=123, dest_dir="/tmp/vol_project_snapshot", download_volumes=True, log_progress=True, ) # 2) Create an in-memory snapshot (BytesIO) and restore it blob = sly.VolumeProject.download_bin( api, project_id=123, return_bytesio=True, download_volumes=False, # structure-only ) restored = sly.VolumeProject.upload_bin(api, blob, workspace_id=45, project_name="Restored")
- static get_train_val_splits_by_collections(project_dir, train_collections, val_collections, project_id, api)[source]¶
Not available for VolumeProject class. :raises:
NotImplementedErrorin all cases.- Return type
- static get_train_val_splits_by_count(project_dir, train_count, val_count)[source]¶
Not available for VolumeProject class. :raises:
NotImplementedErrorin all cases.- Return type
- static get_train_val_splits_by_dataset(project_dir, train_datasets, val_datasets)[source]¶
Not available for VolumeProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
static get_train_val_splits_by_tag(project_dir, train_tag_name, val_tag_name, untagged=
'ignore')[source]¶ Not available for VolumeProject class. :raises:
NotImplementedErrorin all cases.- Return type
- static get_url(id)¶
Get URL to video datasets list in Supervisely.
- classmethod read_single(dir)¶
Read project from given ditectory. Generate exception error if given dir contains more than one subdirectory :param dir: str :return: VideoProject class object
-
static remove_classes(project_dir, classes_to_remove=
None, inplace=False)¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
static remove_classes_except(project_dir, classes_to_keep=
None, inplace=False)¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
static remove_items_without_both_objects_and_tags(project_dir, inplace=
False)¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
static remove_items_without_objects(project_dir, inplace=
False)¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
static remove_items_without_tags(project_dir, inplace=
False)¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
static restore_snapshot(api, snapshot_bytes, workspace_id, project_name=
None, with_custom_data=True, log_progress=True, progress_cb=None, skip_missed=False)¶ Restore a video project from a snapshot and return ProjectInfo.
- Return type
ProjectInfo
- set_key_id_map(new_map)¶
Save given KeyIdMap object to project dir in json format. :type new_map:
KeyIdMap:param new_map: KeyIdMap class object
- set_meta(new_meta)¶
Saves given
metato project directory in json format.- Parameters
- new_meta :
ProjectMeta ProjectMeta object.
- new_meta :
- Returns
None
- Return type
NoneType
- Usage example
import supervisely as sly proj_lemons = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) proj_kiwi = sly.Project("/home/admin/work/supervisely/projects/kiwi_annotated", sly.OpenMode.READ) proj_lemons.set_meta(proj_kiwi.meta) print(project.proj_lemons) # Output: # +-------+--------+----------------+--------+ # | Name | Shape | Color | Hotkey | # +-------+--------+----------------+--------+ # | kiwi | Bitmap | [255, 0, 0] | | # +-------+--------+----------------+--------+
-
to_coco(dest_dir=
None, copy_images=False, with_captions=False, log_progress=True, progress_cb=None)¶ Convert Supervisely project to COCO format.
- Parameters
- dest_dir :
str, optional Destination directory.
- copy_images :
bool Copy images to the destination directory.
- with_captions :
bool Return captions for images.
- log_progress :
bool Show uploading progress bar.
- progress_cb : callable, optional
Function for tracking conversion progress (for all items in the project).
- dest_dir :
- Returns
None
- Return type
NoneType
- Usage example
import supervisely as sly # Local folder with Project project_directory = "/home/admin/work/supervisely/source/project" # Convert Project to COCO format sly.Project(project_directory).to_coco(log_progress=True) # or from supervisely.convert import to_coco to_coco(project_directory, dest_dir="./coco_project")
-
static to_detection_task(src_project_dir, dst_project_dir=
None, inplace=False, progress_cb=None)¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
to_pascal_voc(dest_dir=
None, train_val_split_coef=0.8, log_progress=True, progress_cb=None)¶ Convert Supervisely project to Pascal VOC format.
- Parameters
- dest_dir :
str, optional Destination directory.
- train_val_split_coef :
float, optional Coefficient for splitting images into train and validation sets.
- log_progress :
bool Show uploading progress bar.
- progress_cb : callable, optional
Function for tracking conversion progress (for all items in the project).
- dest_dir :
- Returns
None
- Return type
NoneType
- Usage example
import supervisely as sly # Local folder with Project project_directory = "/home/admin/work/supervisely/source/project" # Convert Project to YOLO format sly.Project(project_directory).to_pascal_voc(log_progress=True) # or from supervisely.convert import to_pascal_voc to_pascal_voc(project_directory, dest_dir="./pascal_voc_project")
-
static to_segmentation_task(src_project_dir, dst_project_dir=
None, inplace=False, target_classes=None, progress_cb=None, segmentation_type='semantic')¶ Not available for VideoProject class. :raises:
NotImplementedErrorin all cases.- Return type
-
to_yolo(dest_dir=
None, task_type='detect', log_progress=True, progress_cb=None, val_datasets=None)¶ Convert Supervisely project to YOLO format.
- Parameters
- dest_dir :
str, optional Destination directory.
- task_type :
strorTaskType, optional Task type for YOLO format. Possible values: ‘detection’, ‘segmentation’, ‘pose’.
- log_progress :
bool Show uploading progress bar.
- progress_cb : callable, optional
Function for tracking conversion progress (for all items in the project).
- val_datasets :
list[str], optional List of dataset names for validation. Full dataset names are required (e.g., ‘ds0/nested_ds1/ds3’). If specified, datasets from the list will be marked as val, others as train. If not specified, the function will determine the validation datasets automatically.
- dest_dir :
- Returns
None
- Return type
NoneType
- Usage example
import supervisely as sly # Local folder with Project project_directory = "/home/admin/work/supervisely/source/project" # Convert Project to YOLO format sly.Project(project_directory).to_yolo(log_progress=True) # or from supervisely.convert import to_yolo to_yolo(project_directory, dest_dir="./yolo_project")
-
static upload(directory, api, workspace_id, project_name=
None, log_progress=True, progress_cb=None)[source]¶ Uploads volume project to Supervisely from the given directory.
- Parameters
- directory :
str Path to project directory.
- api :
Api Supervisely API address and token.
- workspace_id :
int Workspace ID, where project will be uploaded.
- project_name :
str, optional Name of the project in Supervisely. Can be changed if project with the same name is already exists.
- log_progress :
bool Show uploading progress bar.
- progress_cb : tqdm or callable, optional
Function for tracking the download progress.
- directory :
- Returns
Project ID and name. It is recommended to check that returned project name coincides with provided project name.
- Return type
- Usage example
import supervisely as sly # Local folder with Volume Project project_directory = "/home/admin/work/supervisely/source/vlm_project" # Obtain server address and your api_token from environment variables # Edit those values if you run this notebook on your own PC address = os.environ['SERVER_ADDRESS'] token = os.environ['API_TOKEN'] # Initialize API object api = sly.Api(address, token) # Upload Volume Project project_id, project_name = sly.VolumeProject.upload( project_directory, api, workspace_id=45, project_name="My Volume Project" )
-
static upload_bin(api, file, workspace_id, project_name=
None, log_progress=True, progress_cb=None, skip_missed_entities=False, *args, **kwargs)[source]¶ Restore a volume project from a Parquet blob produced by
download_bin().- Parameters
- api :
Api Supervisely API client.
- file : Union[str, io.BytesIO]
Snapshot file path (
.tar.zst) or an in-memoryio.BytesIOstream.- workspace_id : int
Target workspace ID where the project will be created.
- project_name : str, optional
Optional new project name. If not provided, the name from the snapshot will be used. If the name already exists in the workspace, a free name will be chosen.
- log_progress : bool
If True, show a progress bar (unless a custom
progress_cbis provided).- progress_cb : tqdm or callable, optional
Optional callback (or tqdm-like object) called with incremental progress.
- skip_missed_entities : bool
If True, skip volumes that cannot be restored because their source hash is missing in the snapshot payload. If False, such cases raise an error.
- api :
- Returns
Info of the newly created project.
- Return type
ProjectInfo- Raises
RuntimeError – If the snapshot contains volumes without hashes and
skip_missed_entitiesis False.
- property blob_dir¶
Directory for project blobs. Blobs are .tar files with images. Used for fast data transfer.
- Returns
Path to project blob directory
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.blob_dir) # Output: '/home/admin/work/supervisely/projects/lemons_annotated/blob'
- property blob_files¶
List of blob files.
- Returns
List of blob files
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.blob_files) # Output: []
- property datasets¶
Project datasets.
- Returns
Datasets
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) for dataset in project.datasets: print(dataset.name) # Output: ds1 # ds2
- property directory¶
Path to the project directory.
- Returns
Path to the project directory
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.directory) # Output: '/home/admin/work/supervisely/projects/lemons_annotated'
- property meta¶
Project meta.
- Returns
ProjectMeta object
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.meta) # Output: # +-------+--------+----------------+--------+ # | Name | Shape | Color | Hotkey | # +-------+--------+----------------+--------+ # | kiwi | Bitmap | [255, 0, 0] | | # | lemon | Bitmap | [81, 198, 170] | | # +-------+--------+----------------+--------+ # Tags # +------+------------+-----------------+--------+---------------+--------------------+ # | Name | Value type | Possible values | Hotkey | Applicable to | Applicable classes | # +------+------------+-----------------+--------+---------------+--------------------+
- property name¶
Project name.
- Returns
Project name.
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.name) # Output: 'lemons_annotated'
- property parent_dir¶
Project parent directory.
- Returns
Path to project parent directory
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.parent_dir) # Output: '/home/admin/work/supervisely/projects'
- property total_items¶
Total number of items in project.
- Returns
Total number of items in project
- Return type
- Usage example
import supervisely as sly project = sly.Project("/home/admin/work/supervisely/projects/lemons_annotated", sly.OpenMode.READ) print(project.total_items) # Output: 12