Picsellia SDK Python is a library that allows users to connect to Picsellia backend.
All notable changes to this project will be documented in this file.
DatasetVersion.build_coco_file_locally()now adds area of bounding boxes on generated files for Object Detection.
Some deprecation on privacy object creation, it is not possible to create a public dataset, project or model from the sdk anymore.
Attach dataset version to Feedback Loop and Continuous Training settings of your deployments.
Deployment.attach_dataset_to_feedback_loop()can now be called to attach a dataset to Feedback Loop settings of your deployment. Attached datasets can be filled with reviewed prediction from your deployment.
Deployment.detach_dataset_from_feedback_loop()allows detaching dataset from Feedback Loop.
Deployment.list_feedback_loop_datasets()will list attached datasets of your Feedback Loop.
Deployment.attach_dataset_to_continuous_training()can now be called to attach a dataset to Continuous Training settings of your deployment. Attached datasets will be added to your experiment created when Continuous Training is triggered.
Deployment.detach_dataset_from_continuous_training()allows detaching dataset from Continuous Training.
Datalake.upload()can now be called with parameter
fill_metadata. On upload, set this parameter to True to read exif metadata flags and push metadata to Picsellia. By default,
Client.get_datalake()can now be called with parameter
nameto retrieve the Datalake you want. If nothing is given, this method will retrieve your default datalake.
Deployment.predict_bytes()can now be called if you want to send image as bytes on Serving service
Model.create_version()can now be called with
Datalake.upload_data()now accept parameter
metadatawhich is a dict (or a list of dict if there are multiple filepaths) matching common metadata allowed by Picsellia.
DatasetVersion.fork()can now be called with parameters
with_labelsas web application
DatasetVersion.export_annotation_file()can now be called with
AnnotationFileType.YOLOto retrieve a zip with yolo files
descriptionto update description of a ModelVersion
- When adding evaluation, allow empty list to be sent as a list of shape
Some changes on
monitor() following an update of our monitoring stack.
typeof a deployment.
Deployment.monitor_bytes()can be called if you have an image as bytes to send to monitoring.
Deployment.monitor()do not use parameters
Deployment.monitor()will be replaced by parameter
shadow_predictionin the future
- You can add
content_typeparameter to monitor() if you don't want sdk to infer it with mimetypes. It will be checked with common content types of the mimetypes library
content_typeof monitor_bytes() is mandatory and should be a SupportedContentType enum or string. Current common type supported are "image/png" and "image/jpeg"
Client.create_deployment()to create a deployment. Allow user to create it without using Picsellia Serving
DatasetVersion.retrieve_stats()to retrieve stats of your dataset version
DatasetVersion.train_test_val_split()to split a dataset version into 3 different multi assets
DatasetVersion.split_into_multi_assets()to split a dataset version into N multi assets and return their label repartition
MultiAsset.split()to split from a given ratio a multi asset
- Add User-Agent with picsellia version in headers of requests
- Framework and type of Model are now configurable into ModelVersion
- Get by id now use parent API to ensures object are in the same organization as the one connected
- Methods manipulating tags on client are now calling other routes
- Some minor fixes on documentation
- Segmentation format used in
monitor()was not supported by monitoring service
list_assetshave a new parameter
qthat can be used the same way the query language is used in the web platform
- Deployment has new methods:
disable_training_data_reference, that can be used for monitoring and unsupervised metrics.
as_multidataof MultiAsset can now be called with parameter
- Artifact, Data, Asset, LoggingFile, ScanFile, ModelFile are now inheriting from Downloadable, and have
urlproperty that can be used to download files. These urls are presigned and expired at some point in the future.
compute_evaluations_metricsof Experiment can be used to add, list and compute evaluation of an Experiment
- Deployment Feedback Loop dataset is now only used as a recipient for new assets submitted after review in the predictions dashboard
- bbox of COCO annotation cannot be a tuple anymore
- Jobs are now handled differently in Picsellia platform
get_dataset_version_by_idcan be done in Client
get_model_version_by_idcan be done in Client
get_experiment_by_idcan be done in Client
- Import yolo files with
upload_datacan be called with an ErrorManager to retrieve errors after upload.
- Pascal VOC files parsing allows some fields to not be set
- 502 errors were not handled correctly
- Uploading images that were transposed now correctly send width and height on the platform
- Downloading files has a new retry policy
- When importing YOLO, COCO or Pascal VOC files, you need to set type of dataset before.
- Some refactor on import annotations, it should be faster now !
- Return line after logging chapter
- Allow parameter
build_coco_file_locally()to enforce categories of built coco file.
- Do a paginated call in dataset version
train_test_splitwhen loading assets
set_typeof dataset version was failing when logging result if a string was given
- Some methods were using types not compatible with python older than 3.8
list_assets()will call XGET method when filtering on filenames or object_names, to not have the limit size query error.
upload_data()now allow effectively a Datasource
- Import annotations was limited to 10 000 annotations because
find_assets()was used. It is now using
list_assets()which is paginated.
update()cannot change active anymore.
build_coco_file_locally()will create a COCOFile object that can be written in a json file
Experiment.export_in_existing_model()method will create a version of given model when exporting experiment.
list_data()can be used to filter on object_names.
ModelVersion.store()was not using
replaceparameter correctly, it will now delete existing model file if it exists
max_workersparameters are now
Noneby default, to use cpu count + 4 as default value
list_data()will call XGET method when filtering on filenames or object_names, to not have the limit size query error.
AnnotationStatus.REVIEWEDstatus was never really used and is now removed from Picsellia.
This is a patch to fix download dataset on huge datasets
as_multidatanow uses xget to retrieve all datas with given list of ids
as_multidatais not called in
Happy new year from the Picsellia Team !
This minor version add some useful methods and fix specified COCOFile format.
- List public models with
list_public_models()from the Picsellia Hub in Client.
- Find public model with
find_public_model()from the Picsellia Hub in Client.
- Convert MultiAsset into MultiData with
- Allow asset tags to be added when adding data to a dataset with
__repr__has been added to MultiObjects
labelsin ModelVersion objects
get_datasetin ModelContext to get DatasetVersion from its attached name
- breaking: COCOFile was wrongly specified: in annotations, only one segmentation was allowed for each shape,
but COCOFile allows multiple polygons. Now you need to give a list of list of coordinates instead of only one list of coordinates.
import_annotations_coco_file()should now work fine with COCO files with segmentation.
- Add AuthenticationError again in exceptions, which was used by picsellia-tf2
- may be breaking: Default value of force_create_label is now True in
retrieve_datasetsin ModelContext now return a dict with attached name as key and dataset version as value
download()a DatasetVersion is not calling assets extended endpoints which was taking a lot of time on huge datasets.
- Imports order with pre-commit cln tool
- Doc generation with all properties docstring
- Fixed .predict() behavior by removing mandatory parameters tags and source
- Add docker env variables support on ModelVersion
- Add an experiment.log_parameters() to use experiment.log() with parameters more easily
- Add possibility to attach base parameters when experiment.attach_model()
- Add feedbackloop method check status
__repr__methods to DAO objects, for better UX representation
- Add possibility to set tags and source when sending a prediction to serving
- Add get_or_create_datasource() in client
- Rename experiment.publish() into experiment.export_as_model()
- Some changes on feedbackloop methods
- Method list_data and list_assets can now use parameter
intersect_tagsto find objects that have all tags given
- Allow Path object in every method that accept path as string
- Some exceptions were renamed, some useless were removed
- Use of typing.List instead of list to support python < 3.9
- Add convert_tags_to_classification() in dataset version
- Add get_data_tags() on asset
- Github workflow
- Add ONXX in Framework enums
- Possibility to use strings instead of enums in methods
- Make duration optional in annotation creation/update/overwrite
- Make duration int compatible
- log() method now create, update or append a log, in only one call to backend
- Remove create_log method
- Optional type hint is now used everywhere
- Prevent user from updating log image via log.update(), only experiment.log can be used for this case
- In log() method, image type data stored bad values
- Logging File for an Experiment
- A lot of typos, variable naming, minor formatting
- String .format() into f-strings
- Old package dependencies
- train_test_split() return MultiAsset instead of List[Asset]
- Regeneration of JWT when expired
- When downloading file, open file only if response is ok
- CHANGELOG file.
- Fixed test_train_split with breaking changes of query language in list assets.
- Documentation of core functions, minor typos fixes.
- Workflow for testing on staging when push on development and main.
- Annotation are now objects storing Rectangle, Polygon, Classification, Point and Line for an Asset
- Artifact are now Experiment files stored
- DatasetVersion are now used as versions of Dataset
- Datalake objects
- Datasource objects
- Job objects, to wait for tasks to end
- ModelVersion are now used as versions of Model
- ScanFiles are now Scan files stored
- Pictures renamed to Asset that are Data objects in a DatasetVersion
- Multithreading usage
- Annotations with objects