WIP: this repo is a work in progress!
FiftyOne provides a powerful plugin framework that allows for extending and customizing the functionality of the tool.
With plugins, you can add new functionality to the FiftyOne App, create integrations with other tools and APIs, render custom panels, and add custom buttons to menus.
With FiftyOne Teams, you can even write plugins that allow users to execute long-running tasks from within the App that run on a connected compute cluster.
This repository contains a comprehensive collection of FiftyOne Plugin Examples designed to inspire and educate you on how to build your own plugins. Each example demonstrates different aspects of the plugin system and serves as a learning resource for developers looking to extend FiftyOne's functionality.
For example, here's a taste of what you can build with the plugin framework!
brain.mp4
This repository contains a curated collection of FiftyOne Plugin Examples, organized into the following categories:
- Core Examples: fundamental examples that demonstrate essential plugin concepts and patterns
- Operator Examples: examples showing how to build custom operators and operations
- Panel Examples: examples demonstrating how to create custom panels and visualizations
- Integration Examples: examples showing how to integrate with external tools and APIs
- Advanced Examples: complex examples showcasing advanced plugin capabilities
Name | Description |
---|---|
skeleton | 🦴 A minimal plugin template showing the basic structure and components needed to get started |
hello-world | 👋 A simple example that contains both Python and JavaScript components to demonstrate cross-language plugin development |
basic-operator | ⚙️ Learn how to create your first custom operator with input/output schemas and execution logic |
basic-panel | 📊 Create your first custom panel to display data and interact with your FiftyOne datasets |
Name | Description |
---|---|
operator-examples | ⚙️ A comprehensive collection of example operators showing how to use the operator type system to build custom FiftyOne operations |
data-transformation | 🔄 Examples of operators that transform and manipulate dataset fields and metadata |
external-api | 🌐 Learn how to build operators that integrate with external APIs and services |
batch-processing | 📦 Examples of operators that process multiple samples efficiently |
Name | Description |
---|---|
panel-examples | 📊 A collection of example panels demonstrating common patterns for building Python panels |
visualization-panels | 📈 Examples of custom visualization panels using popular charting libraries |
interactive-panels | 🖱️ Learn how to build interactive panels that respond to user input and selections |
data-exploration | 🔍 Examples of panels designed for exploring and analyzing dataset characteristics |
Name | Description |
---|---|
ml-framework-integration | 🤖 Examples showing how to integrate with popular ML frameworks like PyTorch, TensorFlow, and scikit-learn |
cloud-integration | ☁️ Learn how to build plugins that work with cloud storage and compute services |
database-integration | 🗄️ Examples of plugins that integrate with external databases and data sources |
annotation-integration | ✏️ Learn how to integrate with annotation tools and workflows |
Name | Description |
---|---|
delegated-operations | 📡 Examples of plugins that use FiftyOne Teams delegated operations for long-running tasks |
custom-workflows | 🔄 Complex examples showing how to build multi-step workflows and pipelines |
real-time-integration | ⚡ Examples of plugins that handle real-time data streams and live updates |
performance-optimization | 🚀 Advanced examples demonstrating techniques for optimizing plugin performance |
If you haven't already, install FiftyOne:
pip install fiftyone
To explore these examples, you can clone this repository and run them locally:
git clone https://github.com/voxel51/fiftyone-plugin-examples
cd fiftyone-plugin-examples
Each example directory contains:
- A
README.md
with detailed instructions - Source code demonstrating the concept
- Any necessary configuration files
- Instructions for testing and running the example
You can use the CLI commands below to manage examples you've installed:
# List all plugins you've downloaded
fiftyone plugins list
# List the available operators and panels
fiftyone operators list
# Disable a particular plugin
fiftyone plugins disable <name>
# Enable a particular plugin
fiftyone plugins enable <name>
If you plan to develop plugins locally, you can clone the repository and symlink it into your FiftyOne plugins directory like so:
cd /path/to/fiftyone-plugin-examples
ln -s "$(pwd)" "$(fiftyone config plugins_dir)/fiftyone-plugin-examples"
You're also welcome to contribute to the examples that live natively in this repository. Check out the contributions guide for instructions.
If you want join a fast-growing community of engineers, researchers, and practitioners who love computer vision, join the FiftyOne Discord community 🚀🚀🚀
💡 Pro tip: the #plugins
channel is a great place to discuss plugin development!
If you've made it this far, we'd greatly appreciate if you'd take a moment to check out FiftyOne and give us a star!
FiftyOne is an open source library for building high-quality datasets and computer vision models. It's the engine that powers this project.
Thanks for visiting! 😊