A Python library for computer vision annotation tasks using Dash
Project description
Dash Annotate CV - A dash library for computer vision annotation tasks
dash_annotate_cv
is a Python Dash library for computer vision annotation tasks. It exposes reusable annotation components in a library format for dash
.
Example of whole-image label annotations
Example of bounding box annotations
Supported tasks:
- Annotation of images (whole image labels)
- Annotating multiple labels per image
- Annotating bounding boxes including labels
Roadmap for future tasks:
- Support for more annotation formats: YOLO, COCO, etc.
- Support for image segmentation tasks.
- Support for skeleton annotation tasks.
- Annotating video events
- Annotating video tags
Note: this library is not meant for production usage. It is meant to be used for quick prototyping and testing of annotation tasks.
Getting started
-
(Recommended) Create a new conda environment.
conda create -n dash_annotate_cv python=3.11 conda activate dash_annotate_cv
-
Install using pip:
pip install dash_annotate_cv
Or local install from the repository:
git clone https://github.com/smrfeld/dash-annotate-cv cd dash-annotate-cv pip install -e .
-
Run the example as described next.
Examples
The app can be launched in two ways:
- A simple command line utility lets you get up and running quickly.
- The app can be launched by writing a short Python script, which lets you use the annotation components in a flexible way in your own Dash app. We follow the practices of resuable components in Dash described in All-in-one components for Dash.
Each is described here briefly. You can also check out the examples.
Command line utility
To get started labeling immediately, you can use a simple command line utility. You just need to write a config YAML file. You can see the examples directory for more examples - as simple example is as follows:
# Annotation mode
# image_labels = Annotate images with whole-image labels
# bboxs = Annotate bounding boxes in each image
mode: image_labels
# Label source
label_source:
labels:
- astronaut
- camera
- cat
# Image source
image_source:
# Image source type
source_type: list_of_files
# List of files
list_of_files:
- ex_chelsea.jpg
- ex_astronaut.jpg
- ex_camera.jpg
# Storage (optional)
storage:
storage_type: json
json_file: example.json
# Options (optional)
options:
# How many labels can be selected per image
selection_mode: single
To launch the app, simply run:
dacv conf.yml
Navigate to the default address http://127.0.0.1:8050/
in your browser to use the app.
Use dacv -h
for a complete list of options. Or check out the examples directory for more examples.
Python
You can use the library in your own Dash app. This is recommended as a more flexible way to create your own annotation interface. The following example shows how to use the library to annotate images with labels.
# Import the library
import dash_annotate_cv as dac
# Other imports
from dash import Dash, html
import dash_bootstrap_components as dbc
from skimage import data
# Load some images
images = [ ("chelsea",data.chelsea()), ("astronaut",data.astronaut()), ("camera",data.camera()) ] # type: ignore
images_pil = [ (name,Image.fromarray(image)) for name,image in images ]
# Set up the image and label sources
image_source = dac.ImageSource(images=images_pil)
label_source = dac.LabelSource(labels=["astronaut", "camera", "cat"])
# Set up writing
storage = dac.AnnotationStorage(storage_types=[dac.StorageType.JSON], json_file="annotations.json")
app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
app.layout = dbc.Container([
html.H1("Annotate Images"),
dac.AnnotateImageLabelsAIO(label_source, image_source, annotation_storage=storage)
])
app.run(debug=True)
The result is shown in the gif above. Check out the examples directory for more examples.
Loading the annotations & format
Loading the annotations is as simple as:
with open("annotations.json","r") as f:
annotations = dac.ImageAnnotations.from_dict(json.load(f))
See the ImageAnnotations
class for more information on the format.
Dev
Some useful references:
Project details
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
Built Distribution
File details
Details for the file dash_annotate_cv-0.1.9.tar.gz
.
File metadata
- Download URL: dash_annotate_cv-0.1.9.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8f7fdd4881527fcededc19e2b42cd6c3d8c86fbde57c328942d0b2087f204a3 |
|
MD5 | 5489224b020bbe01c88f1ebbc892c7eb |
|
BLAKE2b-256 | 9c104e9331b0aad5f08c7d01186567313229f0bb47e832e7bc482bef4a1276a3 |
File details
Details for the file dash_annotate_cv-0.1.9-py3-none-any.whl
.
File metadata
- Download URL: dash_annotate_cv-0.1.9-py3-none-any.whl
- Upload date:
- Size: 26.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34c6a3bdadb89ed1038855b63ac0bf3965d6bc016131398ae49d3fd292c1240f |
|
MD5 | 86d3b2c647f910881ca5f107811e2174 |
|
BLAKE2b-256 | 953bf88c65601b8e0d6b5fe7bd5ebc7070c7242868cdea1d6dae8e839b746034 |