FiftyOne Release Notes¶
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 #2885Optimized 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()
#2898Added 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 #2882Added 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 #2931Added 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 #2844Using new libraries for ndjson and archive extraction #2864
Fixed a bug that prevented text similarity searches 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 #2840Fixed 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
#2714Refactored 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, #2743Fixed 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 #2800Fixed 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 #1300Added support for generating orthographic projection images for point cloud datasets/slices #2656
Added validation to
set_values()
#2770Frame collections are now lazily created only when necessary #2727
Upgraded the document save implementaton to only use upsert operations when explicitly required #2727
Added
_dataset_id
to all sample/frame documents in datasets #2711Added a
save()
andsave_config()
methods toRunResults
#2696, #2772Added support for renaming existing runs via new
rename_annotation_run()
,rename_brain_run()
, andrename_evaluation()
methods #2696Added support for filtering by run type and config parameters when using
list_annotation_runs()
,list_brain_runs()
, andlist_evaluations()
#2696, #2772Added an
add_group_slice()
method to declare new slices on grouped datasets #2727Added 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 #2767Fixed 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 #2358Added 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 #2301Added support for RGB segmentations in
evaluate_segmentations()
#2483Added a new
transform_segmentations()
utility #2483Added support for declaring dynamic fields on generated views via
set_values()
#2513Added 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 #2471Updated all plotting methods, eg
scatterplot()
to always rely on sample/label IDs when pulling data for plots #2614Updated
compute_patch_embeddings()
to store patch embeddings directly onLabel
objects when theembeddings_field
argument is provided #2626Added support for passing frame-level fields directly to
export()
#2418Added an optional
dynamic=True
flag toset_values()
#2372Added support for declaring custom
Label
attributes viaset_values()
#2372Adds a new
set_label_values()
utility for setting attributes onLabel
instances by their IDs #2372Always update dataset’s
last_loaded_at
property when they are loaded #2375Migrated runs to a separate database collection, for efficiency #2189
Added an
exact_frame_count()
utility for computing extact video frame counts #2373Updated 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()
#2528Added an
exclude_groups()
view stage #2451Added support for importing annotations directly on grouped datasets #2349
Added a
group_collections()
utility for merging multiple collections into a grouped dataset #2332Added support for converting an existing dataset into a grouped dataset via
set_values()
#2332Added 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 #2635Fixed a bug when calling
to_frames()
on a view that filters the frames of the input dataset #2361Fixed some bugs when passing multiple aggregations with the same field name and type to
aggregate()
#2617Fixed 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 #2227Updated the logic of
exists()
to be more intuitive for frame fields #2209Upgraded server and MongoDB requirements to
pymongo>=3.11
,motor>=2.3
and newer pinned versions ofmongoengine
,starlette
, andstrawberry-graphql
#2215Added 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 #2135Fixed some bugs that could occur when creating frame views into grouped collections #2144
Fixed a bug when using
select_by()
withObjectId
fields #2140Added 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 compatability bug when connecting to older database verions #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 #1976Added 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 #1765Added an optional
rel_dir
parameter toexport()
anddraw_labels()
#2060Added an optional
use_dirs=True
parameter toexport()
that causes metadata to be exported in per-sample/frame JSON files #2028Updated the COCO importer to load all available label types by default #1869
Fixed a bug when passing
ordered=True
toselect_by()
#2059Fixed 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 occured when checking if tasks exist on CVAT v2 servers #2070
Fixed an error that occured when deseriailizing 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
.
#1924Fixed 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 #2007Added 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()
#1922Added support for dynamic attributes when performing coerced exports #1993
Introduced the notion of client compatability versions #2017
Added support for serializing aggregations #1911
Added
weighted_sample()
andbalanced_sample()
utility methods #1925Added an optional
new_ids=True
option toDataset.add_collection()
that generates new sample/frame IDs when adding the samples #1927Added support for the
path
variable indataset.yaml
of YOLOv5 datasets #1903Fixed a bug that prevented using
set_values()
to set frame-level label fields #1922Fixed 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
#1922Fixed a bug that allowed default frame fields to be excluded #1922
ClipsView
instances will now report theirmetadata
type asVideoMetadata
#1922Fixed
load_evaluation_view()
whenselect_fields
isTrue
#1922Fixed 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
#1944Upgraded the
AnnotationAPI
interface #1997Fixed loading group IDs in CVAT video tasks #1917
Fixed uploading to a CVAT project when no label schema is provided #1926
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) #1828Fixed initial loading of keypoint skeletons #1828
Fixed
Classifications
rendering in the grid #1828Fixed App loads for environments with old (
<=v0.14.0
) datasets that have yet to be migrated #1829Fixed 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
#1879Fixed
JSON
rendering in the expanded view for nested data #1880Fixed selection and expansion for bad media files #1882
Fixed
Other
plot tabdate
anddatetime
fields withNone
values #1817Increased 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 #1812Fixed a database field issue in
clone_frame_field()
andclone_sample_field()
, #1824Fixed using zoo models with the newest version of Torchvision #1838
Added
classifications_to_detections()
for converting classifications to detections #1842Set forking as the default for macOS multiprocessing #1844
Added
dataset.tags
for organizing datasets #1845Added functionality to explicitly define classes for evaluation methods #1858
Fixed
tfrecord
shard enumeration, i.e. zero indexing #1859Added support for label field dicts when importing labeled datasets #1864
Removed non-XML or non-TXT files from CVAT, KITTI, CVATVideo #1884
Annotation
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 #1801Fixed 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
#1808Fixed 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 #1785Fixed expanded samples in clips views which appeared to be empty #1790
Fixed “Sort by similarity” with a
dist_field
#1790Fixed “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
#1713Redesigned 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 #1713Fixed 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()
#1749Fixed 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 #1728Added 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 #1601Added 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 #1601Added support for rendering keypoints skeletons and missing keypoints to
draw_labels()
#1601Added support for per-point confidences and other custom per-point attributes on
Keypoint
objects. See this section for details #1601Added a
concat()
view stage that allows for concatenating one collection onto another #1662Non-persistent datasets are now automatically deleted when using a custom
database_uri
#1697Added a
database_admin
config setting that can control whether database migrations are allowed. See this page for details #1692Added a
database_name
config setting that allows for customizing the MongoDB database name #1692Classification
attributes are now exported as tag attributes when exporting in CVATImageDataset format #1686The
iscrowd
attribute is now always populated when exporting in COCO format #1664Fixed a
KeyError
bug when loading dataset with relative paths on Windows #1675
Brain
Added
fiftyone-brain
wheels for Python 3.10Added 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 #1650Added a
keep_fields()
method toDatasetView
and its subclasses #1616Added a
lines()
method that allows for plotting lines whose scatter points can be interactively selected via the typical interactive plotting workflows #1614Added an optional
force_rgb=True
syntax when importing/exporting/creating TF records using all relevant methods infiftyone.utils.tf
#1612Added support for passing additional kwargs to the
fiftyone convert
CLI command #1612Added support for annotating video-level labels when using
draw_labeled_videos()
#1619Fixed bug in
from_images_dir()
where attempting to load 4-channel images errored even ifforce_rgb=True
#1632Fixed a bug that prevented frames from being attached to video collections when aggregating expressions that involve both
Sample
-level andFrame
-level fields #1644Added 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 #1625Added a
dest_field
argument toload_annotations()
which allows you to specify the name of the field to which to load annotations #1642Added 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 #1617Added 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 detailsUpdated
DatasetView.save()
to save changes to (only) the samples in the view to the underlying datasetAdded a new
DatasetView.keep()
method that deletes any samples that are not in the view from the underlying datasetAdded
InteractivePlot.save()
andViewPlot.save()
methods that can be used to save plots as static imagesAdded support for populating query distances on a dataset when using
sort_by_similarity()
to query by similarityAdded a
instances_to_polylines()
utility that converts instance segmentations toPolylines
formatAdded support for frame labels to all conversion methods in the
fiftyone.utils.labels
moduleUpdated the implementation of
Detection.to_polyline()
so that all attributes are included rather than just ETA-supported onesAdded 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 YouTubeAdded 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]
syntaxesAdded support for registering custom
EmbeddedDocument
classes that can be used to populate fields and embedded fields of datasetsAdded support for importing and exporting
confidence
in YOLO formatsAdded support for directly passing a
filename -> filepath
mapping dict to thedata_path
parameter to dataset importersAdded graceful casting of
int
-like andfloat
-like values likenp.float(1.0)
to their respective Python primitives for storage in the databaseChanged the default to
num_workers=0
when using methods likeapply_model()
to apply Torch models on Windows, which avoids multiprocessing issuesFixed a bug when calling
evaluate_detections()
with both theclasses
andcompute_mAP=True
arguments providedFixed a bug that could arise when importing segmentation data from a COCO JSON that contains objects with
[]
segmentation dataFixed 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 usedFixed 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 FiftyOneAdded support for configuring the size of CVAT tasks via a new
task_size
parameterAdded 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 APIAdded support for passing request headers to the CVAT API
Fixed a bug that occured 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 plotsGraceful 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 runsFixed sampling frames when using
to_frames()
Fixed importing of
FiftyOneDataset
with run resultsAdded a
Regression
label typeAdded a
random_split()
methodAdded support for negating
match_labels()
queriesAdded a
MaxResize
transformAdded
image_max_size
andimage_max_dim
parameters toTorchImageModelConfig
Added support for non-sequential updates in
set_values()
Added a
compute_max_ious()
utilityAdded support for labels-only exports when working with
YOLOv4Dataset
andYOLOv5Dataset
formatsAdded
fiftyone.utils.beam
for parallel import, merge, and export operations with Apache BeamAdded an
add_yolo_labels()
utility that provides support for adding YOLO-formatted model predictions to an existing datasetAdded 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 evalution 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 changesImproved label ID tracking in CVAT by leveraging CVAT’s server IDs in addition to
label_id
attributesFixed a bug when annotating videos in CVAT with
None
label fieldsFixed 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
dataImproved 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 datasetsAdded 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 videoAdded set operations
is_subset()
,set_equals()
,unique()
,union()
,intersection()
,difference()
, andcontains(all=True)
to the view expression APIAdded date operations
to_date()
,millisecond()
,second()
,minute()
,hour()
,day_of_week()
,day_of_month()
,day_of_year()
,month()
, andyear()
to the view expression APIMissing 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 backendAdded 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 datasetAdded
ensure_frames()
andclear_frames()
methods that can be used to conveniently initialize and clear the frames of video datasets, respectivelyAdded support for using a MongoDB dataset whose version is not explicitly supported
Removed the
opencv-python-headless
maximum version requirementFixed 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 backendFixed 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()
stageAdded support for configuring the wait time when using
Session.wait()
to block execution until the App is closed, including support for serving foreverFixed 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 notebooksFixed 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 fieldsFixed 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 datasetAdded 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 datasetAdded 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 expressionAdded 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 detailsAdded 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 formatFixed some Windows-style path bugs
Annnotation
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 boxesAdded 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 downloadedPatched 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 notebooksFixed 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 V5Added support for evaluating polygons and instance segmentations to
evaluate_detections()
. See this page for usage detailsAdded 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
dictThe 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
formatAdded 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 datasetsAdded 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 iterationAdded 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-2017Improved the partial download behavior of the Open Images V6 dataset when the optional
classes
andattrs
parameters are providedFixed 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 exportsAdded new
Dataset.merge_dir()
andDataset.merge_importer()
methods for merging datasets from disk into existing FiftyOne datasetsAdded support for importing and exporting datasets in YOLOv5 format
Updated the
GeoJSONDataset
dataset type to support both image and video datasetsAdded 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
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 activeFixed 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 viewsAdded
last()
,head()
, andtail()
methods to theFrames
classAdded new
exclude_fields()
,select_frames()
, andmatch_frames()
view stages that enable selecting specific frames of video collections via IDs or filter expressions, respectivelyAdded a new
match_labels()
view stage that enables matching samples that have specific labels without actually filtering the non-matching labelsAdded 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 extractAdded 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 fieldsAdded 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 schemasAdded 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 providedAdded an optional
bool
flag to thematch_tags()
view stage that allows for optionally matching samples without the specified tagsAdded 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 scatterpointsFixed a bug in
limit_labels()
that would cause views to contain empty label lists if the source dataset contains None-valued fieldsFixed 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 detailsAdded a
Sort by similarity
action that enables sorting by similarity to the selected samples/patches. See this page for usage detailsAdded 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 SidebarAdded
filepath
to theScalars
group in the Filters SidebarAdded a
Label tags
graphs tabRefreshed 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 detailsAdded 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 detailsAdded 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 filteringAdded a
Dataset.delete_labels()
method for efficiently deleting labels via a variety of natural syntaxesDeprecated
Dataset.remove_sample()
andDataset.remove_samples()
in favor of a singleDataset.delete_samples()
methodBrain 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 tutorialAdded example use of
to_patches()
to the detection mistakes tutorialAdded 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 tagsAdded 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
fieldsFixed 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 a
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 predictionsscatterplot()
: an interacive 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 spacelocation_scatterplot()
: an interacive scatterplot of a dataset via itsGeoLocation
coordinatesAdded
GeoLocation
andGeoLocations
label types that can be used to store arbitrary GeoJSON location data on samplesAdded the
GeoJSONDataset
dataset type for importing and exporting datasets in GeoJSON formatAdded
SampleCollection.geo_near()
andSampleCollection.geo_within()
view stages for querying datasets with location data
- Added a
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 pathAdded
Dataset.from_archive()
andDataset.add_archive()
factory methods for importing datasets stored in archivesAdded 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 tagsAdded
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 requiredAdded
Dataset.mask_targets
andDataset.default_mask_targets
fields for providing semantic labels forSegmentation
mask values to be used in the App’s expanded sample viewImproved the runtime of
Dataset.merge_samples()
by ~100x for image datasets and ~10x for video datasetsAdded an
Dataset.add_collection()
method for adding the contents of aSampleCollection
to anotherDataset
Added the trigonometric view expresssions
cos
,sin
,tan
,cosh
sinh
,tanh
,arccos
,arcsin
,arcan
arccosh
,arcsinh
, andarctanh
Added a
randn
expression that can generate Gaussian random numbersFixed a bug that prevented
evaluate_detections()
from being able to process video datasetsAdded 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 fieldsFixed 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 datasetsAdded 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 updatesFixed 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 detailsUpdated
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 requestedAdd 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 databaseAdded 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
tabMoved
None
selection forStringFields
to the input format in the Filters SidebarChanged
None
options to only be present whenNone
values exist for a supportedField
in the Filters SidebarAdded
Color by label
support forClassification
,Classifications
,BooleanField
, andStringField
Added support excluding selected values for a
StringField
in the Fields SidebarVarious 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 detailsAdded
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()
aggregationAdded 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]
syntaxAdded 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 computedAdded 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 largeImproved plotting of numeric fields in the
Scalars
tab, including[min, max)
ranges for tooltips and integer binning when appropriateFixed a bug that prevented
select_fields()
andexclude_fields()
from being properly respected by the Filters SidebarFixed 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
HistogramValues
andSum
aggregationsAdded over a dozen new
ViewExpression
methods including powerful transformations likemap_values()
,reduce()
, andsort()
Exposed all
Aggregtaions
as single execution methods on theSampleCollection
interface, e.g.,distinct()
Added support for all
Label
types infilter_labels()
Added support for generalized field paths (embedded fields, lists, etc) to the
Bounds
,Count
,CountValues
, andDistinct
aggregationsRemoved the deprecated
ConfidenceBounds
,CountLabels
, andDistinctLabels
aggregationsRemoved the redundant
match_tag()
stage in favor ofmatch_tags()
Removed
AggregationResult
classes in favor of returningAggregation
results directly as builtin typesAdded the optional
config
keyword argument tolaunch_app()
andSession
for overriding the default AppConfig.
Zoo
Added a default confidence threshold of
0.3
when applying models from the Model Zoo viaapply_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 environmentRenamed
Dataset.clone_field()
toDataset.clone_sample_field()
for consistency with other operationsAdded a
Dataset.clone_frame_field()
method for cloning frame-level fields of video datasetsAdded
DatasetView.clone_sample_field()
andDatasetView.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 datasetAdded a
DatasetView.save()
method for saving a view, overwriting the contents of the underlying datasetRe-implemented
Dataset.clone_sample_field()
andDataset.merge_samples()
via efficient DB-only operationsAdded the
overwrite
keyword argument to theDataset()
constructorAdded a
database_dir
option to the FiftyOne ConfigAdded 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 settting
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 cellsAdded 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
FiftyOne 0.6.5¶
Released November 16, 2020
App
Added concurrency to the server wich 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 SidebarAdded support for filtering
keypoint
,keypoints
,polyline
,polylines
fields bylabel
value in the Filters SidebarMoved 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()
andDataset.delete_sample_field()
Added support for renaming and deleting embedded document fields of frames of video samples via
Dataset.rename_frame_field()
andDataset.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()
andSampleCollection.write_json()
, respectivelyAdded
a module
for importing and exporting annotations from Scale AIAdded
a module
for importing and exporting annotations from LabelboxFixed a bug that prevented
Dataset.add_sample()
andDataset.add_samples()
from working properly when provided samples that belong to other sample collectionsFixed 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 supercedes the old dedicated per-label-type filtering stagesAdded
select_labels()
andexclude_labels()
to select or exclude labels from a dataset or viewAdded an
aggregations framework
for computing aggregate values viaaggregate()
Added the
selected_labels
session attribute, which holds the currently selected labels in the AppAdded support for
adding
,renaming
, anddeleting
frame-level fields of video datasetsAdded the
TorchImagePatchesDataset
that emits tensors of patches extracted from images defined by sets ofDetections
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 filterImproved 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()
andcompute_hardness()
now support multilabel classification tasks
Core
Polyline
instances can now represent labels composed of multiple shapesSegmentations 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()
andFrames.merge()
methods to replace and merge video frames, respectivelyFixed
Dataset.merge_samples()
to properly merge the frame-by-frame contents of video samplesFixed 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 barAdded support for viewing
index
fields ofDetection
labels in the media viewer, if presentFixed counting of
Classifications
fields in the expanded sample viewFixed a bug that prevented label filters from fully resetting when a
reset
orclear
button is pressed
Core
Added support for storing
keypoints
,polylines
, andsegmentation masks
on samplesAdded 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
formatAdded 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
instancesAdded 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 assumedFixed 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
labelsAdded 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 stageFixed a bug that prevented FiftyOne from starting for some Windows users
Fixed a bug that caused
take()
andshuffle()
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()
methodAdded support for filtering fields via the
filter_field()
methodProvided 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) stageESC
toggles focus on the ViewBar, which activates shortcutsTAB
,ENTER
, andESC
submits stage input fieldsLEFT
andRIGHT ARROW
traverses view stages and add-stage buttonsSHIFT + LEFT ARROW
andSHIFT + RIGHT ARROW
traverse stages
Core
Greatly improved the performance of loading dataset samples from the database
Added more string matching operations when querying samples, including
starts_with()
,ends_with()
,contains_str()
andmatches_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
typeAdded a
Dataset.info
field that can be used to store dataset-level info in FiftyOne datasetsAdded a
shuffle()
view stage for randomly shuffling the samples in a datasetUpgraded 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. stagesAdded an
evaluate_detections()
utility for evaluating object detections in FiftyOne datasetsAdding 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
interfaceAdded support for exporting datasets to disk in custom formats via the
DatasetExporter
interfaceAdded support for parsing individual elements of samples in the
SampleParser
interfaceAdded an option to image loaders in
fiftyone.utils.torch
to convert images to RGBFixed an issue where
Dataset.delete_sample_field()
would not permanently delete fields if they were modified after deletionImproved 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()
andDataset.from_dir()
to allow for importing datasets on disk in any supported formatAdded a
convert_dataset()
method to convert between supported dataset formatsAdded 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 formatsAdded
fiftyone datasets head
andfiftyone datasets tail
to print the head/tail of datasetsAdded
fiftyone datasets stream
to stream the samples in a dataset to the terminal with aless
-like interfaceAdded
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-imagesImproved 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
interfaceAdded 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 samplesImproved 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