FiftyOneImageAnnotations
FiftyOneImageAnnotations provides a Julia interface to the FiftyOne toolkit, that enables curating datasets, evaluating models, finding annotation mistakes, visualizing embeddings etc.
Caveats
The embedded MongoDB process is left running after the Julia session is closed. Stop the process manually - or, preferable, use an external MongoDB instance.
The MongoDB process can be terminated using:
kill -3 `ps | grep fiftyone | grep -v service/main.py | grep mongod | cut -d " " -f 1`
This is somewhat unsafe: The MongoDB documentation says that signal 2/INT should be used, but it seems 3/QUIT actually works.
Usage
using FiftyOneImageAnnotations
foo_dataset = Dataset("foo")
Dataset("bar"; persistent = true)
list_datasets() # lists "foo" and "bar" datasets
bar_dataset = load_dataset("bar")
foo_dataset.persistent # false
bar_dataset.persistent # true
delete_non_persistent_datasets()
delete_dataset("bar")
Importing an ImageAnnotations dataset
using FiftyOneImageAnnotations
using ImageAnnotations
dataset = ImageAnnotationDataSet(AnnotatedImage[]) # ImageAnnotationDataSet{Any}(Any[], AnnotatedImage[])
dataset_from_importer(ImageAnnotationDatasetImporter(dataset)) # FiftyOneImageAnnotations.Dataset
Development
Installing FiftyOne can take a long time - disabling installation of dependencies with CondaPkg can speed up development significanly (once the dependencies are installed):
JULIA_CONDAPKG_BACKEND=Null JULIA_PYTHONCALL_EXE=`pwd`/.CondaPkg/env/bin/python julia --project