Skip to content

Commit

Permalink
adding release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
brimoor committed Sep 25, 2024
1 parent e94cde0 commit 3f9a235
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 30 deletions.
8 changes: 2 additions & 6 deletions docs/scripts/make_model_zoo_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,9 @@
import fiftyone.zoo as foz
{% if 'segment-anything' in name and 'video' in name %}
from fiftyone import ViewField as F
{% endif %}
{% if 'med-sam' in name %}
{% elif 'med-sam' in name %}
from fiftyone import ViewField as F
from fiftyone.utils.huggingface import load_from_hub
dataset = load_from_hub("Voxel51/BTCV-CT-as-video-MedSAM2-dataset")[:2]
{% endif %}
{% if 'imagenet' in name %}
Expand All @@ -117,6 +113,7 @@
.save()
)
{% elif 'med-sam' in name %}
dataset = load_from_hub("Voxel51/BTCV-CT-as-video-MedSAM2-dataset")[:2]
# Retaining detections from a single frame in the middle
# Note that SAM2 only propagates segmentation masks forward in a video
Expand All @@ -126,7 +123,6 @@
.set_field("frames.gt_detections", None)
.save()
)
{% else %}
dataset = foz.load_zoo_dataset(
"coco-2017",
Expand Down
10 changes: 7 additions & 3 deletions docs/source/deprecation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@ FiftyOne Deprecation Notices

.. default-role:: code

.. _deprecation-fiftyone-desktop:

FiftyOne Desktop
----------------
*Support ended with 0.25.0*
*Support ended with FiftyOne 0.25.0*

A compatible `fiftyone-desktop https://pypi.org/project/fiftyone-desktop/`_
A compatible `fiftyone-desktop <https://pypi.org/project/fiftyone-desktop>`_
package is no longer available as of `fiftyone==0.25.0`.

Chromium-based browsers, Firefox, or a :ref:`notebook <notebooks>` environment
are recommended for the best FiftyOne experience.

.. _deprecation-python-3.8:

Python 3.8
----------
*Support Ended October 2024*
*Support ended October 1, 2024*

`Python 3.8 <https://devguide.python.org/versions/>`_
transitions to `end-of-life` effective October of 2024. FiftyOne releases after
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
107 changes: 104 additions & 3 deletions docs/source/release-notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,115 @@ FiftyOne Release Notes

.. default-role:: code

FiftyOne Teams 2.1.0
--------------------
*Released October 1, 2024*

Includes all updates from :ref:`FiftyOne 1.0.0 <release-notes-v1.0.0>`, plus:

- Super admins can now migrate their deployments to
:ref:`Internal Mode <internal-mode>` via the
:ref:`Super Admin UI <super-admin-ui>`
- Added support for sending user invitations in
:ref:`Internal Mode <internal-mode>`
- Optimized performance of the :ref:`dataset page <teams-homepage>`
- Fixed a BSON serialization bug that could cause errors when cloning or
exporting certain dataset views from the Teams UI

.. _release-notes-v1.0.0:

FiftyOne 1.0.0
--------------
*Released October 1, 2024*

What's New

- The `FiftyOne Brain <https://github.com/voxel51/fiftyone-brain>`_ is now
fully open source. Contributions are welcome!
- Introducing Modal Panels, bringing the ability to develop and use panels in
the App's sample modal
`#4625 <https://github.com/voxel51/fiftyone/pull/4625>`_
- All datasets now have :ref:`automatically populated <default-sample-fields>`
`created_at` and `last_modified_at` fields on their samples and frames
`#4597 <https://github.com/voxel51/fiftyone/pull/4597>`_
- Added support for loading
:ref:`remotely-sourced zoo datasets <dataset-zoo-remote>` whose
download/preparation instructions are stored in GitHub or public URLs
`#4752 <https://github.com/voxel51/fiftyone/pull/4752>`_
- Added support for loading
:ref:`remotely-sourced zoo models <model-zoo-remote>` whose definitions are
stored in GitHub or public URLs
`#4786 <https://github.com/voxel51/fiftyone/pull/4786>`_
- Added `Med-SAM2 <https://arxiv.org/abs/2408.00874>`_ to the
:ref:`model zoo <model-zoo-med-sam-2-video-torch>`!
`#4733 <https://github.com/voxel51/fiftyone/pull/4733>`_,
`#4828 <https://github.com/voxel51/fiftyone/pull/4828>`_

App

- Added dozens of :ref:`builtin operators <using-operators>` for performing
common operations directly from the App
`#4830 <https://github.com/voxel51/fiftyone/pull/4830>`_
- Label overlays in the grid are now scaled proportionally to grid zoom
`#4747 <https://github.com/voxel51/fiftyone/pull/4747>`_
- Improved support for visualizing and filtering |DynamicEmbeddedDocument| list
fields
`#4833 <https://github.com/voxel51/fiftyone/pull/4833>`_
- Added a new timeline API for synchronizing playback of multiple modal panels
`#4772 <https://github.com/voxel51/fiftyone/pull/4772>`_
- Improved UI, documentation, and robustness when working with
:ref:`custom color schemes <app-color-schemes-app>`
`#4763 <https://github.com/voxel51/fiftyone/pull/4763>`_
- Fixed a bug where the active group slice was not being persisted when
navigating between groups in the modal
`#4836 <https://github.com/voxel51/fiftyone/pull/4836>`_
- Fixed a bug when selecting samples in grouped datasets in the modal
`#4789 <https://github.com/voxel51/fiftyone/pull/4789>`_

Core

- Added support for creating :ref:`summary fields <summary-fields>` to optimize
queries on large datasets with many objects
`#4765 <https://github.com/voxel51/fiftyone/pull/4765>`_
- Dataset fields now have automatically populated `created_at` attributes
`#4730 <https://github.com/voxel51/fiftyone/pull/4730>`_
- Upgraded the
:meth:`delete_samples() <fiftyone.core.dataset.Dataset.delete_samples>`
and :meth:`clear_frames() <fiftyone.core.dataset.Dataset.clear_frames>`
methods to support bulk deletions of 100k+ samples/frames
`#4787 <https://github.com/voxel51/fiftyone/pull/4787>`_
- The :meth:`default_sidebar_groups() <fiftyone.core.odm.dataset.DatasetAppConfig.default_sidebar_groups>`
method now correctly handles datetime fields
`#4815 <https://github.com/voxel51/fiftyone/pull/4815>`_
- Fixed an off-by-one error when converting semantic segmentations to/from
instance segmentations
`#4826 <https://github.com/voxel51/fiftyone/pull/4826>`_
- Protect against infinitely growing content size batchers
`#4806 <https://github.com/voxel51/fiftyone/pull/4806>`_
- Removed the deprecated `remove_sample()` and `remove_samples()` methods from
the |Dataset| class
`#4832 <https://github.com/voxel51/fiftyone/pull/4832>`_
- Deprecated :ref:`Python 3.8 support <deprecation-python-3.8>`

Plugins

- Improved styling for :class:`GridView <fiftyone.operators.types.GridView>`
components
`#4764 <https://github.com/voxel51/fiftyone/pull/4764>`_
- A loading error is now displayed in the actions row when operators with
:ref:`placements <operator-placement>` fail to load
`#4714 <https://github.com/voxel51/fiftyone/pull/4714>`_
- Ensure the App loads when plugins fail to load
`#4769 <https://github.com/voxel51/fiftyone/pull/4769>`_

.. _release-notes-v0.25.2:

FiftyOne 0.25.2
---------------
*Released September 19, 2024*

* Require `pymongo<4.9` to fix database connections
* Require `pydicom<3` for :ref:`DICOM datasets <DICOMDataset-import>`

- Require `pymongo<4.9` to fix database connections
- Require `pydicom<3` for :ref:`DICOM datasets <DICOMDataset-import>`

FiftyOne Teams 2.0.1
--------------------
Expand Down
66 changes: 48 additions & 18 deletions docs/source/user_guide/using_datasets.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1635,16 +1635,14 @@ editable at any time:
Summary fields
--------------

Summary fields allow you to efficiently perform queries where directly querying
the underlying field is prohibitively slow due to the number of objects/frames
in the field.
Summary fields allow you to efficiently perform queries on large datasets where
directly querying the underlying field is prohibitively slow due to the number
of objects/frames in the field.

For example, as we'll see below, summary fields are useful for retrieving
samples in a video dataset that contain specific values of interest in at least
one frame.

Use :meth:`create_summary_field() <fiftyone.core.dataset.Dataset.create_summary_field>`
to create a summary field for a given input field path:
For example, suppose you're working on a
:ref:`video dataset <video-datasets>` with frame-level objects, and you're
interested in finding videos that contain specific classes of interest, eg
`person`, in at least one frame:

.. code-block:: python
:linenos:
Expand All @@ -1656,6 +1654,25 @@ to create a summary field for a given input field path:
dataset = foz.load_zoo_dataset("quickstart-video")
dataset.set_field("frames.detections.detections.confidence", F.rand()).save()
session = fo.launch_app(dataset)
.. image:: /images/datasets/quickstart-video.gif
:alt: quickstart-video
:align: center

One approach is to directly query the frame-level field (`frames.detections`
in this case) in the App's sidebar. However, when the dataset is large, such
queries are inefficient, as they cannot
:ref:`leverage indexes <app-indexed-filtering>` and thus require full
collection scans over all frames to retrieve the relevant samples.

A more efficient approach is to first use
:meth:`create_summary_field() <fiftyone.core.dataset.Dataset.create_summary_field>`
to summarize the relevant input field path(s):

.. code-block:: python
:linenos:
# Generate a summary field for object labels
field_name = dataset.create_summary_field("frames.detections.detections.label")
Expand All @@ -1666,15 +1683,6 @@ to create a summary field for a given input field path:
# Generate a summary field for [min, max] confidences
dataset.create_summary_field("frames.detections.detections.confidence")
.. note::

Summary fields are :ref:`read-only <read-only-fields>`, as they are
implicitly derived from the contents of their source field and are not
intended to be directly modified.

They are also :ref:`indexed <app-indexed-filtering>` by default, so
filtering them :ref:`in the App <app-indexed-filtering>` is performant.

Summary fields can be generated for sample-level and frame-level fields, and
the input fields can be either categorical or numeric:

Expand Down Expand Up @@ -1753,6 +1761,28 @@ the input fields can be either categorical or numeric:
]
"""
As the above examples illustrate, summary fields allow you to encode various
types of information at the sample-level that you can directly query to find
samples that contain specific values.

Moreover, summary fields are :ref:`indexed <app-indexed-filtering>` by default
and the App can natively leverage these indexes to provide performant
filtering:

.. image:: /images/datasets/quickstart-video-summary-fields.gif
:alt: quickstart-video-summary-fields
:align: center

.. note::

Summary fields are automatically added to a `summaries`
:ref:`sidebar group <dataset-app-config-sidebar-groups>` in the App for
easy access and organization.

They are also :ref:`read-only <read-only-fields>` by default, as they are
implicitly derived from the contents of their source field and are not
intended to be directly modified.

You can use
:meth:`list_summary_fields() <fiftyone.core.dataset.Dataset.list_summary_fields>`
to list the names of the summary fields on your dataset:
Expand Down

0 comments on commit 3f9a235

Please sign in to comment.