Skip to main content

FiftyOne: the open-source tool for building high-quality datasets and computer vision models

Project description


The open-source tool for building high-quality datasets and computer vision models

WebsiteDocsTry it NowTutorialsExamplesBlogCommunity

PyPI python PyPI version Downloads Build License Slack Medium Mailing list Twitter


Nothing hinders the success of machine learning systems more than poor quality data. And without the right tools, improving a model can be time-consuming and inefficient.

FiftyOne supercharges your machine learning workflows by enabling you to visualize datasets and interpret models faster and more effectively.

Use FiftyOne to get hands-on with your data, including visualizing complex labels, evaluating your models, exploring scenarios of interest, identifying failure modes, finding annotation mistakes, and much more!

You can get involved by joining our Slack community, reading our blog on Medium, and following us on social media:

Slack Medium Twitter LinkedIn Facebook


You can install the latest stable version of FiftyOne via pip:

pip install fiftyone

Consult the installation guide for troubleshooting and other information about getting up-and-running with FiftyOne.


Dive right into FiftyOne by opening a Python shell and running the snippet below, which downloads a small dataset and launches the FiftyOne App so you can explore it:

import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset("quickstart")
session = fo.launch_app(dataset)

Then check out this Colab notebook to see some common workflows on the quickstart dataset.

Note that if you are running the above code in a script, you must include session.wait() to block execution until you close the App. See this page for more information.


Full documentation for FiftyOne is available at In particular, see these resources:


Check out the fiftyone-examples repository for open source and community-contributed examples of using FiftyOne.

Contributing to FiftyOne

FiftyOne is open source and community contributions are welcome!

Check out the contribution guide to learn how to get involved.

Installing from source

The instructions below are for macOS and Linux systems. Windows users may need to make adjustments. If you are working in Google Colab, skip to here.


You will need:

  • Python (3.6 or newer)
  • Node.js - on Linux, we recommend using nvm to install an up-to-date version.
  • Yarn - once Node.js is installed, you can install Yarn via npm install -g yarn
  • On Linux, you will need at least the openssl and libcurl packages. On Debian-based distributions, you will need to install libcurl4 or libcurl3 instead of libcurl, depending on the age of your distribution. For example:
# Ubuntu
sudo apt install libcurl4 openssl

# Fedora
sudo dnf install libcurl openssl


We strongly recommend that you install FiftyOne in a virtual environment to maintain a clean workspace. The install script is only supported in POSIX-based systems (e.g. Mac and Linux).

First, clone the repository:

git clone
cd fiftyone

Then run the install script:

bash install.bash

NOTE: The install script adds to your nvm settings in your ~/.bashrc or ~/.bash_profile, which is needed for installing and building the App

NOTE: When you pull in new changes to the App, you will need to rebuild it, which you can do either by rerunning the install script or just running yarn build in the ./app directory.

Upgrading your source installation

To upgrade an existing source installation to the bleeding edge, simply pull the latest develop branch and rerun the install script:

git checkout develop
git pull
bash install.bash

Developer installation

If you would like to contribute to FiftyOne, you should perform a developer installation using the -d flag of the install script:

bash install.bash -d

Source installs in Google Colab

You can install from source in Google Colab by running the following in a cell and then restarting the runtime:


git clone --depth 1
cd fiftyone
bash install.bash

Generating documentation

See the docs guide for information on building and contributing to the documentation.

Docker installs

Follow the instructions below to build and run a Docker image containing a source build of FiftyOne.

Building an image

First, clone the repository:

git clone
cd fiftyone

Then build a FiftyOne wheel:

make python

and then build the image:

docker build -t voxel51/fiftyone .

The default image uses Ubuntu 20.04 and Python 3.8, but you can customize these via optional build arguments:

docker build \
    --build-arg BASE_IMAGE=ubuntu:18.04 \
    --build-arg PYTHON_VERSION=3.9 \
    -t voxel51/fiftyone .

Refer to the Dockerfile itself for additional Python packages that you may wish to include in your build.

Running an image

The image is designed to persist all data in a single /fityone directory with the following organization:

    db/             # FIFTYONE_DATABASE_DIR
    default/        # FIFTYONE_DEFAULT_DATASET_DIR
        datasets/   # FIFTYONE_DATASET_ZOO_DIR
        models/     # FIFTYONE_MODEL_ZOO_DIR

Therefore, to run a container, you should mount /fiftyone as a local volume via --mount or -v, as shown below:


docker run -v ${SHARED_DIR}:/fiftyone -p 5151:5151 -it voxel51/fiftyone

The -p 5151:5151 option is required so that when you launch the App from within the container you can connect to it at http://localhost:5151 in your browser.

You can also include the -e or --env-file options if you need to further configure FiftyOne.

By default, running the image launches an IPython shell, which you can use as normal:

import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset("quickstart")
session = fo.launch_app(dataset)

Note that any datasets you create inside the Docker image must refer to media files within SHARED_DIR or another mounted volume if you intend to work with datasets between sessions.

Connecting to a localhost database

If you are using a self-managed database that you ordinarily connect to via a URI like mongodb://localhost, then you will need to tweak this slightly when working in Docker. See this question for details.

On Linux, include --network="host" in your docker run command and use mongodb:// for your URI.

On Mac or Windows, use mongodb://host.docker.internal for your URI.


You can uninstall FiftyOne as follows:

pip uninstall fiftyone fiftyone-brain fiftyone-db fiftyone-desktop


If you use FiftyOne in your research, feel free to cite the project (but only if you love it 😊):

  author={Moore, B. E. and Corso, J. J.},
  journal={GitHub. Note:},

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fiftyone-0.17.2.tar.gz (2.1 MB view hashes)

Uploaded source

Built Distribution

fiftyone-0.17.2-py3-none-any.whl (2.2 MB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page