FiftyOne Release Notes ¶¶
FiftyOne Teams 2.3.0 ¶¶
Released December 20, 2024
Includes all updates from FiftyOne 1.2.0, plus:
-
Added an example Databricks connector showing how to connect FiftyOne Teams to your lakehouse via Data Lens
-
Added a Data Lens connector that demonstrates how to allow users to dynamically configure the field(s) that are imported
-
Data Lens now supports previewing 3D data imports
-
Guest users can now open Data Lens
-
When scanning for issues with the Data Quality Panel, any fields created are now added to a
DATA QUALITY
sidebar group -
Prevented unnecessary scrollbars from appearing when using the Data Quality Panel
-
AWS session tokens are now supported when configuring cloud credentials
-
Fixed a bug that could cause
StopIteration
errors when performing long-running operations like computing embeddings when using API connections
FiftyOne 1.2.0 ¶¶
Released December 20, 2024
App
-
Added support for instance segmentations whose masks are stored on-disk #5120, #5256
-
Optimized overlay rendering for dense label fields like segmentations and heatmaps #5156, #5169, #5247
-
Improved stability of frame rendering for videos #5199, #5293
-
Sidebar groups that contain only list fields are no longer collapsed by default #5280
-
The Model Evaluation panel now filters both ground truth and prediction fields when you perform interactive filters via the TP/FP/FN icons, per-class histograms, and confusion matrices #5268
-
When comparing two models in the Model Evaluation panel, interactive filters now apply to both evaluation runs #5268
-
The Model Evaluation panel now supports evaluations that were performed on subsets (views) of the full dataset #5267
-
The Model Evaluation panel now shows mask targets for segmentation evaluations when they are available #5281
-
The Model Evaluation panel now hides metrics that aren’t applicable to a given evaluation type #5281
-
Fixed an issue where backtick can’t be typed when editing markdown notes in the Model Evaluation panel #5233
-
Fixed a race condition that could cause errors when performing text similarity searches #5273
-
Fixed a caching bug that prevented label overlay font sizes from dynamically resizing as expected in some cases #5287
-
Fixed a bug that excluded selected samples from the counter above the Samples panel #5286
SDK
- Optimized
dataset.first()
calls #5305
Brain
- Upgraded the MongoDB vector search integration
to use the
vectorSearch
type #218
Zoo
- Fixed a bug with loading the rtdetr-l-coco-torch and rtdetr-x-coco-torch zoo models #5220
FiftyOne Teams 2.2.0 ¶¶
Released December 6, 2024
Includes all updates from FiftyOne 1.1.0, plus:
-
All Teams deployments now have builtin compute capacity for executing delegated operations in the background while you work in the App
-
Introduced Data Lens, which allows you to explore and import samples from external data sources into FiftyOne
-
Added a Data Quality Panel that automatically scans your data for quality issues and helps you take action to resolve them
-
Added a Query Performance Panel that helps you create the necessary indexes to optimize queries on large datasets
-
Added support for creating embeddings visualizations natively from the Embeddings panel
-
Added support for evaluating models natively from the Model Evaluation panel
-
Added support for configuring an SMTP server for sending user invitiations via email when running in Internal Mode
FiftyOne 1.1.0 ¶¶
Released December 6, 2024
What’s New
-
Added a Model Evaluation panel for visually and interactively evaluating models in the FiftyOne App
-
Introduced Query Performance in the App, which automatically nudges you to create the necessary indexes to greatly optimize queries on large datasets
-
Added a leaky splits method for automatically detecting near-duplicate samples in different splits of your datasets
-
Added a near duplicates method that scans your datasets and detects potential duplicate samples
App
-
Added zoom-to-crop and set-look-at for selected labels in the 3D visualizer #4931
-
Gracefully handle deleted + recreated datasets of the same name #5183
-
Added a
referrerPolicy
so the App can run behind reverse proxies #4944 -
Fixed a bug that prevented video playback from working for videos with unknown frame rate #5155
SDK
-
Optimized object detection evaluation with r-trees #4758
-
Improved support for creating summary fields and indexes #5091
-
Added support for creating compound indexes when using the builtin
create_index
operator that optimize sidebar queries for group datasets #5174 -
The builtin
clear_sample_field
andclear_frame_field
operators now support clearing fields of views, in addition to full datasets #5122 -
Fixed a bug that prevented users with
pydantic
installed from loading the quickstart-3d dataset from the zoo #4994 -
Added optional
email
parameter to the CVAT integration #5218
Brain
-
Added support for passing existing similarity indexes to
compute_visualization()
,compute_uniqueness()
, andcompute_representativeness()
#201, #204 -
Upgraded the Pinecone integration to support
pinecone-client>=3.2
#202
Plugins
-
Added an Execution Store that provides a key-value interface for persisting data beyond the lifetime of a panel #4827, #5144
-
Added
ctx.spaces
andset_spaces()
to the operator execution context #4902 -
Added
open_sample()
andclose_sample()
methods for programmatically controlling what sample(s) are displayed in the App’s sample modal #5168 -
Added a
skip_prompt
option toctx.prompt
, allowing users to bypass prompts during operation execution #4992 -
Introduced a new
StatusButtonView
type for rendering buttons with status indicators #5105 -
Added support for giving
ImageView
components click targets #4996 -
Added an allow_legacy_orchestrators config flag to enable running delegated operations locally #5176
-
Fixed a bug when running delegated operations programmatically #5180
-
Fixed a bug when running delegated operations with output schemas on MongoDB <v5 #5181
FiftyOne Teams 2.1.3 ¶¶
Released November 8, 2024
Includes all updates from FiftyOne 1.0.2.
FiftyOne 1.0.2 ¶¶
Released November 8, 2024
Zoo
-
Added generic model architecture and backbone tags to all relevant models in the zoo for easier navigation #4899
Core
-
Fixed input shape in the depth estimation transformer #5035
-
Added graceful handling of empty datasets when computing embeddings #5043
App
-
Added a new
TimelineView
for building custom animations #4965 -
Fixed overlay z-index and overflow for panels #4956
-
Fixed bug where timeline name wasn’t being forwarded in seek utils #4975
-
Performance improvements in the grid and modal #5009, #5015, #5018, #5019, #5022
-
Fixed batch selection with ctrl + click in the grid #5046
FiftyOne Teams 2.1.2 ¶¶
Released October 31, 2024
- Fixed an issue that prevented
delegation_target
from being properly set when running delegated operations with orchestrator registration enabled
FiftyOne Teams 2.1.1 ¶¶
Released October 14, 2024
Includes all updates from FiftyOne 1.0.1, plus:
-
Fixed an issue with Auth0 connections for deployments behind proxies
-
Bumped dependency requirement
voxel51-eta>=0.13
FiftyOne 1.0.1 ¶¶
Released October 14, 2024
App
-
Video playback now supports the timeline API #4878
-
Fixed a bug that prevented
Classifications
labels from rendering #4891 -
Fixed a bug that prevented the
fiftyone quickstart
andfiftyone app launch
commands from launching the App #4888
Core
-
COCO exports now use 1-based categories #4884
-
Fixed a bug when passing the
classes
argument to load specific classes in COCO format #4884
FiftyOne Teams 2.1.0 ¶¶
Released October 1, 2024
Includes all updates from FiftyOne 1.0.0, plus:
-
Super admins can now migrate their deployments to Internal Mode via the Super Admin UI
-
Added support for sending user invitations in Internal Mode
-
Optimized performance of the dataset page
-
Fixed a BSON serialization bug that could cause errors when cloning or exporting certain dataset views from the Teams UI
FiftyOne 1.0.0 ¶¶
Released October 1, 2024
What’s New
-
The FiftyOne Brain is now fully open source. Contributions are welcome!
-
Added Modal Panels, bringing the ability to develop and use panels in the App’s sample modal #4625
-
All datasets now have automatically populated
created_at
andlast_modified_at
fields on their samples and frames #4597 -
Added support for loading remotely-sourced zoo datasets whose download/preparation instructions are stored in GitHub or public URLs #4752
-
Added support for loading remotely-sourced zoo models whose definitions are stored in GitHub or public URLs #4786
App
-
Added dozens of builtin operators for performing common operations directly from the App #4830
-
Label overlays in the grid are now scaled proportionally to grid zoom #4747
-
Improved support for visualizing and filtering
DynamicEmbeddedDocument
list fields #4833 -
Added a new timeline API for synchronizing playback of multiple modal panels #4772
-
Improved UI, documentation, and robustness when working with custom color schemes #4763
-
Fixed a bug where the active group slice was not being persisted when navigating between groups in the modal #4836
-
Fixed a bug when selecting samples in grouped datasets in the modal #4789
-
Fixed heatmaps rendering for values outside of the
range
attribute #4865
Core
-
Added support for creating summary fields to optimize queries on large datasets with many objects #4765
-
Dataset fields now have automatically populated
created_at
attributes #4730 -
Upgraded the
delete_samples()
andclear_frames()
methods to support bulk deletions of 100k+ samples/frames #4787 -
The
default_sidebar_groups()
method now correctly handles datetime fields #4815 -
Fixed an off-by-one error when converting semantic segmentations to/from instance segmentations #4826
-
Protect against infinitely growing content size batchers #4806
-
Removed the deprecated
remove_sample()
andremove_samples()
methods from theDataset
class #4832 -
Deprecated Python 3.8 support
Plugins
-
Added
ctx.group_slice
to the operator execution context #4850 -
Added
set_group_slice()
to the operator execution context #4844 -
A loading error is now displayed in the actions row when operators with placements fail to load #4714
-
Ensure the App loads when plugins fail to load #4769
FiftyOne 0.25.2 ¶¶
Released September 19, 2024
-
Require
pymongo<4.9
to fix database connections -
Require
pydicom<3
for DICOM datasets
FiftyOne Teams 2.0.1 ¶¶
Released September 6, 2024
Includes all updates from FiftyOne 0.25.1, plus:
-
Optimized the
Manage > Access
page for datasets -
Added support for configuring a deployment to allow Guests to run custom plugins
-
Fixed a bug where dataset permissions assigned to groups were not correctly applied to users that do not otherwise have access to the dataset
-
Fixed a bug where a deployment’s default user role as configured on the
Security > Config
page would not be respected -
Fixed a bug that could cause 3D scenes stored in Azure to fail to load
-
Fixed a bug that erroneously caused the currently selected samples to be cleared when navigating between samples or closing the sample modal
FiftyOne 0.25.1 ¶¶
Released September 6, 2024
App
-
Fixed an issue with sidebar state persistence when opening and closing the sample modal #4745
-
Fixed a bug with sample selection in the Map panel when the grid is reset #4739
-
Fixed a bug when filtering
Keypoint
fields using the App sidebar #4735 -
Fixed a bug when tagging in the sample modal with active sidebar filters #4723
-
Disabled
fiftyone-desktop
builds until package size can be optimized #4746
SDK
-
Added support for loading lists of TXT files in YOLOv5 format #4742
-
Fixed a bug with the
match_expr
argument ofgroup_by()
#4754 -
Fixed a regression when running inference with Ultralytics models that don’t support track IDs #4720
Plugins
-
Fixed a bug that caused
TabsView
components to erroneously reset to their default state #4732 -
Fixed a bug where calling
set_state()
andset_data()
to patch state/data would inadvertently clobber other existing values #4753 -
Fixed a spurious warning that would appear for delegated operations that don’t return outputs #4715
FiftyOne Teams 2.0.0 ¶¶
Released August 20, 2024
Includes all updates from FiftyOne 0.25.0, plus:
What’s New
-
Added a Can tag permission to allow users to tag samples/labels but not otherwise perform edits
-
Added support for authorized user credentials and external account credentials when configuring GCP credentials
-
All plugin execution is now user-aware and will respect the executing user’s role and dataset permissions
-
All deployments now include a LICENSE file that enforces user quotas
-
Guests can no longer access operators/panels in custom plugins
App
-
Added a caching layer to optimize media serving in the App
-
Cloning an entire dataset via the
Clone
button now includes saved views, saved workspaces, and runs -
Optimized the performance and UX of the
Settings > Users
page -
The users table on the
Settings > Users
page is now sortable -
Fixed a bug when updating the user role of a pending invitation
-
Fixed a bug that prevented the Recent views widget from showing all recently loaded views as intended
CAS
-
Added an
Audit
page to the Super Admin UI that shows current license utilization and RBAC settings -
Super admins can now disable manual group management in the App. This is useful, for example, if groups are defined via hooks
-
Legacy mode deployments now have access to the relevant pages of the Super Admin UI
SDK
-
Added a
user_groups
module to the Management SDK for programmatically managing user groups -
The
fiftyone delegated
CLI command is now available to Teams users -
Upgraded the upload_media() function to gracefully support fields with missing media paths
-
Added an
overwrite
parameter toadd_cloud_credentials()
to control whether existing cloud credentials with the same prefix for a provider are overwritten
FiftyOne 0.25.0 ¶¶
Released August 20, 2024
What’s New
-
Introducing Python panels, a powerful framework for building custom App panels via a simple Python interface that includes a wealth of builtin components to convey information, create tutorials, show interactive graphs, trigger operations, and more
-
Released a Dashboard panel that allows users to build custom no-code dashboards that display statistics of interest about the current dataset (and beyond)
-
Added Segment Anything 2 to the model zoo! #4671
-
Added an Elasticsearch integration for native text and image searches on FiftyOne datasets!
-
Added an image representativeness method to the Brain that can be used to find the most common/uncommon types of images in your datasets
App
-
You can now link directly to a sample or group in the App by copy + pasting URLs into your browser bar or programmatically via your App
session
#4281 -
Added a config option to disable frame filtering in the App globally or on specific datasets #4604
-
Added support for dynamically adjusting 3D label linewidths #4590
-
Added a status bar when loading large 3D assets in the modal #4546
-
Exposed camera position as a recoil atom #4535
-
Added anonymous analytics collection on an opt-in basis #4559
-
Fixed a bug when viewing dynamic groups of 3D scenes in the modal #4527
-
Fixed a bug when rendering scenes with relative 3D asset paths on Windows #4579
-
Fixed keyboard shortcuts when viewing dynamic groups in the modal #4510
Annotation
-
Added support for annotating frame views #4477
-
Added support for annotating clip views #4511
-
Added support for preserving existing COCO IDs when exporting in COCO format #4530
Core
-
Added support for save contexts to generated views (patches, frames, and clips) #4636
-
Added support for downloading plugins from branches that contain slashes
/
#4614 -
Added support for including index statistics in
Dataset.stats()
#4653 -
Added a source install script for Windows #4582
-
Ubuntu 24.04 users no longer have to manually install MongoDB #4533
-
Removed Python 3.7 support and marked Python 3.8 as deprecated #4538
-
Fixed a bug that could cause side effects when creating clip views defined by expressions #4492
-
Fixed a concatenation bug when downloading videos from CVAT #4674
Plugins
-
The actions row now automatically overflows into a
More items
menu as necessary when there is insufficient horizontal space #4595 -
Added a
set_active_fields()
operator for programmatically controlling the selected fields in the sidebar #4482 -
Added a
notify()
operator for programmatically showing notifications in the App #4344 -
Added
ctx.extended_selection
to retrieve the current extended selection #4413 -
Added a
set_extended_selection()
operator for programmatically setting the extended selection #4409 -
Added a
track_event()
operator for logging plugin events in the App #4489
Zoo
-
Added YOLOv10 and RT-DETR models to the zoo #4544
-
Added YOLOv8 classification models to the zoo #4549
-
Added support for storing object track IDs if present when running Ultralytics models from the zoo #4569
-
Added support for GPU inference when running Hugging Face Transformers models from the zoo #4587
-
Extended support for group datasets, masks, heatmaps, and thumbnails when uploading FiftyOne datasets to Hugging Face Hub #4566
-
Allow
ragged_batches
to be configured when using Torch models with custom transforms #4509, #4512
FiftyOne Teams 1.7.1 ¶¶
Released June 11, 2024
Includes all updates from FiftyOne 0.24.1, plus:
-
Improved stability of loading/navigating to saved views in the App
-
Fixed a notification error when deleting users from the Team Settings page
-
Improved stability of the Team Groups page after deleting users
-
Optimized export of cloud-backed 3D scenes
FiftyOne 0.24.1 ¶¶
Released June 11, 2024
What’s New
- Added Ultralytics YOLOv8 models trained on Open Images v7 to the model zoo! #4398
App
- Fixed a regression from FiftyOne 0.24.0 that would prevent operator outputs and error states from displaying in the App #4445
Core
-
Optimized metadata computation for 3D scenes #4442
-
Fixed a bug that could cause 3D assets to be omitted when exporting 3D scenes #4442
Utils
- The
make_patches_dataset()
,make_frames_dataset()
, andmake_clips_dataset()
utilities can now be directly called #4416
Annotation
- Added support loading annotations for large CVAT tasks with many jobs #4392
FiftyOne Teams 1.7.0 ¶¶
Released May 29, 2024
Includes all updates from FiftyOne 0.24.0, plus:
-
Added a Roles page that summarizes the actions and permissions available to each user role
-
Added support for customizing the role that a user will have when sending an invitation for a new user to access a specific dataset
-
Added the ability to configure the expiration time for signed URLs used by your FiftyOne Teams deployment
-
Fixed a regression from FiftyOne Teams 1.6 that could cause login errors when accepting invites
FiftyOne 0.24.0 ¶¶
Released May 29, 2024
What’s New
-
Added support for 3D meshes and 3D geometries! #3985
-
Added a quickstart-3d dataset to the zoo! #4406
-
Added support for saving custom workspaces! #4205, #4211
-
You can now scroll/customize the content displayed in the App tooltip! #4254
-
FiftyOne now lazily connects to the database only when needed #4236
-
Added Grounding DINO as an option for zero shot object detection #4292
-
Added a new anomaly detection tutorial #4312
App
-
Added a
media_fallback
option to the dataset App config #4280 -
launch_app()
now respects the currentgroup_slice
when loading grouped datasets #4423 -
Allow sidebar changes during lightning loading states #4319
-
Fixed overlay processing for empty label lists #4345
-
Fixed
support
filtering in the sample modal forTemporalDetections
fields #4346 -
Fixed a regression from FiftyOne 0.23.8 when viewing dynamically grouped views into group datasets #4299
Core
-
Gracefully handle None-valued
tags
fields #4351 -
More robust path normalization when importing FiftyOneDataset exports from other operating systems #4353
-
Fixed possible concurrency bugs when updating/deleting runs #4323
-
Fixed possible concurrency bugs when updating views, workspaces, and group slices #4350
Utils
-
Added support for non-sequential category IDs when importing/exporting data in COCO format #4354, #4309
Plugins
-
Added a
DrawerView
option to render your operators as a side drawer in the grid/sample visualizer rather than as a modal #4240 -
Added a
set_spaces()
method for setting the current spaces layout from operators #4381 -
Added support for numpy dtypes when serializing operator results #4324
-
Fixed a bug where recently used operators may not appear first in the Operator browser #4287
-
Fixed logging syntax in the builtin
set_progress()
operation #4417
Zoo
- Fixed a bug with YOLO-NAS inference #4429
FiftyOne Teams 1.6.1 ¶¶
Released May 10, 2024
Bugs
- Fixed an issue with logging into FiftyOne Teams in Enterprise Proxy enviornments
FiftyOne Teams 1.6.0 ¶¶
Released April 30, 2024
What’s New
-
Added Groups for managing and dataset access for groups of users
-
Introduced a new Pluggable Authentication system for customizing FiftyOne Teams authentication
-
Removed Auth0 as a hard dependency for Teams deployments with the introduction of Internal Mode
-
Added support for directly authenticating with Identity Providers
-
Added a Super Admin UI for administering FiftyOne Teams deployments
-
Added the ability to search for users on the Users page
FiftyOne Teams 1.5.10 ¶¶
Released April 18, 2024
- Fixed an issue where video datasets were not loading due to ffmpeg dependency
FiftyOne Teams 1.5.9 ¶¶
Released April 15, 2024
Includes all updates from FiftyOne 0.23.8, plus:
-
Download contexts now support batching based on content size
-
All builtin methods that require access to cloud media now use download contexts to download media in batches during execution rather than downloading media in a single batch up-front
-
The
export()
method no longer caches all cloud media involved in the export -
Optimized the localhost App experience when using API connections
-
Optimized performance of data-intensive API calls when using API connections
FiftyOne 0.23.8 ¶¶
Released April 15, 2024
News
- Released a Hugging Face Hub integration for programmatically publishing and downloading datasets to/from Hugging Face Hub! #4193
App
-
Space sizes are now persisted when the App is refreshed #4171
-
Added support for rendering detections with empty instance masks in the App #4227
-
Enhanced label overlay processing to support empty label lists #4215
-
Optimized by the App server by removing unnecessary server lock-ups due to synchronous IO calls #4180
-
Optimized sidebar performance for grouped datasets #4182
-
Optimized dataset counting for index page queries #4114
-
Fixed a bug where sidebar group name changes in the App were not persisted #4241
-
Fixed a bug where in-App tagging actions may not be restricted to the currently selected samples #4195
-
Fixed a bug when bookmarking sidebar filters for group datasets #4097
-
Fixed a bug where the saved view dropdown would cover the view stage popover #4242
Core
-
All autosave contexts now respect the default batching strategy and can be configured to use content size-based batching #4243
-
All SDK methods now use autosave contexts rather than calling
sample.save()
in a loop #4243 -
Added a
read_files()
utility to efficiently read from multiple files in a threadpool #4243 -
Resolved singularity issues in
compute_orthographic_projection_images()
#4206 -
Fixed matplotlib style deprecation error #4213
Docs
-
Added a clustering tutorial #4245
-
Added a small object detection tutorial #4263
Annotation
- Upgraded the Labelbox integration to support the Export V2 API #4260
Plugins
-
Secrets are now available to operators in their
resolve_input()
,resolve_output()
, andresolve_execution_options()
methods #4169 -
ctx.view
now reflects when the current view is saved #4200 -
Fixed a regression in debounce behavior in operator input forms that could potentially result in degraded performance #4199
-
Fixed a bug when using the
set_view()
method in operators #4198
Zoo
-
Added support for loading YOLOv8 and YOLOv9 segmentation models from the Model Zoo #4220
-
Added support for applying YOLO oriented bounding box models to FiftyOne datasets #4230, #4238
-
Added support for applying Segment Anything models to the frames of video datasets #4229
FiftyOne Teams 1.5.8 ¶¶
Released March 21, 2024
Includes all updates from FiftyOne 0.23.7.
FiftyOne 0.23.7 ¶¶
Released March 21, 2024
App
-
Updated
Have a Team?
link in the App to point to the Book a demo page #4127 -
Fixed indexed boolean fields in lightning mode #4139
-
Fixed app crash when many None-valued fields exist in the sample modal #4154
Docs
-
Added an Albumentations integration for performing data augmentation on FiftyOne datasets #4155
-
Added Places2 dataset to the zoo #4130
-
Improved documentation for configuring AWS and GCP cloud credentials #4151
-
Added YOLOv8, YOLOv9, and YOLO-World to the FiftyOne Model Zoo #4153
-
Added
og:image
meta tag to all documentation pages for better page sharing on socials #4173 -
Updated the lightning mode docs to clarify that wildcard indexes should not generally be used by default #4138
Plugins and Operators
-
Added support for executing operators programmatically in notebook contexts #4134
-
Improved execution of operators during loading of the App #4136
-
Added a new on_dataset_open hook to auto-execute operators when datasets are opened in the App #4137
-
Improved performance of operator type resolution by only calling
resolve_input()
on demand #4152 -
Added support for loading saved views by name or slug when using the
set_view()
operator #4159 and #4178 -
Added ability to trigger builtin operators during operator execution via
ctx.ops
#4164 -
Fixed issue where JS operator input was not validated when calling
ctx.trigger()
orexecuteOperator()
directly #4170 -
Show execution error of an operator in a notification when calling
ctx.trigger()
orexecuteOperator()
directly #4170 and #4178
Core
-
Improved SuperGradients inference performance #4149
-
Passing a grouped collection to a method that was not specifically designed to handle them now raises better validation errors #4150
-
MediaExporter
no longer re-exports media unnecessarily #4143 -
Added explicit support for Python 3.11 and 3.12 #4157
-
Added a
perform_nms()
utility for non-maximum suppression on object detections #4160 -
Improved error message when the given dataset name is unavailable #4161
-
Removed use of deprecated non-integer arguments in
take()
andshuffle()
#4052 -
Added ability to change
map_type
from the defaultroadmap
( carto-positron) tosatellite
( public USGS map imagery) inlocation_scatterplot()
#4075 -
Cloning a dataset or view now includes any custom MongoDB indexes #4115
FiftyOne Teams 1.5.7 ¶¶
Released March 6, 2024
Includes all updates from FiftyOne 0.23.6, plus:
-
Improved performance of
values()
when using API connections -
Improved stability of long-running operations when using API connections
-
Added support for including prefixes when providing bucket-specific credentials
FiftyOne 0.23.6 ¶¶
Released March 6, 2024
What’s New
-
Added a data augmentation tutorial #4109
-
Added a formal Open CLIP integration page #4049
-
Documented support for open-world object detection with YOLO World #4112
-
Added support for importing/exporting contours in YOLO format #4094
-
Added cosine metric as an option for Milvus similarity indexes #4081
-
Added support for local files when using the Label Studio integration #3969
-
Removed App dependency on
_cls
for embedded documents #4090
Bugs
-
Fixed issue with filter counts on video datasets in the App #4095
-
Fixed issue with color scheme initialization in the App #4092
-
Fixed issue when changing group slice with filters in the App #4098
-
Fixed issue with zero-shot detection batching #4108
-
Fixed issue with the operator target view utility when no view or sample selection is present #4113
FiftyOne Teams 1.5.6 ¶¶
Released February 14, 2024
Includes all updates from FiftyOne 0.23.5, plus:
-
Improved dataset search user experience
-
Post login redirects will now send the user to the correct page
FiftyOne 0.23.5 ¶¶
Released February 14, 2024
What’s New
-
Added subcounts to search results in the sidebar #3973
-
Added
fiftyone.operators.types.ViewTargetProperty
to make it simpler to add view selection to afiftyone.operators.Operator
#4076 -
Added support for apply monocular depth estimation transformers from the Hugging Face
transformers
library directly to FiftyOne datasets #4082
Bugs
-
Fixed an issue where increments were padded improperly #4035
-
Fixed an issue when setting
session.color_scheme
#4060 -
Fixed sidebar groups resolution when the dataset app config setting is configured #4064
-
Fixed issue when
SelectGroupSlices
view stage is applied with only one slice within video grouped datasets #4066 -
Fixed non-default pcd slice rendering in the App #4044
-
Dynamic groups configuration options are now only shown when relevant #4068
-
Fixed issue with dynamic groups mode pagination #4068
-
Enabled tagging in sidebar lightning mode #4048
FiftyOne Teams 1.5.5 ¶¶
Released January 25, 2024
Includes all updates from FiftyOne 0.23.4, plus:
Bugs
- Fixed a proxy URL bug that prevented custom JS panels from launching
FiftyOne 0.23.4 ¶¶
Released January 25, 2024
Core
- Added support for passing kwargs directly when creating custom runs #4039
Brain
- Added support for registering custom visualization methods #4038
FiftyOne Teams 1.5.4 ¶¶
Released January 19, 2024
Includes all updates from FiftyOne 0.23.3, plus:
General
-
Optimized
export()
calls involving cloud-backed media -
Deployments with their
FIFTYONE_API_URI
environment variable set will now display the API URI to users in the Teams App -
Improved debug logs by adding the head and tail of large results
-
Updated
motor
dependency to 3.3.0
Bugs
-
Fixed a regression when exporting cloud-backed media to CVAT for annotation
-
Fixed an issue where API requests were not being prefixed with the correct proxy URL
-
Fixed running
compute_similarity()
over API connections with the MongoDB backend
FiftyOne 0.23.3 ¶¶
Released January 19, 2024
News
-
Released a Hugging Face integration for running inference with
transformers
models on your FiftyOne datasets! -
Released a SuperGradients integration for running inference with YOLO-NAS architectures!
App
-
Primitive values in
DynamicEmbeddedDocument
list fields are now displayed as comma-separated values (previously displayed as None) in the sample modal #3963 -
Improved field visibility’s show metadata toggle #3926
-
Fixed issues for unknown operator types and defaults #3851
-
Miscellaneous saved view improvements #3974
-
Fixed a bug where images in the sample modal errored when frame fields were added to video slices in mixed datasets #3966
-
Fixed in-App sort by similarity for datasets with a color scheme #3966
-
Fixed issues where media and other URLs were constructed incorrectly #3976
-
Fixed keyboard navigation for dropdowns throughout the App #3965
Brain
-
Added support for passing Hugging Face, Ultralytics, and SuperGradients models directly brain methods #4004
-
Added support to
register_run()
for configuring whether run cleanup happens #3978 -
Added support for passing model kwargs to
compute_similarity()
andcompute_visualization()
-
Fixed issues with similarity searches on views and with pre-computed embeddings using the MongoDB backend
Core
-
Added dynamic batching to bulk writes like
set_values()
#4015 -
Added support for customizing progress bar rendering at method level #3979
-
Include sample/frame singletons when clearing dataset cache via
clear_cache()
#4016 -
Fixed issues with embedded document field schemas #4002
Models
-
Added support for directly passing Ultralytics models models to
apply_model()
-
Added prompt embedding capabilities to OpenCLIP models #3960
Plugins
-
Added a builtin
delete_selected_labels
operator #4001 -
Updated
ctx.selected_labels
format to be consistent with other SDK methods #3998
Tutorials
- Added a monocular depth estimation tutorial #3991
FiftyOne Teams 1.5.3 ¶¶
Released December 21, 2023
Includes all updates from FiftyOne 0.23.2, plus:
General
-
Improved performance of
add_samples()
,set_values()
,compute_metadata()
, and other large batched computations when using API connections -
Added
label
as a searchable field for delegated operations -
Fixed issue where invalid tokens were not causing redirects
-
Re-running a delegated operation now uses dataset ID instead of name
-
Trimmed API logging of large batch SDK operations
FiftyOne 0.23.2 ¶¶
Released December 21, 2023
News
App
-
Added support for frames-as-videos in nested groups #3935
-
Fixed an issue where embeddings legend did not display full names #3927
-
Added a toggle to show/hide fields in the sample modal that have undefined values #3937
-
Fixed an issue with the Lightning threshold reset button #3933
-
Fixed an issue where similarity search only worked on the default group slice #3912
-
Fixed issue where users could not select scalar fields in the sidebar #3938
Core
-
Added configurable batching choices to optimize throughput for operations like
add_samples()
#3923 -
IoU computations for non-filled polylines now uses keypoint similarity #3930
-
Optimized bulk write database operations like
set_values()
#3942 -
Added configurable batch sizes to bulk write operations #3944
-
Added builtin support for Ubuntu 23 #3936
-
Fixed an issue where exporting patches would have incorrect path names #3921
-
Removed loading from mongoengine cache #3922
-
Fixed overwriting dataset metadata with empty values during import #3913
Annotation
- Added support for annotating multiple label fields using the Label Studio backend #3895
Plugins
-
Added support for delegating function calls via the new @voxel51/utils/delegate operator #3939
-
Added the ability to search multiple fields in a delegated operation list query #3892
-
Delegated operators now reference datasets by ID rather than name for robustness to dataset name changes #3920
-
Improved validation for the builtin
delete_selected_samples
andclone_selected_samples
operators #3914 -
Fixed backwards compatibility issues with
ctx.secrets
#3908 -
Fixed issue with JS plugin App configs #3924
FiftyOne Teams 1.5.2 ¶¶
Released December 11, 2023
Bugs
-
Avoid creating non-existent database indexes on API startup
-
Avoid errors when archiving snapshots with corrupted run results
FiftyOne Teams 1.5.1 ¶¶
Released December 8, 2023
Includes all updates from FiftyOne 0.23.1
FiftyOne 0.23.1 ¶¶
Released December 8, 2023
App
Core
-
Fixed inferring doubly-nested dynamic list field types #3900
-
Fixed
compute_metadata()
whenPillow<7
is installed #3897 -
Fixed default group indexes creation when importing a FiftyOneDataset #3894
FiftyOne Teams 1.5.0 ¶¶
Released December 6, 2023
Includes all updates from FiftyOne 0.23.0, plus:
Features
-
Added support for archiving older dataset snapshots to cold storage
-
Added support for executing operators on dataset snapshots
-
Added support for uploading multiple sets of cloud credentials, some of which may only apply to data in certain bucket(s)
-
Added support for uploading media to Labelbox directly from S3 buckets
-
Added support for executing the builtin
open_dataset
operator in the Teams UI -
Added support for executing operators when viewing datasets with no samples, for example to add media/labels to the dataset from within the App
-
Added support for editing the label of a delegated operation
-
Added support for manually marking delegated operations as failed
-
Added support for monitoring the progress of delegated operations
-
Improved handling of plugin secrets
-
Added the ability to attach authorization tokens to media/asset requests
-
Added new filter options to the dataset listing page
-
Filters/searches on the dataset listing page are now persisted through URL query parameters
-
Validate regexes before searching datasets to stop hard crashes
-
Enforce exact version of
auth0
python package -
Added debug logging on API startup
Bugs
-
Fixed an issue with the Runs page when viewing delegated operations that were scheduled via the SDK
-
Users with special access to a dataset are now displayed properly
-
Fixed an issue when loading certain datasets with saved color schemes in the Teams UI
-
Fixed an issue on the dataset listing page where the page size menu would sometimes stay open after making a selection
-
Fixed an issue when downloading plugins via the API that contain bytes data or
.pyc
files -
Fixed an issue where certain disabled operators were not correctly appearing as disabled in the operator browser
-
Improved reliability of similarity sort actions
FiftyOne 0.23.0 ¶¶
Released December 6, 2023
News
-
Released a Redis integration for native text and image searches on FiftyOne datasets!
-
Released a MongoDB integration for native text and image searches on FiftyOne datasets!
-
Released a V7 integration for annotating FiftyOne datasets!
App
-
Added a new Lightning mode to the App sidebar that provides an optimized filtering experience for large datasets #3807
-
Added support for viewing image groups as a video #3812
-
Added support for configuring custom color schemes for semantic segmentation labels via the color scheme editor #3727
-
Added support for configuring custom Heatmap colorscales via the color scheme editor #3804
-
Improved rendering and customizability of label tags in the color scheme #3622
-
Added an empty dataset landing page that allows for importing media and/or labels to the dataset from the App by running operators #3766
-
Added a landing page that appears when no dataset is currently selected that allows for creating/opening datasets in the App by running operators #3766
-
Added support for executing operators when the sample modal is open #3747
-
Added a keyboard shortcut for batch selecting samples in grid and modal #3718
-
Made field visibility’s selections persistent across page refreshes #3646
-
Introduced error alert for view bar errors in view stages #3613
-
Ensure that the last used brain key is loaded by default in the similarity search menu #3714
-
Added support for launching the App with a non-default browser #3789
-
Upgraded
werkzeug
from 2.0.3 to 3.0.1 in requirements for improved compatibility #3723
Core
-
Adding support for registering custom evaluation methods #3695
-
Optimized the
compute_metadata()
implementation #3801 -
Added full support for working with images that use
EXIF
tags #3824 -
Added support for parsing and exporting visibility attribute for keypoints in COCO format #3808
Plugins
-
Added
ctx.current_sample
to operator’sExecutionContext
to support applying operators to the current sample open in the App modal #3792 -
Added support for configuring an operator’s available execution options in cases where immediate and/or delegated execution should be available #3839
-
Added support for programmatically executing generator operators via the SDK #3803
-
Added a builtin
clear_sample_field
operator for clearing sample fields #3800 -
Loosened the
OperatorConfig
constructor signature for enhanced forward/backward compatibility #3786 -
Fixed an issue where operator form defaults were not always applied #3777
-
Improved handling of fields in operator forms #3728
-
Improved default value control in operator forms #3371
Annotation
-
Updated the Labelbox integration to support the latest version of the Labelbox API #3781
-
Removed the need for prepending sequence numbers to filenames when uploading images to the CVAT integration with sufficiently new versions of the CVAT SDK #3823
Bugs
-
Improved the implementation of saved view loading in the App #3788
-
Fixed an issue where typing the backtick key would close the operator palette #3790
-
Fixed orthographic projection bug for more accurate 3D rendering #3864
-
Addressed missing notifications when scheduling certain delegated operations from the App #3861
-
Resolved issues with generator operators #3861
-
Fixed operator form exception when
onChange
is missing #3840 -
Corrected operator form crash and changed field re-render #3833
-
Fixed select/show samples builtin operator for better sample management #3818
-
Addressed hidden validation error bug for more accurate error handling #3776
-
Fixed issue with custom colors when switching between name and list #3847
-
Various improvements and fixes around color management #3649
-
Resolved issue where tag labels in multiple samples could only tag labels in the last sample #3858
-
Prevent operator list from rendering behind the sample modal #3757
-
Fixed boolean not displayed in modal view sidebar entry for consistent data representation #3713
-
Fixed random seed issue when creating
Take
view stages in the App #3855 -
Fixed dynamically grouped views for non-group parent media types of grouped datasets #3798
-
Addressed media fields issues for more reliable media handling #3722
-
Fixed an issue with selecting group slices in views that contain a
Select
view stage #3852 -
Fixed an issue with view reloading for datasets that have saved views #3838
-
Fixed rendering of semantic segmentation masks within
DynamicEmbeddedDocument
fields #3825 -
Resolved an issue with the slice/group statistics selector where no default option is selected #3698
-
Fixed various issues with builtin operators #3817
-
Addressed a potential data duplication issue when merging in-memory samples into grouped datasets #3816
-
Resolved possible malformed FiftyOneDataset format exports due to concurrent edits #3726
-
Fixed the plugin cache check #3676
-
Fixed an error when pressing the esc key in the App #3662
FiftyOne Teams 1.4.5 ¶¶
Released November 21, 2023
General
- Added debug log events to API server startup
FiftyOne Teams 1.4.4 ¶¶
Released November 3, 2023
Includes all updates from FiftyOne 0.22.3, plus:
General
-
Optimized iterator operations such as export
-
Improved plugin upload reliability
-
Further improved dataset listing queries
Bugs
-
Fixed clips, frames, and patches views for grouped datasets in the App
-
Fixed cloud credential initialization during deployment restarts
-
Fixed snapshot diff computation in large datasets with MongoDB < v6.0
FiftyOne 0.22.3 ¶¶
Released November 3, 2023
Core
- Optimized
sort_by_similarity()
#3733
App
-
Fixed rendering of
BooleanFields
in the sample modal #3720 -
Optimized the Embeddings panel #3733
-
Fixed media field changes in the sample modal #3735
-
Fixed sidebar reordering edge case #3753
-
Fixed the Operator browser in the sample modal #3764
-
Fixed 3D detections in the grid #3761
Brain
-
Optimized similarity backends when performing KNN queries against their entire indexes
-
Fixed performing similarity queries on filtered views in the LanceDB integration
-
Fixed calling
remove_from_index()
on an index that uses theembeddings_field
parameter -
Fixed
compute_embeddings()
whenskip_existing=True
is provided
Plugins
-
Fixed
on_startup
Operator execution #3731 -
Fixed
selected_labels
in Operator contexts #3740 -
Improved Operator placements #3742
-
Fixed
async
generator results in delegated operations #3754 -
Fixed
ctx.secrets
inresolve_input()
#3759
CLI
- Added fiftyone delegated fail and fiftyone delegated delete commands #3721
FiftyOne Teams 1.4.3 ¶¶
Released October 20, 2023
Includes all updates from FiftyOne 0.22.2, plus:
General
-
Improved dataset listing queries
-
Improved error handling when listing datasets
-
Fixed issues with offline access and auth errors requiring cookies to be cleared manually
-
Reduced max export size of datasets to 100MB
-
Users will now only see an operator if their role meets the required role
FiftyOne 0.22.2 ¶¶
Released October 20, 2023
Core
-
Added a
fiftyone_max_thread_pool_workers
option to the FiftyOne config #3654 -
Added a
fiftyone_max_process_pool_workers
option to the FiftyOne config #3654 -
Added support for directly calling
export()
on patches views to export image patches #3651 -
Fixed an issue where CVAT import fails when
insert_new
isFalse
#3691
App
-
Fixed dataset recreation across processes #3655
-
Fixed the
Session.url
property in Colab #3645 -
Fixed converting to patches in grouped datasets when sidebar filters are present #3666
-
Fixed browser cache issues when upgrading #3683
Plugins
-
Use a fallback icon when an operator cannot be executed #3661
-
FileView
now captures content as well as filename and type of theUploadedFile
#3679 -
Fixed issue where the
fiftyone delegated launch
CLI command would print confusing errors #3694 -
Added a
list_operators()
utility for listing operators #3694 -
Added a
operator_exists()
utility for checking if an operator exists #3694 -
Number
properties now supportmin
andmax
options in various views and validation #3684 -
Improved validation of primitive types in operators #3685
-
Fixed issue where non-required property validated as required #3701
-
Fixed an issue where plugin cache was not cleared when a plugin was deleted #3700
-
File
now usesFileExplorerView
by default #3656
Zoo
FiftyOne Teams 1.4.2 ¶¶
Released October 6, 2023
Includes all updates from FiftyOne 0.22.1, plus:
General
-
Error messages now clearly indicate when attempting to use a duplicate key on datasets a user does not have access to
-
Fixed issue with setting default access permissions for new datasets
-
Deleting a dataset now deletes all dataset-related references
-
Default fields now populate properly when creating a new dataset regardless of client
-
Improved complex/multi collection aggregations in the api client
-
Fixed issue where users could not list other users within their own org
-
Snapshots now properly include all run results
-
Fixed issue where reverting a snapshot behaved incorrectly in some cases
-
Fixed Python 3.7 support in the fiftyone-teams SDK
App
-
Searching users has been improved
-
Resolved issue with recent views not displaying properly
FiftyOne 0.22.1 ¶¶
Released October 6, 2023
App
-
Fixed empty detection instance masks #3559
-
Fixed a visual issue with scrollbars #3605
-
Fixed a bug with color by index for videos #3606
-
Fixed an issue where
Detections
(and other label types) subfields were properly handling primitive types #3577 -
Fixed an issue launching the App in Databrick notebooks #3609
Core
-
Resolved groups aggregation issue resulting in unstable ordering of documents #3641
-
Fixed an issue where group indexes were not created against the correct
id
property #3627 -
Fixed issue with empty segmentation mask conversion in COCO-formatted datasets #3595
Plugins
-
Added a new
fiftyone.plugins.utils
module that provides common utilities for plugin development #3612 -
Re-enabled text-only placement support when icon is not available #3593
-
Added read-only support for
FileExplorerView
#3639 -
The
fiftyone delegated launch
CLI command will now only run one operation at a time #3615 -
Fixed an issue where custom component props were not supported #3595
-
Fixed issue where
selected_labels
were missing from theExecutionContext
duringresolve_input()
andresolve_output()
#3575
FiftyOne Teams 1.4.1 ¶¶
Released September 21, 2023
Bugs
- Patched a regression that prevented the Teams App from working behind proxies
FiftyOne Teams 1.4.0 ¶¶
Released September 20, 2023
Includes all updates from FiftyOne 0.22.0, plus:
News
-
Added support for dataset versioning!
-
Added support for scheduling delegated operations via the App
App
-
Admins can now upload secrets via the UI which are made available to all plugins and delegated operations at runtime
-
Optimized page load times when accessing the Team Settings page
-
Optimized page load times when opening a dataset for the first time in a new web session
FiftyOne 0.22.0 ¶¶
Released September 20, 2023
News
-
Added a native Ultralytics integration! #3451
-
Added support for scheduling delegated operations from within the App! #3312
App
-
Updated the Histograms panel to only render one field at a time to improve performance #3419
-
Gracefully fallback to
filepath
if a dataset’sapp_config
has a custom grid media field that has been excluded from the current view #3498 -
Improved rendering of 2D polylines #3476
-
Prevented unnecessary page reloads when clearing selections in the Embeddings panel #3507
-
Removed unnecessary page reloads when resetting field visibility filters #3441
-
Fixed an off-by-one bug when paging in the sample grid #3416
-
Fixed a bug when applying field visibility filters to fields of type
DateField
andDateTimeField
#3418 -
Fixed a bug when changing slices for grouped datasets in the sample modal when sidebar filters have been applied #3545
-
Fixed a bug when visualizing dynamic groupings of grouped datasets with sparse (missing) slices #3470
-
Fixed a bug that prevented the group media visibility dropdown from opening #3480
-
Fixed a bug where attributes of grouped samples were missing in the modal #3436
Core
-
Added support for grouping by compound keys using
group_by()
#3515 -
Added
create_index=False
options tosort_by()
andgroup_by()
#3515 -
Added a new
tags
filter option tolist_datasets()
#3492 -
Added a
fiftyone.core.storage
module that provides a common interface for filesystem I/O #3406 -
Added dataset tag and label filters when exporting datasets via the CLI #3412
-
Added support for running FiftyOne in podman containers #3483
-
Optimized the
list_datasets(info=True)
implementation #3528 -
Added support for providing frame sizes when constructing rotated boxes and cuboids #3409
-
Fixed a bug with automatic non-persistent dataset cleanup when running MongoDB v4.4 and later #3486
-
Fixed a bug where default indexes for grouped datasets were not created via
clone()
andmerge_samples()
#3515 -
Fixed a bug where NaNs were causing orthographic projection computations to crash #3427
-
Fixed a bug with the OpenLABEL importer when given incomplete keypoint skeletons #3429
Plugins
-
Added a new
FileExplorerView
type that allows for browsing file systems and selecting files or directories #3459 -
Added
ctx.secrets
to plugins #3453 -
Added a builtin
set_progress
operator #3516 -
Fixed broken wiring of the
MarkdownView
,SwitchView
, andPlacement
components #3537
Zoo
-
Graceful handling of empty prompts when using Segment Anything models #3505
-
Fixed bugs where Segment Anything model weights were not loaded and auto-inference would only return one set of masks #3465
FiftyOne Teams 1.3.6 ¶¶
Released August 8, 2023
Includes all updates from FiftyOne 0.21.6.
FiftyOne 0.21.6 ¶¶
Released August 8, 2023
App
-
Fixed the Embeddings panel #3401
-
Fixed a bug when using the sidebar to filter views that have selected fields #3405
FiftyOne Teams 1.3.5 ¶¶
Released August 7, 2023
Includes all updates from FiftyOne 0.21.5, plus:
App
-
Fixed a bug with dataset search where suggestions may not appear when matches across multiple types collide
-
Upgraded the Plugin configuration UI to better explain the available Operator permission configuration options
SDK
- Significant performance optimizations by introducing cursor batching for relevant API endpoints
FiftyOne 0.21.5 ¶¶
Released August 7, 2023
News
-
Added Segment Anything to the Model Zoo! #3330
-
Added support for loading models from PyTorch Hub! #2949
App
-
Added support for controlling field visibility in the grid independent of filtering #3248
-
Added support for filtering by label tags in individual label fields #3287
-
Added support for specifying custom colors for list fields #3319
-
Added support for opening the color panel when the sample modal is open #3355
-
Added helper text explaining custom color options #3383
-
Added support for viewing slices of grouped datasets in the Embeddings panel #3351
-
Added support for coloring embeddings plots by list fields #3326
-
Improved overflow when the actions row contains many icons #3296
-
Added support for tagging all visible PCD slices #3384
-
Improved handling of group datasets whose groups may contain missing samples for certain slices #3333
-
Fixed various issues when visualizing grouped datasets #3353, #3322, #3318, #3379, #3318
-
Added bazel support #3338
-
Removed the maximum
starlette
version requirement #3297
Plugins
-
Added support for accessing the currently selected labels in the App within plugin execution contexts #3295
-
Added support for configuring custom Operator icons #3299
-
Improved Operator form validation debounce behavior #3291
-
Fixed some bugs that prevented customer visualizer plugins from being recognized #3357
Core
-
Improved robustness of concurrent schema updates #3308
-
Schema changes are now maintained by the
select_group_slices()
stage #3336 -
Added support for exporting keypoints with nan-valued coordinates in COCO format #3316
-
Updated YOLOv5 exports to use dict-style class names #3393
-
Fixed a bug when passing an RGB hex string to
to_segmentation()
#3293 -
Fixed a bug where
has_field()
would not recognize dynamic fields #3349 -
Fixed a bug when applying
merge_sample()
to grouped datasets #3327
Zoo
-
Use
weights
parameter instead of deprecatedpretrained
parameter for torchvision models #3348 -
Added support for running zoo models with the MPS backend #2843
-
Fixed YouTube video downloading for zoo datasets like ActivityNet and Kinetics #3382
Annotation
-
Upgraded the Labelbox integration to support the latest Labelbox API version #3323
-
Fixed text and checkbox attribute usage when using CVAT 2.5 #3373
Brain
-
Added support for gRPC connections when using the Qdrant similarity backend #3296
-
Improved support for creating similarity indexes with embeddings stored in dataset fields
-
Resolved bugs with similarity queries using the sklearn backend #3304, #3305
Docs
FiftyOne 0.21.4 ¶¶
Released July 14, 2023
FiftyOne Teams 1.3.3 ¶¶
Released July 12, 2023
Includes all updates from FiftyOne 0.21.3, plus:
SDK
-
Added a
cache=True
option to the upload_media() utility that allows for automatically adding any uploaded files to your local cache -
Fixed a bug when launching the App locally via API connections
FiftyOne 0.21.3 ¶¶
Released July 12, 2023
News
-
Released a Milvus integration for native text and image searches on FiftyOne datasets!
-
Released a LanceDB integration for native text and image searches on FiftyOne datasets!
App
-
Added support for embedded keypoint fields in
filter_keypoints()
#3279 -
Fixed keypoint filtering #3270
-
Fixed a bug that caused non-matching samples to remain in the grid when applying multiple sidebar filters #3270
-
Fixed a bug when filtering by IDs in the sidebar #3270
-
Fixed label tags grid bubbles for filterless views #3257
Core
-
Added a
merge_sample()
method for merging individual samples into existing datasets #3274 -
Fixed a bug when passing dict-valued
points
tocompute_visualization()
#3268 -
Fixed a bug when filtering keypoints stored in embedded documents #3279
FiftyOne Teams 1.3.2 ¶¶
Released July 5, 2023
Includes all updates from FiftyOne 0.21.2.
FiftyOne 0.21.2 ¶¶
Released July 3, 2023
App
-
Fixes grid pagination results after applying sidebar filters #3249
-
Fixes redundant sidebar groups for custom schemas #3250
FiftyOne Teams 1.3.1 ¶¶
Released June 30, 2023
Includes all features from FiftyOne 0.21.1, plus:
General
-
App containers no longer need to be restarted in order for Azure/MinIO credentials uploaded via the Teams UI to be properly recognized
-
Fixed an intermittent bug when computing metadata for remote filepaths
-
Reverted a change from Teams 1.3.0 so that the SDK again supports the declared minimum version requirement of
pymongo==3.12
SDK
-
Updated the order of precedence for SDK connections so that API connections take precedence over direct database connections
-
Fixed a bug when connecting to Teams deployments with non-standard database names via API connections
-
Fixed a bug when saving run results using API connections
-
Fixed a bug when deleting datasets using API connections
Management SDK
-
Added support for deleting user invitations by email in addition to invitation ID
-
Added support for configuring permissions for invited users that have not yet logged in
FiftyOne 0.21.1 ¶¶
Released June 30, 2023
App
-
Sidebar filters can now leverage indexes for improved performance! #3137
-
Optimized the App grid’s loading performance, especially for datasets with large samples #3137
-
Improved the usability of the field visibility modal #3154
-
Added support for visualizing Label fields stored within dynamic embedded documents #3141
-
Added support for coloring embeddings plots by list fields #3230
-
Added a
proxy_url
setting to the App config that allows for overriding the server URL #3222 -
Added support for configuring custom colors for sample tags #3171
-
Fixed a bug that caused the point cloud selector from disappearing #3200
-
Fixed various minor bugs when viewing dynamic groups in the App #3172
Core
-
Methods like
tag_labels()
,select_labels()
,export()
, anddraw_labels()
now automatically detect and properly handle label fields stored within embedded documents #3152 -
All
Document
objects now supportdoc["nested.field"]
key access #3152 -
Dynamic field detection now automatically detects dynamic attributes of list fields with inhomogeneous values #3152
-
Fixed a bug that would cause dynamic field schema methods to erroneously declare subfields of
Polyline
points #3152 -
Fixed a bug when applying
merge_samples()
to video dataset views #3159
Plugins
-
Added support for rendering markdown-style tables using the Operator table view type #3162
-
Added support for multiselect to the Operator string type #3192
-
Added
--all
flags to plugin CLI methods #3177 -
Placements and on-startup hooks are now omitted for disabled Operators #3175
-
Fixed a bug with
read_only=True
mode for certain Operator view types #3225
Annotation
- Added support for CVAT’s
frame_start
,frame_stop
, andframe_step
options when creating annotation tasks #3181
FiftyOne Teams 1.3.0 ¶¶
Released May 31, 2023
Includes all features from FiftyOne 0.21.0, plus:
General
-
Added a Management SDK subpackage for programmatically configuring user roles, dataset permissions, plugins, and more
-
Added support for authenticated API connections when using the Python SDK that respect user roles, dataset permissions, etc
-
Logins now automatically redirect back to the page you were trying to access
-
Improved non-persistent dataset cleanup behavior
-
Fixed a bug that could cause the media cache to erroneously garbage collect large files while they are downloading
-
Fixed a bug when cloning views into new datasets via the Teams UI
Admin
-
Added support for uploading and managing plugins via the Teams UI
-
Added support for cross account IAM roles when configuring cloud storage credentials
-
Fixed a bug that prevented Azure/MinIO credentials uploaded via the Teams UI from being properly recognized by the App
FiftyOne 0.21.0 ¶¶
Released May 31, 2023
App
-
Added support for viewing and executing operators in the App! #2679
-
Added support for creating dynamic groups in the App #2934
-
Added support for overlaying multiple point cloud slices in Looker3D #2912
-
Added support for customizing the App color scheme via a new color scheme modal #2824
-
Added support for configuring field visibility in the App’s sidebar #2924, #3024
-
Added support for visualizing
Label
fields stored within top-level embedded document fields #2885 -
Optimized App loading for datasets with large sample documents #3139
-
Optimized App routes that involve synchronous computations #3066
-
Fixed a URL filepath bug that could cause orthographic projections to fail to render #3122
-
Fixed a layout bug when working with long brain keys in the Embeddings panel #3026
-
Added a welcome message that displays when the App is launched for the first time with a new FiftyOne version #3092
Core
-
Added support for creating dynamic grouped views #2475
-
Added support for storing default color schemes for datasets #2824
-
Added support for selecting/excluding fields via dynamically defined filters via
select_fields()
andexclude_fields()
#2898 -
Added support for evaluating keypoints #2776, #2928
-
Added support for computing DICE score when evaluating segmentations #2777, #2901
-
Added a new
list_schema()
aggregation for inferring the contents of nested list fields #2882 -
Added support for declaring dynamic nested list fields #2882
-
Handling missing label fields when deleting labels #2918
-
Only match .txt files when reading YOLO labels #3127
-
Improved behavior of
transform_images()
andtransform_videos()
utilities when processing media in-place #2931 -
Added utils and helpful warnings that advise how to patch broken saved views and runs #2970, #2971
-
Replaced
pkg_resources
withimportlib.metadata
#2930
Plugins
Annotation
-
Added support for CVAT 2.4 #2959
-
Added support for importing/exporting instances when using the Label Studio integration #2706, #2917
-
Added support for importing multiclass classifications from Scale #3117
-
Updated Scale integration to assume that imported line annotations are not closed shapes #3123
-
Fixed broken Scale docs links and unlabeled annotation task support #2916
Zoo
- Added the Sama-COCO dataset to the zoo! #2904
Tutorials
- Updated detection mistakes tutorial to avoid unnecessarily resetting the App #3034
FiftyOne Teams 1.2.1 ¶¶
Released April 5, 2023
Includes all features from FiftyOne 0.20.1, plus:
General
-
When your session expires, you are now automatically logged out rather than being presented with a cryptic server error
-
Improved the accuracy of size estimates when exporting filepaths and/or tags from the Teams UI
Admin
- Added support for uploading Azure storage credentials for your deployment via
the
Settings > Cloud storage
page
SDK
- Added support for working with media in Azure cloud storage. Refer to this section to see how to provide your storage credentials
Deployment
-
Added support for deploying into Microsoft Azure environments
-
Fixed a bug that prevented the dataset page from loading for deployments running MongoDB 4.4
FiftyOne 0.20.1 ¶¶
Released April 5, 2023
App
-
Added support for storing datetimes as field metadata and viewing them in the App’s field tooltip #2861
-
Fixed a bug when pulling color-by data for sample embeddings plots when viewing patches in the sample grid #2846
-
Fixed a bug that prevented the sample grid from refreshing when composing multiple sidebar filters #2849
-
Fixed a bug that prevented field-specific mask targets from being recognized when rendering segmentations in the App #2879
-
Fixed a bug when rendering heatmaps stored as images on disk #2872, #2880
Core
-
Added support for dynamically inferring fields on embedded lists and documents #2863, #2882
-
Added support for listing datasets matching a glob pattern #2868
-
Improved the robustness of
merge_samples()
when cleaning up after a failed merge #2844 -
Using new libraries for ndjson and archive extraction #2864
-
Fixed a bug that prevented text similarity searches from succeeding when GPU is available #2853
-
Fixed a bug where
stats()
would report the wrong size for dataset views that select/exclude fields on MongoDB 5.2 or later #2840 -
Fixed a bug with dynamic schema expansion of list fields #2855
-
Fixed a bug when merging video samples into a grouped dataset that did not previously contain videos #2851
-
Fixed a validation bug when importing COCO datasets whose description is not a string #2848
Documentation
-
Updated the source URLs for the Caltech-101 and Caltech-256 datasets #2841
-
Fixed a typo in the Caltech-256 dataset documentation #2842
FiftyOne Teams 1.2 ¶¶
Released March 22, 2023
Includes all features from FiftyOne 0.20.0, plus:
Admin settings
-
Admins who use SSO to authorize new users to auto-join their FiftyOne Teams deployment can now configure the default role for those users
-
Admins can now configure the default access level that Members receive on newly created datasets Dataset page
Dataset page
-
Added support for viewing Segmentation and Heatmap data stored as images in the cloud in the App
-
Added support for exporting one or more fields of a dataset in CSV format through the Teams UI
-
Stack traces for unhandled errors are now presented directly in the App so that users can self-diagnose issues
Deployment
- Added support for sharded databases
FiftyOne 0.20.0 ¶¶
Released March 22, 2023
News
-
Added support for querying by arbitrary text prompts in the App! #2633
-
Released a Qdrant integration for native text and image searches on FiftyOne datasets!
-
Released a Pinecone integration for native text and image searches on FiftyOne datasets!
App
-
Switched the default sidebar mode to
fast
#2714 -
Refactored sample/label tags in the App so that they are treated the same as any other list field #2557
-
Added support for visualizing orthographic projection images for point cloud datasets/slices #2660
-
Added a filter/selection indicator to the title of all Panels that can be clicked to clear the Panel’s current state #2652
-
Any selection state associated with a Panel is now automatically cleared when the Panel is closed #2652
-
Added a button to the saved view selector for clearing the current view #2661
-
Added support for maximizing/hiding individual panels of the grouped modal #2688
-
Added support for switching between multiple point cloud slices #2675
-
Added keyboard shortcuts for opening Panels directly in split mode #2663
-
Upgraded Looker3D controls #2753
-
Upgraded the modal’s JSON viewer #2677
-
Selected labels are not reset after applying a similarity search #2820
-
Stack traces for unhandled errors are now presented directly in the App so that users can self-diagnose issues #2795, #2797
-
Improved error handling when loading invalid/missing brain results in the Embeddings panel #2651, #2790
-
More intuitive behavior when combining Embedding panel selections and sidebar filters #2741
-
Ensure that URL is updated when loading saved views via a Python session #2740
-
Switched to wildcard-based string matching in the sidebar #2736
-
Plugins can now load components and utilities from runtime instead of compiling their own #2680
-
Stability improvements when loading and handling errors in plugins #2758
-
Informative error messages are now displayed when visualization results fail to load in the Embeddings panel #2751
-
Resolved some edge cases when loading views with different schemas via Python sessions #2730
-
Fixed a bug that would cause saving views to intermittently fail #2667
-
Fixed a bug when using saved views with Python <3.9 in the App #2676, #2728
-
Fixed a bug that could cause App crashes when loading
SelectGroupSlices
stages in the view bar #2669, #2743 -
Fixed a bug that could cause App crashes when filtering keypoints #2774, #2779
-
Fixed a bug when lassoing patch embeddings with the Map panel open #2754
-
Fixed inconsistencies with selection, tagging, active slices, and sidebar stats in the modal for grouped datasets #2785, #2782, #2769, #2759, #2749, #2731
-
Fixed a bug when pressing enter twice in a label tag popover #2757
-
Fixed a bug where keyboard listeners in the modal would interfere with other input interactions #2786
-
Fixed a bug where some users would see erroneous scrollbars #2794
-
Fixed bugs when tagging labels in the grouped modal #2820
-
Fixed a bug when retrieving values for filter dropdowns in the grouped modal #2817
-
Fixed a bug that would raise an App error after deleting certain saved views #2801
-
Fixed the formatting of the
support
field in the modal sidebar for clip views #2800 -
Fixed a bug with URL rendering in the sidebar #2735
-
Fixed a bug when streaming filtered frame labels #2682, #2733
-
Fixed a bug when adding new tags to a selected sample or label #2703
-
Fixed a bug when matching by tags that contain spaces #2658
Core
-
Added support for querying by vectors and text prompts #2569
-
Upgraded the similarity index interface, including Qdrant and Pinecone support, and the ability to add/remove embeddings to an existing index #2792
-
Added support for storing and visualizing cuboids and rotated bounding boxes in the App #2296
-
Added support for evaluating 3D object detections #2486
-
Added a
to_trajectories()
view stage #1300 -
Added support for generating orthographic projection images for point cloud datasets/slices #2656
-
Added validation to
set_values()
#2770 -
Frame collections are now lazily created only when necessary #2727
-
Upgraded the document save implementation to only use upsert operations when explicitly required #2727
-
Added
_dataset_id
to all sample/frame documents in datasets #2711 -
Added a
save()
andsave_config()
methods toRunResults
#2696, #2772 -
Added support for renaming existing runs via new
rename_annotation_run()
,rename_brain_run()
, andrename_evaluation()
methods #2696 -
Added support for filtering by run type and config parameters when using
list_annotation_runs()
,list_brain_runs()
, andlist_evaluations()
#2696, #2772 -
Added an
add_group_slice()
method to declare new slices on grouped datasets #2727 -
Added support for controlling whether saved views and runs are imported/exported in FiftyOneDataset format #2806
-
Added support for negative integer mask targets #2686
-
Downward migrations for future-but-compatible versions of FiftyOne are now skipped rather than raising an error #2683
-
Fixed a bug when cloning datasets with run results #2772
-
Fixed a bug with the
dynamic=True
syntax for declaring dynamic fields on list documents #2767 -
Fixed a bug in deferred saves where filtered list updates were not being applied #2727
Annotation
- Added support for passing CVAT organization to annotation jobs #2716
Docs
-
Added documentation for working with point cloud-only datasets #2724
-
Added documentation for on-the-fly custom embedded document creation #2687
-
Fixed broken torchvision dataset links in the docs #2771
Zoo
Tutorials
-
Added a Point-E tutorial showcasing the 3D Visualizer’s capabilities in the context of building a 3D self-driving dataset #2818
-
Added a YOLOv8 tutorial #2755
-
Updated the media in the Open Images tutorial #2665
FiftyOne Teams 1.1.1 ¶¶
Released February 14, 2023
Includes all features from FiftyOne 0.19.1, plus:
Plugins
- Resolved a bug that prevented Teams deployments from recognizing installed plugins
FiftyOne 0.19.1 ¶¶
Released February 14, 2023
App
-
Fixed a bug when launching the App in Python 3.8 or earlier #2647
-
Fixed a bug that prevented launching the App in Databricks notebooks #2647
Core
- Fixed a bug in certain environments that prevented progress bars from rendering correctly #2647
FiftyOne Teams 1.1 ¶¶
Released February 9, 2023
Includes all features from FiftyOne 0.19.0, plus:
User roles
-
Renamed the existing Guest role to Collaborator
-
Added a new Guest role. Note that Guest is a view-only role and does not contribute to your license count. You can add unlimited Guest users to your deployment!
Homepage
- Added a Recent views widget to the homepage that shows the most recent saved views that you have viewed in the Teams UI
Dataset page
-
Added support for cloning the current view (including any filters, selections, etc) into a new dataset from the UI
-
Added support for exporting the current view to local disk or a cloud bucket in various formats (filepaths only, filepaths and tags, media only, labels only, media and labels)
Deployment
- Added support for deploying Teams into environments with proxy networks
FiftyOne 0.19.0 ¶¶
Released February 9, 2023
News
- FiftyOne Teams documentation is now publicly available! #2388
App
-
Added the Spaces framework #2524
-
Added native support for visualizing embeddings #2524
-
Refactored the histograms tab into a dedicated histograms panel #2524
-
Added support for loading and saving views #2461
-
Added support for visualizing
Segmentation
andHeatmap
masks stored on disk #2358 -
Added support for visualizing RGB segmentations #2483
-
Added retries for all network requests to improve stability #2406
-
Optimized the tagging menu #2368
-
Optimized sample tagging on video datasets #2440
-
Don’t refresh the background grid when applying tags in the modal #2594
-
Only show supported keys in the evaluations dropdown #2427
-
Fixed handling of None values when filtering numeric/list fields #2422, #2412, #2403
-
Never show expanded filter list for ID fields #2408
-
Ensure that the bookmark icon displays when extended selections exist #2366
-
Automatically clear sample selection after sorting by similarity #2595
-
Use consistent loading dots throughout the App #2321
-
Fixed a bug when filtering by custom embedded list fields #2407
-
Fixed bugs when screenshotting the App in notebook contexts #2398
-
Fixed bugs when launching the App in Databricks notebooks #2397
-
Show metadata for frame-level fields in the fields tooltip #2386
-
Fixed bugs when configuring plugin settings and modal media fields #2383
-
Fixed bugs with multiple media fields when loading views that exclude fields #2378, #2303
Core
-
Added support for programmatically configuring space layouts #2524
-
Added support for loading and saving views #2461
-
Added support for storing
Segmentation
andHeatmap
masks on disk #2301 -
Added support for RGB segmentations in
evaluate_segmentations()
#2483 -
Added a new
transform_segmentations()
utility #2483 -
Added support for declaring dynamic fields on generated views via
set_values()
#2513 -
Added support for importing and exporting datasets in CSV format #2616, #2450
-
Added support for importing and exporting directories of arbitrary media files #2605
-
Added a dedicated
clear_cache()
method for clearing a dataset’s run cache #2471 -
Updated all plotting methods, eg
scatterplot()
to always rely on sample/label IDs when pulling data for plots #2614 -
Updated
compute_patch_embeddings()
to store patch embeddings directly onLabel
objects when theembeddings_field
argument is provided #2626 -
Added support for passing frame-level fields directly to
export()
#2418 -
Added an optional
dynamic=True
flag toset_values()
#2372 -
Added support for declaring custom
Label
attributes viaset_values()
#2372 -
Adds a new
set_label_values()
utility for setting attributes onLabel
instances by their IDs #2372 -
Always update dataset’s
last_loaded_at
property when they are loaded #2375 -
Migrated runs to a separate database collection, for efficiency #2189
-
Added an
exact_frame_count()
utility for computing exact video frame counts #2373 -
Updated the 3D visualizer to use true centroid (not bottom-center) coordinates for 3D detections #2474
-
Added support for loading specific group slice(s) when using
iter_groups()
andget_group()
#2528 -
Added an
exclude_groups()
view stage #2451 -
Added support for importing annotations directly on grouped datasets #2349
-
Added a
group_collections()
utility for merging multiple collections into a grouped dataset #2332 -
Added support for converting an existing dataset into a grouped dataset via
set_values()
#2332 -
Added support for deleting grouped fields when the dataset contains only one media type #2332
-
Updated
Dataset.stats()
to include media from all slices of grouped datasets #2635 -
Fixed a bug when calling
to_frames()
on a view that filters the frames of the input dataset #2361 -
Fixed some bugs when passing multiple aggregations with the same field name and type to
aggregate()
#2617 -
Fixed a bug when manually unwinding list fields in aggregations #2608
-
Fixed a bug when loading datasets with CVAT attributes stored in VOC format #2359
-
Fixed a bug in default sidebar group expansion #2441
Annotation
-
Added support for CVAT 2.4 #2597
-
Added support for providing custom task names for CVAT tasks #2353
-
Fixed a bug when checking if CVAT projects exist #2491
-
Fixed a bug when checking if CVAT tasks exist #2070
Zoo
-
Added Open Images V7 to the zoo #2446
-
Updated the KITTI multiview and quickstart-groups datasets to not use legacy 3D visualizer settings #2474
-
Added support for filtering datasets when using
list_zoo_datasets()
#2448
Docs
-
Added detailed plugin documentation #2442
-
Added documentation for converting between common label formats #2498
-
Added a pandas vs FiftyOne tutorial #2310
-
Added a pandas vs FiftyOne cheat sheet #2329
-
Added a FiftyOne terminology cheat sheet #2484
-
Added a view stage cheat sheet #2452
FiftyOne Teams 1.0 ¶¶
Released November 8, 2022
Includes all features from FiftyOne 0.18.0, plus:
News
- FiftyOne Teams is now generally available, read more here!
FiftyOne 0.18.0 ¶¶
Released November 8, 2022
App
-
Significantly optimized the performance of the sidebar by lazily computing statistics only for currently visible fields #2191
-
Added new sidebar modes with updated default behavior that further optimizes the performance of the App for large datasets #2191
-
Added support for configuring the sidebar mode dynamically in the App and programmatically on a per-dataset basis #2191
-
Added support for programmatically configuring sidebar groups and default expansion states on a per-dataset basis #2190
-
Added support for viewing field-level descriptions via a new field tooltip #2216
-
Added support for filtering by and viewing stats for custom embedded document attributes #1825
-
Added a new light mode option! #2156
-
Improved responsiveness of the sidebar when toggling fields on and off #2247
-
Improved responsiveness and state management of the view bar #2230
-
Restored the ability to shift-select multiple samples in the grid view #2110
-
Fixed an issue that could cause unselected label fields to be inadvertently tagged when using the label tagging UI #2121
-
Fixed an issue that would prevent label tags applied on patch views in the tagging UI from persisting to the underlying dataset #2113
-
Fixed an issue that could arise when loading a group dataset with sparse alternate media fields #2164
-
Fixed some issues with datetime rendering and timezone handling #2111, #2112
Core
-
Added support for declaring custom dynamic attributes on datasets! #1825
-
Added support for storing field-level metadata on datasets #2216
-
Added native support for installing on Apple Silicon with MongoDB 6 #2165
-
Dataset creation using default naming is now multiprocess-safe #2097
-
Optimized the implementation of tagging samples and labels #2203, #2208
-
Optimized the implementation of
select()
,select_by()
, andselect_groups()
when performing ordered selections #2227 -
Updated the logic of
exists()
to be more intuitive for frame fields #2209 -
Upgraded server and MongoDB requirements to
pymongo>=3.11
,motor>=2.3
and newer pinned versions ofmongoengine
,starlette
, andstrawberry-graphql
#2215 -
Added support for modifying the filepaths of a frame view #2193
-
Improved the implementation of
merge_samples()
and related methods to safely cleanup in case of failed merges #2135 -
Fixed some bugs that could occur when creating frame views into grouped collections #2144
-
Fixed a bug when using
select_by()
withObjectId
fields #2140 -
Added an option to import annotation IDs when loading data stored in COCO format #2122
-
Added support for including the export directory in the
dataset.yaml
file generated by YOLOv5 exports #2114
Annotation
-
Updated the default CVAT endpoint to https://app.cvat.ai #2228
-
Fixed a bug that would cause annotation runs involving unlabeled samples to crash when using the Label Studio backend #2145
Zoo
- Added support for using CUDA devices when running the CLIP model from the zoo #2201
FiftyOne 0.17.2 ¶¶
Released September 20, 2022
App
- Fixed a backward compatibility bug when connecting to older database versions #2103
FiftyOne 0.17.1 ¶¶
Released September 20, 2022
Core
- Removed
TypedDict
usage introduced in v0.17.0 that is not supported in Python 3.7 #2100
FiftyOne 0.17.0 ¶¶
Released September 19, 2022
App
-
Added support for visualizing grouped datasets in the App #1765
-
Added support for visualizing point cloud samples in the modal #1765
-
Added support for visualizing and interacting with
GeoLocation
data in a new Map panel #1976 -
Added initial support for custom App plugins #1765
-
Added support for configuring multiple media fields #1765
-
Fixed Google Colab screenshotting and cell updates #2069
Core
-
Added support for grouped datasets, e.g., multiple camera view scenes #1765
-
Added support for point cloud samples in grouped datasets #1765
-
Added an
app_config
property to datasets for configuring App behavior on a per-dataset basis #1765 -
Added an optional
rel_dir
parameter toexport()
anddraw_labels()
#2060 -
Added an optional
use_dirs=True
parameter toexport()
that causes metadata to be exported in per-sample/frame JSON files #2028 -
Updated the COCO importer to load all available label types by default #1869
-
Fixed a bug when passing
ordered=True
toselect_by()
#2059 -
Fixed an error that would occur when storing custom embedded documents on dynamic label attributes #2051
-
Fixed a
match_frames()
bug that caused all frames to be included, even if the view filters the frames #2029
Docs
Annotation
-
Fixed a bug that occurred when checking if tasks exist on CVAT v2 servers #2070
-
Fixed an error that occurred when deserializing Label Studio annotation results #2074
Zoo
-
Added clip-vit-base32-torch to the model zoo! #2072
-
Added the Quickstart Groups dataset to the dataset zoo! #1765
-
Added the KITTI Multiview dataset to the dataset zoo! #1765
FiftyOne 0.16.6 ¶¶
Released August 25, 2022
App
-
Fixed a bug that caused the App to break when sample tags contained
.
#1924 -
Fixed search results alignment #1930
-
Fixed App refreshes after view changes had occurred from the view bar #1931
-
Fixed classification confusion matrix connections #1967
Core
-
Added a save context that enables efficient batch edits of datasets and views #1727
-
Added Plotly v5 support #1981
-
Added a quantiles aggregation #1937
-
Added support for writing transformed images/videos to new locations in the
transform_images()
andtransform_videos()
functions #2007 -
Added support for configuring the package-wide logging level #2009
-
Added more full-featured support for serializing and deserializing datasets, views, and samples via
to_dict()
andfrom_dict()
#1922 -
Added support for dynamic attributes when performing coerced exports #1993
-
Introduced the notion of client compatibility versions #2017
-
Added support for serializing aggregations #1911
-
Added
weighted_sample()
andbalanced_sample()
utility methods #1925 -
Added an optional
new_ids=True
option toDataset.add_collection()
that generates new sample/frame IDs when adding the samples #1927 -
Added support for the
path
variable indataset.yaml
of YOLOv5 datasets #1903 -
Fixed a bug that prevented using
set_values()
to set frame-level label fields #1922 -
Fixed automatic declaration of frame fields when computing embeddings on a frame view #1922
-
Fixed a regression that caused label ID fields to be returned as
ObjectID
#1922 -
Fixed a bug that allowed default frame fields to be excluded #1922
-
ClipsView
instances will now report theirmetadata
type asVideoMetadata
#1922 -
Fixed
load_evaluation_view()
whenselect_fields
isTrue
#1922 -
Fixed boolean field parsing when declaring fields #1922
-
Fixed a bug that caused nested embedded documents to corrupt datasets #1922
-
Fixed a bug that prevented assignment of array-valued dynamic attributes to labels #1922
Annotation
-
Added a new Label Studio integration! #1848
-
Optimized loading CVAT annotations and performing operations on
CVATAnnotationResults
#1944 -
Upgraded the
AnnotationAPI
interface #1997 -
Fixed loading group IDs in CVAT video tasks #1917
-
Fixed uploading to a CVAT project when no label schema is provided #1926
FiftyOne 0.16.5 ¶¶
Released June 24, 2022
App
FiftyOne 0.16.4 ¶¶
Released June 21, 2022
App
- Fixed frame fields omission in the sidebar #1899
FiftyOne 0.16.3 ¶¶
Released June 20, 2022
App
-
Added hotkey to hide overlays while pressed #1779
-
Changed expanded view ESC sequence to reset zoom before frame scrubbing #1810
-
Fixed the expanded view tooltip when a keypoint has
nan
point(s) #1828 -
Fixed initial loading of keypoint skeletons #1828
-
Fixed
Classifications
rendering in the grid #1828 -
Fixed App loads for environments with old (
<=v0.14.0
) datasets that have yet to be migrated #1829 -
Fixed spurious loading states from tagging in the expanded view #1834
-
Fixed a bug that caused frame classifications to be incorrectly rendered in the grid #1877
-
Fixed active (checked) field persistence in the grid when changing views #1878
-
Fixed views and actions that contain
BSON
#1879 -
Fixed
JSON
rendering in the expanded view for nested data #1880 -
Fixed selection and expansion for bad media files #1882
-
Fixed
Other
plot tabdate
anddatetime
fields withNone
values #1817 -
Increased results from 10 to 200 for search selectors #1875
-
Fixed App issues related to dataset deletion and dataset schema changes #1875
Core
-
Added
skeleton
andskeleton_key
to the OpenLABEL image and video importers #1812 -
Fixed a database field issue in
clone_frame_field()
andclone_sample_field()
, #1824 -
Fixed using zoo models with the newest version of Torchvision #1838
-
Added
classifications_to_detections()
for converting classifications to detections #1842 -
Set forking as the default for macOS multiprocessing #1844
-
Added
dataset.tags
for organizing datasets #1845 -
Added functionality to explicitly define classes for evaluation methods #1858
-
Fixed
tfrecord
shard enumeration, i.e. zero indexing #1859 -
Added support for label field dicts when importing labeled datasets #1864
-
Removed non-XML or non-TXT files from CVAT, KITTI, CVATVideo #1884
Annotation
-
Updated CVAT task and project processing #1839
-
Added the ability to upload and download group ids from CVAT #1876
FiftyOne 0.16.2 ¶¶
Released June 2, 2022
App
-
Added explicit error handling when
FFmpeg
is installed so it is made clear to the user that it must be installed to use video datasets in the App #1801 -
Fixed range requests for media files, e.g. mp4s, on the server #1786
-
Fixed tag rendering in the grid #1808
-
Fixed tagging selected labels in the expanded view #1808
-
Fixed
session.view = None
#1808 -
Fixed issues with patches views #1808
Core
- Fixed errors related to session-attached plots #1808
FiftyOne 0.16.1 ¶¶
Released May 26, 2022
App
-
Fixed a bug that caused label rendering to be delayed until statistics were loaded #1776
-
Fixed the
v0.16.0
migration that prevents label lists, e.g.Detections
from showing their label filters when expanded in the sidebar #1785 -
Fixed expanded samples in clips views which appeared to be empty #1790
-
Fixed “Sort by similarity” with a
dist_field
#1790 -
Fixed “Color by” for simple values (classifications, tags, etc.) #1790
-
Fixed changing datasets when sort by similarity is set #1790
-
Fixed mask and map coloring #1790
-
Fixed fortran array handling for masks and maps #1790
Core
- Fixed a formatting issue when raising an exception because unsupported plotting backend was requested #1794
FiftyOne 0.16.0 ¶¶
Released May 24, 2022
App
-
Added routing, e.g.
/datasets/:dataset-name
#1713 -
Redesigned the sidebar to support custom grouping and sorting of fields and tags #1713
-
Added graceful handling of deleted datasets in the App #1713
-
Fixed epoch rendering #1713
-
Fixed empty heatmap rendering #1713
-
Added stack traces to the new error page #1713
-
Fixed
ESC
when viewing single frame clips #1713 -
Fixed handling of unsupported videos #1713
-
Added support for opening the expanded view while sample(s) are selected #1713
-
Fixed keypoint skeleton rendering for named skeletons of frame fields #1713
Core
-
Fixed edge cases in
clone_frame_field()
,merge_samples()
, andrename_frame_field()
#1749 -
Fixed a bug that would cause non-persistent datasets to be prematurely deleted #1747
-
Fixed image lists for the
image_path
parameter when importing GeoTIFF datasets #1728 -
Added a
find_duplicates()
utility to automatically find duplicate objects based on IoU #1714
FiftyOne 0.15.1 ¶¶
Released April 26, 2022
App
-
Added support for rendering keypoint skeletons #1601
-
Added support for rendering per-point confidences and other custom per-point attributes on
Keypoint
objects #1601 -
Added support for rendering Fortan-ordered arrays #1660
Core
-
Added support for storing keypoint skeletons on datasets #1601
-
Added a
filter_keypoints()
stage that applies per-point
filters toKeypoint
objects #1601 -
Added support for rendering keypoints skeletons and missing keypoints to
draw_labels()
#1601 -
Added support for per-point confidences and other custom per-point attributes on
Keypoint
objects. See this section for details #1601 -
Added a
concat()
view stage that allows for concatenating one collection onto another #1662 -
Non-persistent datasets are now automatically deleted when using a custom
database_uri
#1697 -
Added a
database_admin
config setting that can control whether database migrations are allowed. See this page for details #1692 -
Added a
database_name
config setting that allows for customizing the MongoDB database name #1692 -
Classification
attributes are now exported as tag attributes when exporting in CVATImageDataset format #1686 -
The
iscrowd
attribute is now always populated when exporting in COCO format #1664 -
Fixed a
KeyError
bug when loading dataset with relative paths on Windows #1675
Brain
-
Added
fiftyone-brain
wheels for Python 3.10 -
Added support for installing
fiftyone-brain
on Apple Silicon
Annotation
- Fixed a
CSRF Failed
error when connecting to some CVAT servers #1668
Integrations
- Updated the Lightning Flash integration to support Flash versions 0.7.0 or later #1671
Zoo
- Added the Families in the Wild dataset to the FiftyOne Dataset Zoo! #1663
FiftyOne 0.15.0 ¶¶
Released March 23, 2022
App
- Fixed
Regression
rendering in the visualizer #1604
Core
-
Added a
Dataset.delete_frames()
method that allows for deleting frames by ID #1650 -
Added a
keep_fields()
method toDatasetView
and its subclasses #1616 -
Added a
lines()
method that allows for plotting lines whose scatter points can be interactively selected via the typical interactive plotting workflows #1614 -
Added an optional
force_rgb=True
syntax when importing/exporting/creating TF records using all relevant methods infiftyone.utils.tf
#1612 -
Added support for passing additional kwargs to the
fiftyone convert
CLI command #1612 -
Added support for annotating video-level labels when using
draw_labeled_videos()
#1619 -
Fixed bug in
from_images_dir()
where attempting to load 4-channel images errored even ifforce_rgb=True
#1632 -
Fixed a bug that prevented frames from being attached to video collections when aggregating expressions that involve both
Sample
-level andFrame
-level fields #1644 -
Added support for importing image and video datasets in OpenLABEL format #1609
Annotation
-
Added support for CVATv2 servers when using the CVAT backend #1638
-
Added an
issue_tracker
argument toannotate()
when using the CVAT backend #1625 -
Added a
dest_field
argument toload_annotations()
which allows you to specify the name of the field to which to load annotations #1642 -
Added a property to annotation backends that decides whether to allow annotation of video-level labels #1655
-
Fixed a bug where views that dynamically modify label strings would result in labels not being uploaded to the annotation backend #1647
Docs
-
Added documentation for defining custom
EmbeddedDocument
andDynamicEmbeddedDocument
classes #1617 -
Added documentation about boolean view indexing to the user guide #1617
-
Added a recipe for creating views and view expressions #1641
FiftyOne 0.14.4 ¶¶
Released February 7, 2022
News
- With support from the ActivityNet team, FiftyOne is now a recommended tool for downloading, visualizing, and evaluating on the Activitynet dataset! Check out this guide for more details
App
-
Fixed encoding of sample media URLs so image and video filepaths with special characters are supported
-
Fixed an error that would occur when rendering empty
Keypoint
instances
Core
-
Added an official Dockerfile
-
Changed the default implementation of
to_frames()
to assume that the user has already sampled the frames offline and stored their locations in afilepath
field of eachFrame
in their video dataset. See this section for more details -
Updated
DatasetView.save()
to save changes to (only) the samples in the view to the underlying dataset -
Added a new
DatasetView.keep()
method that deletes any samples that are not in the view from the underlying dataset -
Added
InteractivePlot.save()
andViewPlot.save()
methods that can be used to save plots as static images -
Added support for populating query distances on a dataset when using
sort_by_similarity()
to query by similarity -
Added a
instances_to_polylines()
utility that converts instance segmentations toPolylines
format -
Added support for frame labels to all conversion methods in the
fiftyone.utils.labels
module -
Updated the implementation of
Detection.to_polyline()
so that all attributes are included rather than just ETA-supported ones -
Added support for including empty labels labels via an
include_missing
keyword argument inadd_yolo_labels()
-
Added a
download_youtube_videos()
utility for efficiently and robustly downloading videos or specific segments from YouTube -
Added a
skip_failures
flag totransform_images()
andtransform_videos()
-
Added
shuffle
andseed
parameters toFiftyOneImageLabelsDatasetImporter
andFiftyOneVideoLabelsDatasetImporter
-
Added an
include_all_data
parameter toYOLOv5DatasetImporter
-
Resolved a bug that would previously cause an error when writing aggregations on video datasets that involve applying expressions directly to
"frames"
Annotation
-
Added support for importing and exporting sample-level tags in CVAT format
-
Fixed a bug that prevented existing label fields such as
Detections
that can contain multiple annotation types (boxes or instances) from being specified in calls toannotate()
-
CVAT login credentials are no longer included in exception messages
Zoo
-
Added ActivityNet 100 to the dataset zoo!
-
Added ActivityNet 200 to the dataset zoo!
-
Added Kinetics 400 to the dataset zoo!
-
Added Kinetics 600 to the dataset zoo!
-
Added Kinetics 700 to the dataset zoo!
-
Added Kinetics 700-2020 to the dataset zoo!
FiftyOne 0.14.3 ¶¶
Released January 13, 2022
Core
-
Added hollow support for 32-bit systems (a database_uri must be used in such cases)
-
Added support for indexing into datasets using boolean arrays or view expressions via new
dataset[bool_array]
anddataset[bool_expr]
syntaxes -
Added support for registering custom
EmbeddedDocument
classes that can be used to populate fields and embedded fields of datasets -
Added support for importing and exporting
confidence
in YOLO formats -
Added support for directly passing a
filename -> filepath
mapping dict to thedata_path
parameter to dataset importers -
Added graceful casting of
int
-like andfloat
-like values likenp.float(1.0)
to their respective Python primitives for storage in the database -
Changed the default to
num_workers=0
when using methods likeapply_model()
to apply Torch models on Windows, which avoids multiprocessing issues -
Fixed a bug when calling
evaluate_detections()
with both theclasses
andcompute_mAP=True
arguments provided -
Fixed a bug that could arise when importing segmentation data from a COCO JSON that contains objects with
[]
segmentation data -
Fixed a bug in expressions containing near-epoch dates
-
Added support for setting frame-level fields by passing frame number dicts to
set_values()
-
Fixes a bug that prevented
set_values()
from working as expected whenkey_field="id"
argument is used -
Fixed a bug that occurred when computing patch embeddings defined by polylines
-
Added decision thresholds to the tooltips of PR/ROC curves plotted via the following methods:
Brain
-
Graceful handling of missing/uncomputable embeddings in
compute_uniqueness()
-
Graceful handling of edge cases like
fraction <= 0
infind_duplicates()
, -
Removed a spurious warning message that was previously logged when computing patch embeddings for a collection containing samples with no patches
Annotation
-
Added a new Labelbox integration!
-
Added an
import_annotations()
method for importing existing CVAT projects or task(s) into FiftyOne -
Added support for configuring the size of CVAT tasks via a new
task_size
parameter -
Added graceful handling of deleted tasks when importing annotations from CVAT via
load_annotations()
-
Added an
unexpected
parameter that provides a variety of options for handling unexpected annotations returned by the CVAT API -
Added support for passing request headers to the CVAT API
-
Fixed a bug that occurred when importing single frame track segments from CVAT
Zoo
-
Fixed a regression in
fiftyone==0.14.1
that prevented zoo datasets that use the Torch backend from being downloaded -
Added the following TF2 models to the Model Zoo!
FiftyOne 0.14.2 ¶¶
Released November 24, 2021
App
- Improved mask loading times for
Segmentation
,Heatmap
, andDetection
labels with instance masks
Core
-
Optimized image metadata calculation to read only the bare minimum byte content of each image
-
Improved handling of relative paths and user paths in config settings and environment variables
-
Optimized database I/O and improved the helpfulness of warnings/errors that are generated when applying models via
apply_model()
,compute_embeddings()
, andcompute_patch_embeddings()
-
Resolved a memory leak that could occur when computing predictions/embeddings for very large datasets with Torch models
Brain
-
Added the
points
keyword argument tocompute_visualization()
for providing your own manually computed low-dimensional representation for use with interactive embeddings plots -
Graceful handling of missing/uncomputable embeddings in
compute_visualization()
andcompute_similarity()
-
Added checks that occur at the start of all methods to ensure that any required dependencies are installed prior to performing any expensive computations
Annotation
-
Changed CVAT uploads to retain original filenames
-
A helpful error is now raised when the
"frames."
prefix is omitted from label fields when requesting spatial annotations on video datasets
Zoo
FiftyOne 0.14.1 ¶¶
Released November 15, 2021
App
-
Optimized grid loading for collections that do not have metadata computed
-
Fixed filtering by label for Colab notebooks
-
Fixed a bug where the App would crash if an image or video MIME type could not be inferred from the filepath, e.g. without an extension
-
Fixed first pixel coloring for segmentations
-
Added graceful handling of nonfinites (
-inf
,inf
, andnan
)
Core
-
Fixed
clone()
for views with a parent dataset that has brain runs -
Fixed sampling frames when using
to_frames()
-
Fixed importing of
FiftyOneDataset
with run results -
Added a
Regression
label type -
Added a
random_split()
method -
Added support for negating
match_labels()
queries -
Added a
MaxResize
transform -
Added
image_max_size
andimage_max_dim
parameters toTorchImageModelConfig
-
Added support for non-sequential updates in
set_values()
-
Added a
compute_max_ious()
utility -
Added support for labels-only exports when working with
YOLOv4Dataset
andYOLOv5Dataset
formats -
Added
fiftyone.utils.beam
for parallel import, merge, and export operations with Apache Beam -
Added an
add_yolo_labels()
utility that provides support for adding YOLO-formatted model predictions to an existing dataset -
Added support for importing/exporting multilabel classifications when using FiftyOneImageClassificationDataset format
-
Fixed the
force_reencode
flag forreencode_videos()
-
Converted COCO and Open Images dataset downloads to use multithreading rather than multiprocessing
-
Updated evaluation confusion matrices to always include rows and columns for missing/other
Annotation
-
Added support for annotating multiple label fields in one CVAT task
-
Added an
allow_index_edits
parameter toannotate()
for disallowing video track index changes -
Improved label ID tracking in CVAT by leveraging CVAT’s server IDs in addition to
label_id
attributes -
Fixed a bug when annotating videos in CVAT with
None
label fields -
Fixed a bug when annotating new fields in CVAT
-
Fixed a bug when annotating non-continuous tracks in CVAT
-
Fixed a bug when annotating a track in CVAT that is present on the last frame of a video
-
Fixed a bug when annotating with
allow_additions=False
Docs
-
Added a section on adding model predictions to existing datasets to the user guide
-
Added explicit examples of labels-only imports and exports for all relevant datasets to the docs
-
Documented how class lists are computed when exporting in formats like YOLO and COCO that require explicit class lists
-
Documented the supported label types for all exporters
FiftyOne 0.14.0 ¶¶
Released October 15, 2021
App
-
Added support for visualizing heatmaps using either transparency or a customizable colorscale
-
Added a label opacity slider in both the sample grid and the expanded sample view
-
Added support for visualizing clips views
-
Added support for rendering and filtering
DateField
andDateTimeField
data -
Improved error handling in the grid and when streaming frames
-
Fixed a bug that caused incorrect label rendering for sparse frame labels in the video visualizer
-
Added a
default_app_address
setting to the FiftyOne config for restricting sessions to a hostname. See this page for more details
Core
-
Added a Heatmap label type
-
Added support for adding date and datetime fields to FiftyOne datasets
-
Added the
to_clips()
method for creating clips views into video datasets -
Added clip views sections to the App user guide page and dataset views user guide page
-
Added support for exporting video clips in labeled video formats
-
Added a
trajectories=True
flag tofilter_labels()
that allows for matching entire object trajectories for which a given filter matches the object in at least one frame of the video -
Added set operations
is_subset()
,set_equals()
,unique()
,union()
,intersection()
,difference()
, andcontains(all=True)
to the view expression API -
Added date operations
to_date()
,millisecond()
,second()
,minute()
,hour()
,day_of_week()
,day_of_month()
,day_of_year()
,month()
, andyear()
to the view expression API -
Missing ground truth/predictions are now included by default when viewing confusion matrices for detection tasks
Annotation
-
Added support for specifying per-class attributes when defining a label schema for an annotation task
-
Added support for specifying whether labels can be added, deleted or moved and whether certain label attributes are read-only when configuring an annotation task
-
Added support for respecting keyframe information when adding or editing video annotations
-
Fixed a 0-based versus 1-based frame numbering bug when importing and exporting labels in CVAT video format
-
Added support for adding/editing bounding box shapes (not tracks) if desired when annotating video frames using the CVAT backend
-
Fixed a bug that prevented importing of video annotations from the CVAT backend that involved the splitting or merging of object tracks
-
Added a
project_name
parameter that allows for creating annotation tasks within a new project when using the CVAT backend -
Added support for specifying a list of task assignees when creating video annotation tasks (which generate one task per video) using the CVAT backend
-
Fixed a bug when adding/editing boolean attributes in an annotation task using the CVAT backend
-
Added a new
occluded
attribute type option that links an attribute to the builtin occlusion icon when annotating label attributes using the CVAT backend
FiftyOne 0.13.3 ¶¶
Released September 22, 2021
App
-
Improved the efficiency of loading label graphs for fields with many distinct values
-
Fixed some audio-related bugs when viewing video samples with audio channels
-
Fixed a bug that prevented boolean App filters from working properly
Core
-
Added support for importing/exporting segmentation masks with greater than 256 classes when working with the ImageSegmentationDirectory format
-
Added support for importing GeoTIFF images via a new GeoTIFFDataset format
-
Added new
split_labels()
andmerge_labels()
methods that provide convenient syntaxes for moving labels between new and existing label fields of a dataset -
Added
ensure_frames()
andclear_frames()
methods that can be used to conveniently initialize and clear the frames of video datasets, respectively -
Added support for using a MongoDB dataset whose version is not explicitly supported
-
Removed the
opencv-python-headless
maximum version requirement -
Fixed a race condition that could prevent callbacks on interactive plots from working properly on sufficiently large datasets
Annotation
-
Added support for annotating semantic segmentations and instance segmentations using the CVAT backend
-
Added support for annotating polylines using the CVAT backend
-
Added support for immutable attributes when annotating object tracks for video datasets using the CVAT backend
-
Exposed the
use_cache
,use_zip_chunks
, andchunk_size
parameters when uploading annotations via the CVAT backend -
Fixed a bug that prevented multiple imports of the same annotation run from working as expected when a label is deleted but then later re-added
-
Fixed a bug that prevented annotations for new label fields of video datasets from being imported properly
-
Fixed a bug that would cause unsuppoted shapes such as polygons with less than 3 vertices to be deleted when editing existing labels with the CVAT backend
FiftyOne 0.13.2 ¶¶
Released September 3, 2021
App
-
Improved aggregation queries resulting in ~10x faster statistics load times and time-to-interaction in the Fields Sidebar!
-
Optimized in-App tagging actions
-
Fixed count inconsistencies for large sets of
StringField
results in the Fields Sidebar
Core
-
Added support for providing compound sort criteria when using the
sort_by()
stage -
Added support for configuring the wait time when using
Session.wait()
to block execution until the App is closed, including support for serving forever -
Fixed errors experienced by Windows users when running FiftyOne APIs that involved multiprocessing
-
Resolved errors that could occur when importing CVAT XML files with empty-valued attributes in their schema and/or individual labels
-
Added support for importing CVAT-style attributes when loading labels in COCO and VOC formats
FiftyOne 0.13.1 ¶¶
Released August 25, 2021
App
- Fixed
id
rendering in the grid when theid
checkbox is active
Annotation
- Fixed a bug that could cause mismatches between media and their pre-existing labels when uploading data to CVAT for annotation whose source media lives in multiple directories
FiftyOne 0.13.0 ¶¶
Released August 24, 2021
App
-
Added support for visualizing and filtering list fields
-
Added support for visualizing segmentation masks of any integer type (uint8, uint16, etc.)
-
Improved handling of falsey field values in the fields sidebar and image vizualizer
-
Improved the JSON display format available from the expanded sample modal
-
Resolved an issue that caused some users to see duplicate App screenshots when calling
Session.freeze()
in Jupyter notebooks -
Fixed a bug that prevented users from being able to click left/right arrows to navigate between samples in the expanded sample modal when working in Jupyter notebooks
-
Fixed a bug where pressing the
ESC
key had no effect in the expanded sample modal when working with datasets with no label fields -
Fixed a bug that prevented the desktop App from launching when using source builds
Brain
-
Added new
find_unique()
,unique_view()
, andvisualize_unique()
methods to theSimilarityIndex
object returned bycompute_similarity()
that enable you to identify a maximally unique set of images or objects in a dataset -
Added new
find_duplicates()
,duplicates_view()
, andvisualize_duplicates()
methods to theSimilarityIndex
object returned bycompute_similarity()
that enable you to identify near-duplicate images or objects in a dataset -
Added a new
compute_exact_duplicates()
method that can identify exactly duplicate media in a dataset
Core
-
Added support for pip-installing FiftyOne on Apple Silicon Macs. Note that MongoDB must be self-installed in this case
-
Added support for using a self-installed MongoDB database
-
Added a
group_by()
view stage that allows for reorganizing the samples in a collection so that they are grouped by a specified field or expression -
Added a
selection_mode
property that enables users to change the behavior of App updates when selections are made in an interactive plot linked to labels. See this page for details -
Added support for YOLOv5 YAML files with multiple directories per dataset split
-
Added support for importing/exporting confidences via the
score
field when working with BDD format -
Fixed some Windows-style path bugs
Annotation
-
Added a powerful annotation API that makes it easy to add or edit labels on your FiftyOne datasets or specific views into them
-
Added a native CVAT integration that enables you to use the annotation API with CVAT
Docs
-
Added a CVAT annotation tutorial
-
Added a new example to the brain user guide that demonstrates unique and near-duplicate image workflows
-
Added an object embeddings example to the embeddings visualization section of the brain user guide
-
Added a new section to the plots user guide page explaining how to control the selection mode of interactive plots linked to labels
FiftyOne 0.12.0 ¶¶
Released August 10, 2021
App
-
Resolved performance issues with scrolling via grid virtualization. Toggling fields or selecting samples is no longer impacted by the amount of samples that have been loaded
-
Added the
Show label
option in the expanded sample view to toggle the label text above detections boxes -
Added support for zooming and panning in the expanded sample view
-
Added support for cropping and zooming to content in the expanded sample view
-
Added support for visualizing multiple segmentation frame fields simultaneously
-
Added label streaming to the video visualizer
-
Added volume and playback rate settings to the video visualizer
-
Added the
Crop to content
option in patches or evaluation patches views which crops samples to only show the labels that make up the patch. Defaults toTrue
-
Added count and filtered count values to categorical filters (
BooleanField
andStringField
fields)
Core
-
Added support for importing DICOM datasets
-
Added better default behavior for the
label_field
parameter when importing datasets using methods likefrom_dir()
and exporting datasets usingexport()
-
When adding samples to datasets,
None
-valued sample fields are now gracefully ignored when expanding dataset schemas
Docs
-
Added Using the image visualizer and Using the video visualizer sections to the App user guide
-
Added sections covering merging datasets and batch updates to the dataset user guide page
Zoo
- Patched an Open Images issue where
classes
orattrs
requirements were being ignored when loading a dataset with nomax_samples
requirement
FiftyOne 0.11.2.1 ¶¶
Released July 31, 2021
Zoo
-
Patched an Open Images issue where label files were not being downloaded when running a
load_zoo_dataset()
call that does not includeclasses
orattrs
options in an environment where Open Images has never been downloaded -
Patched loading of Cityscapes datasets
-
Patched loading of COCO datasets
FiftyOne 0.11.2 ¶¶
Released July 27, 2021
App
-
Added support for calling
Session.open_tab()
from remote Jupyter notebooks -
Fixed a bug that could cause
Session.wait()
to exit when the App’s tab is refreshed in the browser
Core
-
Added a
plotly<5
requirement, which prevents an issue that may cause callbacks for selection events in interactive plots to not trigger as expected when using Plotly V5 -
Added support for evaluating polygons and instance segmentations to
evaluate_detections()
. See this page for usage details -
Added support for creating patch views and evaluation patch views into the frames of video datasets
-
Greatly improved the efficiency of creating evaluation patch views
-
Added support for recursively listing data directories when loading datasets from disk
-
Added support for controlling whether/which object attributes are imported/exported in formats like COCO that support arbitrary object attributes
-
Updated all dataset import/export routines to support/prefer custom object attributes stored directly on
Label
instances as dynamic fields rather than in theattributes
dict -
The ImageSegmentationDirectory format now supports exporting segmentations defined by
Detections
with instance masks andPolylines
-
Added an
objects_to_segmentations()
utility for convertingDetections
with instance fields andPolylines
toSegmentation
format -
Added graceful handling of edges cases like empty views and missing labels to all evaluation routines
-
Added improved support for
creating
,viewing
, anddropping
dropping sample- and frame-level indexes on datasets -
Added additional indexes on patch and frames views to enable efficient ID-based queries
-
Added support for gracefully loading and deleting evaluations and brain methods executed in future versions of FiftyOne (e.g., after downgrading your FiftyOne package version)
-
Added an optional
progress
flag toiter_samples()
that renders a progress bar tracking the progress of the iteration -
Added support for installing FiftyOne on RHEL7 (Red Hat Enterprise Linux)
-
A helpful error message is now raised when a user tries to load a dataset from a future version of FiftyOne without following the downgrade instructions
-
Fixed a bug that prevented FiftyOne from being imported on read-only filesystems
-
Fixed a bug that prevented the proper loading of the Open Images V6 dataset after partial downloads involving only a subset of the available label types
Zoo
-
Added support for importing license data when loading the COCO-2014 and COCO-2017 datasets from the zoo
-
The inapplicable
classes
flag will now be ignored when loading the unlabeled test split of COCO-2014 and COCO-2017 -
Improved the partial download behavior of the Open Images V6 dataset when the optional
classes
andattrs
parameters are provided -
Fixed a bug that prevented Windows users from downloading the Open Images V6 dataset
FiftyOne 0.11.1 ¶¶
Released June 29, 2021
App
- Updated the expired Slack community link in the App menu bar
FiftyOne 0.11.0 ¶¶
Released June 29, 2021
News
- With support from the COCO team, FiftyOne is now a recommended tool for downloading, visualizing, and evaluating on the COCO dataset! Check out this guide for more details
App
- Fixed a bug that prevented
sample_id
fields from appearing in the App when working with frames and patches views
Core
-
Added various new parameters to methods like
Dataset.from_dir()
andSampleCollection.export()
, includingdata_path
,labels_path
, andexport_media
that allow for customizing the import and export of datasets. For example, you can now perform labels-only imports and exports -
Added new
Dataset.merge_dir()
andDataset.merge_importer()
methods for merging datasets from disk into existing FiftyOne datasets -
Added support for importing and exporting datasets in YOLOv5 format
-
Updated the
GeoJSONDataset
dataset type to support both image and video datasets -
Added support for
importing
andexporting
extra attributes in COCO format via a newextra_attrs
parameter
Zoo
-
Added support for partial downloads and loading segmentations to the COCO-2014 and COCO-2017 datasets
-
When performing partial downloads on the Open Images v6 Dataset involving a subset of the available classes, all labels for matching samples will now be loaded by default
Docs
-
Added a new page demonstrating how to use FiftyOne to download, visualize, and evaluate on the COCO dataset
-
Added a new page demonstrating how to use FiftyOne to download, visualize, and evaluate on the Open Images dataset
FiftyOne 0.10.0 ¶¶
Released June 21, 2021
News
- We’ve collaborated with the PyTorch Lightning team to make it easy to train Lightning Flash tasks on your FiftyOne datasets. Check out this guide for more details
Core
- Updated the
apply_model()
andcompute_embeddings()
methods to natively support applying Lightning Flash models to FiftyOne datasets!
Docs
- Added a new page demonstrating how to use the Lightning Flash integration
FiftyOne 0.9.4 ¶¶
Released June 15, 2021
App
-
Added support for matching samples by ID in the Filters Sidebar
-
Fixed a bug that caused the App to crash when selecting samples with the
Color by value
setting active -
Fixed a bug that caused the App to crash on some Windows machines by ensuring the correct MIME type is set for JavaScript files
Core
-
Improved the performance of importing data into FiftyOne by 2x or more!
-
Added a
to_frames()
view stage that enables on-the-fly conversion of video datasets into frames views -
Added
last()
,head()
, andtail()
methods to theFrames
class -
Added new
exclude_fields()
,select_frames()
, andmatch_frames()
view stages that enable selecting specific frames of video collections via IDs or filter expressions, respectively -
Added a new
match_labels()
view stage that enables matching samples that have specific labels without actually filtering the non-matching labels -
Added support for exporting image patches using
export()
by specifying an image classification dataset type and including a spatiallabel_field
that defines the image patches to extract -
Added support for automatically coercing single label fields like
Detection
into the corresponding multiple label field typeDetections
when usingexport()
to export in dataset formats that expect list-type fields -
Added support for executing an aggregation on multiple fields via the abbreviated syntax
ids, filepaths = dataset.values(["id", "filepath"])
-
Exposed the
id
field of all samples and frames in dataset schemas -
Added support for merging the elements of list fields via
Dataset.merge_samples()
andDocument.merge()
-
Added a number of useful options to
Dataset.merge_samples()
, includingfields
,omit_fields
, andmerge_lists
-
Improved the efficiency of
Dataset.merge_samples()
when theoverwrite=False
option is provided -
Added an optional
bool
flag to thematch_tags()
view stage that allows for optionally matching samples without the specified tags -
Added support for computing filehashes via the
hashlib
module tocompute_filehash()
-
Updated the
import_from_labelbox()
method to use the correct label ID (“DataRow ID”, not “ID”) -
Added an optional
edges
argument toscatterplot()
andlocation_scatterplot()
that enables drawing undirected edges between scatterpoints -
Fixed a bug in
limit_labels()
that would cause views to contain empty label lists if the source dataset contains None-valued fields -
Fixed a bug that prevented
ViewExpression.contains()
from acceptingViewExpression
instances as arguments
Zoo
-
Fixed a string encoding issue that prevented some Windows users from loading the Open Images V6 dataset
-
Updated the vgg16-imagenet-tf1 model (formerly named
vgg16-imagenet-tf
) to reflect the fact that it only supports TensorFlow 1.X
Docs
- Added example usages of
to_frames()
to the user guide
FiftyOne 0.9.3 ¶¶
Released May 18, 2021
App
-
Fixed an issue that prevented some datasets and views that contain vector or array data (e.g., logits) from properly loading in the App
-
Fixed a bug that prevented loading video datasets in the App in Google Colab environments
FiftyOne 0.9.2 ¶¶
Released May 16, 2021
Zoo
- Fixed a multiprocessing bug that prevented Mac users running Python 3.8 or later from loading the Open Images V6 dataset
FiftyOne 0.9.1 ¶¶
Released May 12, 2021
App
- Fixed a bug that caused the App to crash when choosing to
Color by value
FiftyOne 0.9.0 ¶¶
Released May 12, 2021
News
- We’ve collaborated with the Open Images Team at Google to make FiftyOne a recommended tool for downloading, visualizing, and evaluating on the Open Images Dataset! Check out this guide for more details
App
-
Added a
Patches
action for easy switching to object/evaluation patches views. See this page for usage details -
Added a
Sort by similarity
action that enables sorting by similarity to the selected samples/patches. See this page for usage details -
Added a zoom slider in the top right of the sample grid that adjusts the tile size of the sample grid
-
Added the ability to clear filters for entire field groups, e.g.
Labels
andScalars
, in the Filters Sidebar -
Added
filepath
to theScalars
group in the Filters Sidebar -
Added a
Label tags
graphs tab -
Refreshed numeric, string, and boolean filter styles with improved functionality and interaction
-
Added support for
Session.wait()
in browser contexts
Brain
- Added a
compute_similarity()
method for indexing samples and object patches by similarity. See this page for usage details
Core
-
Added support for Open Images-style detection evaluation when using
evaluate_detections()
. See this page for usage details -
Added the
to_patches()
andto_evaluation_patches()
view stages for transforming collections into flattened views with respect to labels and evaluations, respectively. See this page for usage details -
Added support for applying image models to the frames of video datasets when using
apply_model()
,compute_embeddings()
, andcompute_patch_embeddings()
-
Added full support for embedded documents (e.g. labels) in
values()
andset_values()
-
Added support for passing expressions directly to aggregations
-
Added an optional
omit_empty
flag toselect_labels()
andexclude_labels()
that controls whether samples with no labels are omitted when filtering -
Added a
Dataset.delete_labels()
method for efficiently deleting labels via a variety of natural syntaxes -
Deprecated
Dataset.remove_sample()
andDataset.remove_samples()
in favor of a singleDataset.delete_samples()
method -
Brain results and evaluation results that are loaded via
load_evaluation_results()
load_brain_results()
are now cached on theDataset
object in-memory so that subsequent retrievals of the results in the same session will be instant
Zoo
- Added Open Images V6 to the dataset zoo!
Docs
-
Added a new Open Images tutorial
-
Added object patches and evaluation patches sections to the App guide
-
Added a similarity section to the Brain guide
-
Added Open Images evaluation and evaluation patches sections to the evaluation guide
-
Added object patches and evaluation patches sections to the views guide
-
Added example uses of
to_patches()
andto_evaluation_patches()
to the object detection tutorial -
Added example use of
to_patches()
to the detection mistakes tutorial -
Added example use of
to_patches()
to the adding detections recipe
FiftyOne 0.8.0 ¶¶
Released April 5, 2021
App
-
Added the ability to tag samples and labels directly from the App in both the sample grid (macro) and expanded sample view (micro) with respect to and filters or currently selected samples/labels
-
Added a
LABEL TAGS
section to the Filters Sidebar to coincide with the introduction of label tags -
Added label tooltips that display on hover in the expanded sample view
-
Expanded actions to list of button groups in the sample grid and expanded sample view
-
Added support for rendering semantic labels in the new tooltip in the expanded sample view for
Segmentation
mask values (pixel values) using the newDataset.mask_targets
andDataset.default_mask_targets
fields -
Fixed hiding, clearing, and only showing selected samples in the samples grid
Brain
-
Added a
compute_visualization()
method that uses embeddings and dimensionality reduction methods to generate interactive visualizations of the samples and/or labels in a dataset. Check out this page for details. Features include: -
Provide your own embeddings, or choose a model from the Model Zoo, or use the provided default model
-
Supported dimensionality reduction methods include UMAP, t-SNE, and PCA
-
Use this capability in a Jupyter notebook and you can interact with the plots to select samples/labels of interest in a connected
Session
-
Added support for saving brain method results on datasets. Previous brain results can now be loaded at any time via
Dataset.load_brain_results()
-
Added support for providing a custom
Model
or model from the Model Zoo tocompute_uniqueness()
Core
-
Added a
fiftyone.core.plots
module that provides a powerful API for visualizing datasets, including interactive plots when used in Jupyter notebooks. See this page for more information. Highlights include: -
plot_confusion_matrix()
: an interactive confusion matrix that can be attached to aSession
object to visually explore model predictions -
scatterplot()
: an interactive scatterplot of 2D or 3D points that can be attached to aSession
to explore the samples/labels in a dataset based on their locations in a low-dimensional embedding space -
location_scatterplot()
: an interactive scatterplot of a dataset via itsGeoLocation
coordinates -
Added
GeoLocation
andGeoLocations
label types that can be used to store arbitrary GeoJSON location data on samples -
Added the
GeoJSONDataset
dataset type for importing and exporting datasets in GeoJSON format -
Added
SampleCollection.geo_near()
andSampleCollection.geo_within()
view stages for querying datasets with location data -
Upgraded the implementation of the FiftyOneDataset format, which is now 10-100x faster at importing/exporting datasets
-
Added support for generating zip/tar/etc archives to
SampleCollection.export()
by passing an archive path rather than a directory path -
Added
Dataset.from_archive()
andDataset.add_archive()
factory methods for importing datasets stored in archives -
Added support for saving evaluation results on a dataset. Results can now be loaded at any time via
Dataset.load_evaluation_results()
-
Added a
tags
attribute to allLabel
types that can store a list of string tags for the labels (analogous to thetags
attribute ofSample
) -
Added a number of methods for working with sample and label tags:
-
BREAKING CHANGE: Renamed all applicable API components that previously referenced “objects” to use the more widely applicable term “labels”. Affected attributes, classes, and methods are:
-
Session.selected_labels
(previouslyselected_objects
) -
SampleCollection.select_labels()
(previouslyselect_labels()
) -
SampleCollection.select_labels()
(previouslyexclude_labels()
) -
SelectLabels
(previouslySelectObjects
) -
ExcludeLabels
(previouslyExcludeObjects
) -
Added new keyword arguments
ids
,tags
, andfields
toSampleCollection.select_labels()
andSampleCollection.select_labels()
and their corresponding view stages that enable easier-to-use selection of labels by their IDs or tags -
Added
Session.select_labels()
for programmatically selecting labels as well a setters forSession.selected
andSession.selected_labels
-
Added
Dataset.classes
andDataset.default_classes
fields that enable storing class label lists at the dataset-level that can be automatically used by methods likeDataset.evaluate_classifications()
when knowledge of the full schema of a model is required -
Added
Dataset.mask_targets
andDataset.default_mask_targets
fields for providing semantic labels forSegmentation
mask values to be used in the App’s expanded sample view -
Improved the runtime of
Dataset.merge_samples()
by ~100x for image datasets and ~10x for video datasets -
Added an
Dataset.add_collection()
method for adding the contents of aSampleCollection
to anotherDataset
-
Added the trigonometric view expressions
cos
,sin
,tan
,cosh
sinh
,tanh
,arccos
,arcsin
,arcan
arccosh
,arcsinh
, andarctanh
-
Added a
randn
expression that can generate Gaussian random numbers -
Fixed a bug that prevented
evaluate_detections()
from being able to process video datasets -
Added support for applying intensive view stages such as sorting to datasets whose database representation exceeds 100MB
-
Fixed schema errors in
DatasetView
instances that contain selected or excluded fields -
Fixed copying of
DatasetView
instances whereViewField
is used
Zoo
- Added the quickstart-geo dataset to enable quick exploration of location-based datasets
CLI
- Removed the
--desktop
flag from the fiftyone app connect command
Docs
-
Added a tutorial demonstrating how to use
compute_visualization()
on image datasets -
Added an interactive plots page to the user guide
-
Added a Tags and tagging section to the App user guide
-
Added a visualizing embedding section to the Brain user guide
FiftyOne 0.7.4 ¶¶
Released March 2, 2021
App
-
Fixed a bug that prevented
Session
updates from triggering App updates -
Fixed hiding labels in the expanded sample view
Brain
-
Added support for tracking and cleaning up brain runs similar to how evaluations are tracked. See
get_brain_info()
,list_brain_runs()
,load_brain_view()
, anddelete_brain_run()
for details -
Updated
compute_mistakenness()
to use FiftyOne’s evaluation framework
Core
-
Decoupled loading video
Sample
andSampleView
and their frames so the samples are loaded efficiently and frames are only loaded when requested -
Add a 90 character limit to progress bars in notebook contexts to prevent overflow issues
-
Added low-level utility methods
list_datasets()
anddelete_dataset()
for managing a corrupted database -
Added automatic field generation for
labelbox_id_field
when usingimport_from_labelbox()
CLI
- Added a dataset stats command
FiftyOne 0.7.3 ¶¶
Released February 18, 2021
App
-
Added filtering widgets to the Filters Sidebar for
StringFields
andBooleanFields
-
Added histogram plots for
StringFields
andBooleanFields
in theScalars
tab -
Moved
None
selection forStringFields
to the input format in the Filters Sidebar -
Changed
None
options to only be present whenNone
values exist for a supportedField
in the Filters Sidebar -
Added
Color by label
support forClassification
,Classifications
,BooleanField
, andStringField
-
Added support excluding selected values for a
StringField
in the Fields Sidebar -
Various style and interaction improvements in the Filters Sidebar
-
The App will no longer crash when samples whose source media is unsupported or missing are loaded
Core
-
Added
evaluate_classifications()
,evaluate_detections()
, andevaluate_segmentations()
methods that provide support for evaluating various types of labels. See the new evaluation page of the user guide for more details -
Added
one()
for retrieving one matchedSample
from aDataset
orDatasetView
-
Added support for cloning and saving views into video datasets via
clone()
andsave()
-
Added support for extracting batches of frame-level and/or array fields via the
values()
aggregation -
Added support for setting batches of frame-level and/or array fields via
set_values()
-
Added support for accessing samples from a
Dataset
orDatasetView
via thedataset[filepath]
syntax -
Added support for passing
Sample
and anySample
iterable, e.g.DatasetView
, to methods likeremove_samples()
,exclude()
, andselect()
-
Changed the default value for
only_matches
forfilter_classifications()
,filter_detections()
,filter_field()
,filter_labels()
,filter_keypoints()
, andfilter_polylines()
fromFalse
toTrue
-
compute_metadata()
will now gracefully skip samples for which media metadata cannot be computed -
Added a
stats()
method for listing helpful info about the size of various entities of a dataset
Zoo
-
Added support for storing logits for many zoo models when using
apply_model()
-
Default confidence thresholds for zoo models are now stored on a per-model basis rather than as a global default value in
apply_model()
. All detection models still have a default confidence threshold of 0.3, and all other model types have no default confidence threshold
CLI
- Added a migration API to provide better support
for downgrading the version of your
fiftyone
package
Docs
-
Added a new evaluation page to the user guide that explains how to evaluate various types of models with FiftyOne
-
Removed legacy
--index
flags from the install instructions from the troubleshooting page which prevented a valid installation
FiftyOne 0.7.2 ¶¶
Released January 28, 2021
App
-
Changed the Filters Sidebar label filters to only return matched samples, i.e., samples with at least one matching label with respect to a filter
-
Fixed a bug in Colab notebooks that allowed for the
.ipynb
file to grow unnecessarily large -
Improved plotting of numeric fields in the
Scalars
tab, including[min, max)
ranges for tooltips and integer binning when appropriate\ \ - Fixed a bug that prevented\
select_fields()
\ and\exclude_fields()
\ from being properly respected by the Filters Sidebar\ \ - Fixed a bug that prevented selected samples from being cleared when modifying\ your view or choosing an option from the select samples dropdown\ \
- Added an
AppConfig
for configuring options like the color pool to use when\ drawingLabel
fields. See this page for\ more info\ \ \ Core\ \ - Added the
MapLabels
and\SetField
view stages\ \ - Added the\
HistogramValues
and\Sum
aggregations\ \ - Added over a dozen new\
ViewExpression
methods including powerful transformations like\map_values()
,\reduce()
, and\sort()
\ \ - Exposed all
Aggregations
as\ single execution methods on theSampleCollection
interface, e.g.,\distinct()
\ \ - Added support for all
Label
types in\filter_labels()
\ \ - Added support for generalized field paths (embedded fields, lists, etc) to\
the
Bounds
,\Count
,\CountValues
, and\Distinct
\ aggregations\ \ - Removed the deprecated\
ConfidenceBounds
,\CountLabels
, and\DistinctLabels
\ aggregations\ \ - Removed the redundant\
match_tag()
\ stage in favor of\match_tags()
\ \ - Removed
AggregationResult
classes in favor of returning\Aggregation
results\ directly as builtin types\ \ - Added the optional
config
keyword argument to\launch_app()
and\Session
for overriding the default\ AppConfig.\ \ \ Zoo\ \ - Added a default confidence threshold of
0.3
when applying models from the\ Model Zoo via\apply_model()
,\ which omits spurious low quality predictions from many models\ \ \ CLI\ \ - Added a fiftyone app config command for\ inspecting the default App config\ \
- Improved
ctrl + c
exit handling for CLI commands\ \ \ Docs\ \ - Added a new section to the\ Configuring FiftyOne guide explaining how to\ programmatically configure the App’s behavior\ \
- Updated the Dataset views guide to provide a thorough\
overview of new functionality provided by stages like\
SetField
\ \ - Updated the Aggregations guide to provide a\ thorough overview and examples of various aggregation functionality,\ including advanced usage tips\ \
- Added an FAQ section providing instructions for working with\ remote Jupyter notebooks\ \
- Added code examples to all
ViewStage
class docstrings and their\ corresponding sample collection methods, e.g.,\map_labels()
\ \ - Added code examples to all
Aggregation
class docs and their corresponding\ sample collection methods, e.g.,\bounds()
\ \ \ ## FiftyOne 0.7.1 ¶\ \ Released January 8, 2021\ \ App\ \ - Added automatic screenshotting for notebook environments\ \
- Fixed a bug where the Filters Sidebar statistics would not load for empty\ views\ \
- Fixed style inconsistencies in Firefox\ \ \ Core\ \
- Added
Session.freeze()
for\ manually screenshotting the active App in a notebook environment\ \ - Renamed
Dataset.clone_field()
to\Dataset.clone_sample_field()
\ for consistency with other operations\ \ - Added a\
Dataset.clone_frame_field()
\ method for cloning frame-level fields of video datasets\ \ - Added\
DatasetView.clone_sample_field()
\ and\DatasetView.clone_frame_field()
\ methods that allow cloning views into sample fields (e.g., after filtering\ the labels in a list field)\ \ - Added a
DatasetView.clone()
\ method for cloning a view as a new dataset\ \ - Added a
DatasetView.save()
\ method for saving a view, overwriting the contents of the underlying dataset\ \ - Re-implemented\
Dataset.clone_sample_field()
\ and\Dataset.merge_samples()
\ via efficient DB-only operations\ \ - Added the
overwrite
keyword argument to the\Dataset()
constructor\ \ - Added a
database_dir
option to the\ FiftyOne Config\ \ - Added a
default_app_port
option to the\ FiftyOne Config\ \ \ Zoo\ \ - Added a CenterNet model to\ the model zoo\ \
- Upgraded the Model Zoo so that many detection models that\ previously required TensorFlow 1.X can now be used with TensorFlow 2.X\ \
- Added Caltech-256 to the dataset zoo\ \
- Added ImageNet Sample to the dataset zoo\ \
- Caltech-101 is now available natively in the\ dataset zoo without the TF backend\ \
- KITTI is now available natively in the dataset zoo\ without the TF backend\ \
- Fixed a bug that prevented ImageNet 2012\ from loading properly when using the TF backend\ \ \ CLI\ \
- Added support for controlling the error level when\ applying zoo models\ \ \ Docs\ \
- Added a Dataset Zoo listing that describes all\ datasets in the zoo\ \
- Added a Model Zoo listing that describes all models\ in the zoo\ \ \ ## FiftyOne 0.7.0 ¶\ \ Released December 21, 2020\ \ App\ \
- Added web browser support, which is now the default setting\ \
- Added IPython notebook support, e.g. Jupyter and Google\ Colab\ \
- The desktop App can now be installed as an\ optional dependency\ \
- Fixed an issue where the App would freeze after filtering labels in the\ Filters Sidebar\ \ \ Core\ \
- Added a Model Zoo containing over 70 pretrained detection,\ classification, and segmentation models that you can use to generate\ predictions and embeddings\ \
- Moved project hosting to pypi.org\ \
- Added the
Session.show()
method\ for displaying the App in IPython notebook cells\ \ - Added an in-App feedback form. We would love to hear from you!\ \
- Added Python 3.9 support\ \
- Removed Python 3.5 support\ \ \ CLI\ \
- Added a fiftyone zoo models command that\ provides access to the model zoo\ \
- Moved the dataset zoo commands to\
fiftyone zoo datasets (previously they\
were at
fiftyone zoo
)\ \ - Added a
--desktop
flag to commands that launch the App that enables\ launching the App as a desktop App (rather than a web browser)\ \ \ ## FiftyOne 0.6.6 ¶\ \ Released November 25, 2020\ \ App\ \ - Added a dropdown in the header to change datasets from the App\ \
- Added the ability to refresh the App by clicking the FiftyOne logo in the\ header\ \
- Fixed a bug the caused numeric (scalar field) range sliders to disappear\ after changing the default value\ \
- Fixed a bug that prevented the App state from updating appropriately after\ applying label filters\ \ \ Brain\ \
- Added support for computing mistakenness for detections when using\
compute_mistakenness()
\ \ \ Core\ \ - Fixed a bug that prevented COCO datasets from being loaded from the\ Dataset Zoo\ \ \ CLI\ \
- Added support for customizing the local port when connecting to the App via\ the CLI\ \
- Added an
--ssh-key
option to theapp connect
command\ \ \ Docs\ \ - Added a tutorial demonstrating how to\
use
compute_mistakenness()
to\ detect label mistakes for detection datasets\ \ - Added questions to the FAQ page:\ \
- Can I launch multiple App instances on a machine?\ \
- Can I connect multiple App instances to the same dataset?\ \
- Can I connect to multiple remote sessions?\ \
- Can I serve multiple remote sessions from a machine?\ \ \ ## FiftyOne 0.6.5 ¶\ \ Released November 16, 2020\ \ App\ \
- Added concurrency to the server which greatly improves loading speeds and\ time-to-interaction in the Grid, View Bar, and Filters Sidebar for larger\ datasets and views\ \
- Renamed the Display Options Sidebar to the Filters Sidebar\ \
- Added support for coloring by
label
value in the Filters Sidebar\ \ - Added support for filtering\
keypoint
,\keypoints
,\polyline
,\polylines
fields bylabel
value\ in the Filters Sidebar\ \ - Moved plot tabs into an expandable window that can be resized and maximized.\ This allows for viewing distributions and the sample grid at the same time\ \
- Fixed video loading in the grid and modal for video samples with metadata\ \
- Fixed showing and hiding samples in the select sample menu\ \
- Fixed a memory usage bug in the sample grid\ \ \ Core\ \
- Added Cityscapes and\ LFW to the\ Dataset Zoo\ \
- Added support for renaming and deleting embedded document fields of samples\
via
Dataset.rename_sample_field()
and\Dataset.delete_sample_field()
\ \ - Added support for renaming and deleting embedded document fields of frames\
of video samples via
Dataset.rename_frame_field()
and\Dataset.delete_frame_field()
\ \ - Added support for deleting fields and embedded fields of individual samples\
via
Sample.clear_field()
\ anddel sample[field_name]
\ \ - Added support for deleting fields and embedded fields of frame labels via\
Frame.clear_field()
\ anddel frame[field_name]
\ \ - Added support for reading/writing video datasets in JSON format via\
Dataset.from_json()
and\SampleCollection.write_json()
,\ respectively\ \ - Added
a module
for importing and exporting\ annotations from Scale AI\ \ - Added
a module
for importing and exporting\ annotations from Labelbox\ \ - Fixed a bug that prevented\
Dataset.add_sample()
and\Dataset.add_samples()
\ from working properly when provided samples that belong to other sample\ collections\ \ - Fixed a bug that prevented frame labels from being properly cloned when\
calling
Dataset.clone()
on\ video datasets\ \ \ Docs\ \ - Added an Environments page that outlines how\ to work with local, remote, and cloud data. Includes instructions for AWS,\ Google Cloud, and Azure\ \
- Add an FAQ page\ \ \ ## FiftyOne 0.6.4 ¶\ \ Released October 29, 2020\ \ App\ \
- Improved page load times for video datasets\ \
- Improved support for frame- and sample-level labels in display options for\ video datasets\ \
- Added support for all label types in the labels distributions tab\ \
- Added support for selecting and hiding labels in the sample modal\ \ \ Brain\ \
- Added support for computing uniqueness within regions-of-interest specified\
by a set of detections/polylines when using\
compute_uniqueness()
\ \ \ Core\ \ - Added the\
filter_labels()
\ view stage, which supersedes the old dedicated per-label-type filtering\ stages\ \ - Added\
select_labels()
\ and\exclude_labels()
\ to select or exclude labels from a dataset or view\ \ - Added an
aggregations framework
for\ computing aggregate values via\aggregate()
\ \ - Added the\
selected_labels
\ session attribute, which holds the currently selected labels in the App\ \ - Added support for\
adding
,\renaming
, and\deleting
\ frame-level fields of video datasets\ \ - Added the\
TorchImagePatchesDataset
\ that emits tensors of patches extracted from images defined by sets of\Detections
associated with the\ images\ \ \ ## FiftyOne 0.6.3 ¶\ \ Released October 20, 2020\ \ App\ \ - Added sample-level display options stats, filtering, and toggling for video\ datasets\ \ \ Core\ \
- Added support for importing\ and exporting video\ classification datasets organized as directory trees on disk\ \
- Added BDD100K,\ HMDB51,\ and UCF101 to\ the Dataset Zoo\ \
- Added new versions of COCO that contain\ instance segmentations to the Dataset Zoo\ \
- Added utilities for selecting labels from datasets via the Python library\ \
- Added a boolean
only_matches
parameter to all filter stages that enables\ the user to specify that a view should only contain samples that match the\ given filter\ \ - Improved performance when ingesting video datasets with frame-level labels\ \
- Added a
reencode_videos()
\ utility to re-encode the videos in a sample collection so that they are\ visualizable in the FiftyOne App\ \ \ ## FiftyOne 0.6.2 ¶\ \ Released October 15, 2020\ \ App\ \ - Improved page and grid load times for video datasets by around 10x\ \
- Added filtering, toggling, and statistics for labels with respect to the\ frame schema in the display options sidebars for video datasets\ \
- Added margins to the grid view for both image and video datasets\ \
- Fixed list parameter input submission in the view bar\ \
- Fixed an issue causing some label counts to be incorrect after filters are\ applied\ \
- Added support for using the keyboard to select labels when filtering\ \ \ Brain\ \
compute_uniqueness()
and\compute_hardness()
now support\ multilabel classification tasks\ \ \ Core\ \Polyline
instances can now represent labels composed of multiple shapes\ \- Segmentations can now be imported and\ exported when using\ COCO Object Detection Format.\ \
- Polylines and keypoints can now be imported and\ exported when using\ CVAT image format\ \
- Polylines and keypoints can now be imported and\ exported when using\ CVAT video format\ \
- Added support for rendering annotated versions of video samples with their\
frame labels overlaid via\
draw_labels()
\ \ - Added support for launching quickstarts as\ remote sessions\ \
- Added
Frames.update()
and\Frames.merge()
methods to replace\ and merge video frames, respectively\ \ - Fixed
Dataset.merge_samples()
\ to properly merge the frame-by-frame contents of video samples\ \ - Fixed a bug where
sample.copy()
\ would not create a copy of the frames of a video sample\ \ \ ## FiftyOne 0.6.1 ¶\ \ Released October 7, 2020\ \ App\ \ - Added support for visualizing keypoints, polylines, and segmentation masks\ \
- Added autocompletion when selecting
SortBy
fields in the view bar\ \ - Added support for viewing
index
fields ofDetection
labels in the media\ viewer, if present\ \ - Fixed counting of
Classifications
fields in the expanded sample view\ \ - Fixed a bug that prevented label filters from fully resetting when a
reset
\ orclear
button is pressed\ \ \ Core\ \ - Added support for storing
keypoints
,\polylines
, and\segmentation masks
on samples\ \ - Added support for setting an
index
attribute onDetection
instances that\ defines a unique identifier for an object (e.g., across frames of a video)\ \ - Added support for importing and\ exporting datasets in\ YOLOv4 format\ \
- Added support for importing and\ exporting datasets in\ CVAT video format\ \
- Added support for importing and\
exporting video datasets in\
FiftyOneDataset
format\ \ - Added frame field schemas to string representations for video datasets/views\ \ \ CLI\ \
- Added options to\ fiftyone datasets delete to delete all\ datasets matching a pattern and all non-persistent datasets\ \ \ Docs\ \
- Added a recipe for merging datasets\ \
- Fixed some table widths and other display issues\ \ \ ## FiftyOne 0.6.0 ¶\ \ Released October 1, 2020\ \ App\ \
- Added support for visualizing video datasets in the App\ \ \ Core\ \
- Added support for storing frame labels on video\ samples\ \
- Added support for importing and\ exporting datasets of unlabeled videos\ \
- Added support for importing and\ exporting labeled video\ datasets in\ ETA VideoLabels format.\ \
- Added support for importing and\ exporting video datasets in\ custom formats\ \
- Improved the performance of\
Dataset.rename_sample_field()
\ \ - Added support for using disk space when running aggregation pipelines on\ large datasets\ \
- Added support for automatically creating database indexes when sorting by\ sample fields, for efficiency\ \
- Fixed issues with serializing vector fields and numpy arrays\ \ \ ## FiftyOne 0.5.6 ¶\ \ Released September 23, 2020\ \ App\ \
- Added autocompletion to view bar stage fields that accept field names (for\
example,
Exists
)\ \ - Fixed an issue that would prevent datasets with no numeric labels or scalars\ from loading in the App\ \
- Fixed an error that could occur when a view included no samples\ \
- Added notifications in the App that are displayed if errors occur on the\ backend\ \
- Improved keyboard navigation between view bar stages\ \ \ Core\ \
- Added support for loading (possibly-randomized) subsets of datasets when\
importing them via
DatasetImporter
instances, or via factory methods such\ asDataset.from_dir()
\ \ - Added support for optionally skipping unlabeled images when importing image\
datasets via
LabeledImageDatasetImporter
instances\ \ - Added a\
Dataset.merge_samples()
\ method for merging samples in datasets via joining byfilepath
\ \ - Added a\
Dataset.rename_sample_field()
\ method for renaming sample fields of datasets\ \ \ ## FiftyOne 0.5.5 ¶\ \ Released September 15, 2020\ \ App\ \ - Added support for filtering samples by numeric fields in the sidebar\ \
- Confidence bounds are now computed for the confidence slider in the label\
filter - a
[0, 1]
range is no longer assumed\ \ - Fixed an issue that would cause certain stages to be reevaluated when the view\ bar was edited\ \
- Improved responsiveness when adding stages in the view bar, filtering, and\ selecting samples\ \
- Simplified placeholders in the view bar\ \
- Added support for filtering sample JSON in the expanded sample view to match\ the labels displayed in the media viewer\ \
- Updated the instructions that appear when starting the App before connecting\ to a session\ \ \ Core\ \
- Added support for
Session.wait()
\ for remote sessions, to make starting a remote session from a script easier\ \ \ ## FiftyOne 0.5.4 ¶\ \ Released September 9, 2020\ \ App\ \ - Added support for selecting/excluding samples from the current view in the\ App by selecting them and then choosing the appropriate option from a sample\ selection menu\ \
- Added autocomplete when creating new stages in the view bar\ \
- Updated the look-and-feel of the view bar to clarify when a stage and/or the\ entire view bar are active, and to make the bar more visually consistent with\ the rest of the App\ \
- Media viewer options are maintained while browsing between samples in\ expanded sample view\ \
- Improved the look-and-feel of confidence sliders when filtering labels\ \
- Limited floating point numbers to three decimals when rendering them in the\ media viewer\ \
- Fixed some bugs related to content overflow in the view bar\ \ \ Core\ \
- Added support for exporting
Classification
labels in dataset formats that\ expectDetections
labels\ \ - Added support for importing/exporting supercategories for datasets in\ COCO format\ \ \ ## FiftyOne 0.5.3 ¶\ \ Released September 1, 2020\ \ App\ \
- Added support for filtering labels in the expanded sample view\ \
- Added support for displaying detection attributes in the expanded sample view\ \
- Added an option to display confidence when viewing labels in the expanded\ sample view\ \
- Updated look-and-feel of display options in the expanded sample view to match\ the main image grid view\ \
- Adopting a default color palette for sample fields in the App that ensures\ that they are visually distinct\ \
- Fixed a bug that prevented the App from loading empty views\ \
- Fixed a bug that prevented the view bar from using default values for some\ stage parameters\ \ \ Core\ \
- Added support for checking that a field does not exist via a new boolean\
parameter of the\
exists()
\ view stage\ \ - Fixed a bug that prevented FiftyOne from starting for some Windows users\ \
- Fixed a bug that caused\
take()
and\shuffle()
view\ stages with random seeds to be regenerated when handing off between the App\ and Python shell\ \ \ ## FiftyOne 0.5.2 ¶\ \ Released August 26, 2020\ \ App\ \ - Added a label filter to the App that allows you to interactively explore your\ labels, investigating things like confidence thresholds, individual classes,\ and more, directly from the App\ \
- Added an App error page with support for refreshing the App if something goes\ wrong\ \
- The App can now be closed and reopened within the same session\ \ \ Core\ \
- Added a fiftyone quickstart command that\ downloads a small dataset, launches the App, and prints some suggestions for\ exploring the dataset\ \
- Added support for multiple simultaneous FiftyOne processes. You can now\ operate multiple App instances (using different ports), Python shells, and/or\ CLI processes.\ \
- Added support for automatically expanding labels from multitask formats such\ as BDDDataset and\ FiftyOneImageLabelsDataset into\ separate label fields when importing datasets\ \
- Added support for exporting multiple label fields in supported formats such\
as BDDDataset and\
FiftyOneImageLabelsDataset\
via the
export()
\ method\ \ - Added support for filtering fields via the\
filter_field()
\ method\ \ - Provided a more helpful error message when using the\ Dataset Zoo with no backend ML framework installed\ \
- Made
pycocotools
an optional dependency to make installation on Windows\ easier\ \ \ Docs\ \ - Updated the evaluate object detections\ tutorial to make it more friendly for execution on CPU-only machines\ \
- Refreshed all App-related media in the docs to reflect the new App design\ introduced in v0.5.0\ \ \ ## FiftyOne 0.5.1 ¶\ \ Released August 18, 2020\ \ App\ \
- Statistics in the display options sidebar now reflect the current\ view, not the entire dataset\ \
- Improved image tiling algorithm that prevents single images from filling an\ entire grid row\ \
- Added support for toggling label visibility within the expanded sample modal\ \
- Improved display of long label and tag names throughout the app\ \
- Enhanced view bar functionality, including keyword arguments, type\ annotations, error messages, help links, and overall stability improvements\ \
- Added keyboard shortcuts for interacting with the view bar:\ \
DEL
andBACKSPACE
delete the raised (active) stage\ \ESC
toggles focus on the ViewBar, which activates shortcuts\ \TAB
,ENTER
, andESC
submits stage input fields\ \LEFT
andRIGHT ARROW
traverses view stages and add-stage buttons\ \SHIFT + LEFT ARROW
andSHIFT + RIGHT ARROW
traverse stages\ \ \ Core\ \- Greatly improved the performance of loading dataset samples from the database\ \
- Added support for
renaming
and\cloning
datasets\ \ - Added more string matching operations when\
querying samples, including\
starts_with()
,\ends_with()
,\contains_str()
and\matches_str()
\ \ \ Docs\ \ - Added a tutorial demonstrating performing error analysis on the\ Open Images Dataset\ powered by FiftyOne\ \ \ ## FiftyOne 0.5.0 ¶\ \ Released August 11, 2020\ \ News\ \
- FiftyOne is now open source! Read more about this exciting development\ in this press release\ \ \ App\ \
- Major design refresh, including a\ new look-and-feel for the App\ \
- Added view bar that supports constructing dataset views directly in the App\ \
- Redesigned expanded sample view:\ \
- Improved look-and-feel, with modal-style form factor\ \
- Added support for maximizing the media player\ \
- Added support for maximizing the raw sample view\ \
- Added arrow controls to navigate between samples\ \ \ Core\ \
- Added support for importing and\
exporting FiftyOne datasets via the\
FiftyOneDataset
type\ \ - Added a
Dataset.info
field that\ can be used to store dataset-level info in FiftyOne datasets\ \ - Added a
shuffle()
\ view stage for randomly shuffling the samples in a dataset\ \ - Upgraded the
take()
\ view stage so that each instance of a view maintains a deterministic set of\ samples\ \ \ ## FiftyOne 0.4.1 ¶\ \ Released August 4, 2020\ \ Core\ \ - Added a powerful
fiftyone.core.expressions
module for constructing\ complex DatasetViewmatch()
,\sort_by()
, etc.\ stages\ \ - Added an\
evaluate_detections()
\ utility for evaluating object detections in FiftyOne datasets\ \ - Adding support for rendering annotated versions of sample data with their\
labels overlaid via a\
draw_labels()
\ method\ \ \ Docs\ \ - Added a tutorial demonstrating\ object detection evaluation workflows powered by FiftyOne\ \
- Added full documentation for constructing\ DatasetViews with powerful matching, filtering, and sorting operations\ \
- Added a recipe showing how to render annotated\ versions of samples with label field(s) overlaid\ \
- Upgraded dataset creation docs\ that simplify the material and make it easier to find the creation strategy\ of interest\ \
- Improved layout of tutorials,\ recipes, and user guide\ landing pages\ \ \ ## FiftyOne 0.4.0 ¶\ \ Released July 21, 2020\ \ App\ \
- Fixed an issue that could cause launching the App to fail on Windows under\ Python 3.6 and older\ \ \ Core\ \
- Added support for importing datasets in custom formats via the\
DatasetImporter
interface\ \ - Added support for exporting datasets to disk in custom formats via the\
DatasetExporter
interface\ \ - Added support for parsing individual elements of samples in the\
SampleParser
interface\ \ - Added an option to image loaders in
fiftyone.utils.torch
to convert\ images to RGB\ \ - Fixed an issue where\
Dataset.delete_sample_field()
\ would not permanently delete fields if they were modified after deletion\ \ - Improved the string representation of
ViewStage
instances\ \ \ Docs\ \ - Added a recipe demonstrating how to\ convert datasets on disk between common\ formats\ \
- Added recipes demonstratings how to write your own\ custom dataset importers,\ custom dataset exporters, and\ custom sample parsers\ \
- Added a Configuring FiftyOne page to the User\ Guide that explains how to customize your FiftyOne Config\ \ \ ## FiftyOne 0.3.0 ¶\ \ Released June 24, 2020\ \ App\ \
- Fixed an issue that could prevent the App from connecting to the FiftyOne\ backend\ \ \ Core\ \
- Added support for importing and exporting datasets in several common formats:\ \
- COCO:
COCODetectionDataset
\ \ - VOC:
VOCDetectionDataset
\ \ - KITTI:
KITTIDetectionDataset
\ \ - Image classification TFRecords:\
TFImageClassificationDataset
\ \ - TF Object Detection API TFRecords:\
TFObjectDetectionDataset
\ \ - CVAT image:
CVATImageDataset
\ \ - Berkeley DeepDrive:
BDDDataset
\ \ \ - Added
Dataset.add_dir()
and\Dataset.from_dir()
to allow\ for importing datasets on disk in any supported format\ \ - Added a
convert_dataset()
\ method to convert between supported dataset formats\ \ - Added support for downloading COCO 2014/2017 through the FiftyOne Dataset Zoo\ via the Torch backend\ \ \ CLI\ \
- Added
fiftyone convert
to convert datasets on disk between any supported\ formats\ \ - Added
fiftyone datasets head
andfiftyone datasets tail
to print the\ head/tail of datasets\ \ - Added
fiftyone datasets stream
to stream the samples in a dataset to the\ terminal with aless
-like interface\ \ - Added
fiftyone datasets export
to export datasets in any available format\ \ \ ## FiftyOne 0.2.1 ¶\ \ Released June 19, 2020\ \ Core\ \ - Added preliminary Windows support\ \
Dataset.add_images_dir()
\ now skips non-images\ \- Improved performance of adding samples to datasets\ \ \ CLI\ \
- Fixed an issue that could cause port forwarding to hang when initializing a\ remote session\ \ \ ## FiftyOne 0.2.0 ¶\ \ Released June 12, 2020\ \ App\ \
- Added distribution graphs for label fields\ \
- Fixed an issue causing cached images from previously-loaded datasets to be\ displayed after loading a new dataset\ \ \ Core\ \
- Added support for persistent datasets\ \
- Added a class-based view stage approach via the
ViewStage
interface\ \ - Added support for serializing collections as JSON and reading datasets from\ JSON\ \
- Added support for storing numpy arrays in samples\ \
- Added a config option to control visibility of progress bars\ \
- Added progress reporting to\
Dataset.add_samples()
\ \ - Added a
SampleCollection.compute_metadata()
\ method to enable population of themetadata
fields of samples\ \ - Improved reliability of shutting down the App and database services\ \
- Improved string representations of
Dataset
andSample
objects\ \ \ CLI\ \ - Added support for creating datasets and launching the App\ \ \