This notebook won't work in Colab, due to an incompatibility with the
Using Fiftyone in IceVision
The following downloads and runs a short shell script. The script installs IceVision, IceData, the MMDetection library, and Yolo v5 as well as the fastai and pytorch lightning engines.
Install from pypi...
# Torch - Torchvision - IceVision - IceData - MMDetection - YOLOv5 - EfficientDet Installation !wget https://raw.githubusercontent.com/airctic/icevision/master/icevision_install.sh # Choose your installation target: cuda11 or cuda10 or cpu !bash icevision_install.sh cuda11
... or from icevision master
# # Torch - Torchvision - IceVision - IceData - MMDetection - YOLOv5 - EfficientDet Installation # !wget https://raw.githubusercontent.com/airctic/icevision/master/icevision_install.sh # # Choose your installation target: cuda11 or cuda10 or cpu # !bash icevision_install.sh cuda11 master
fiftyone is not part of IceVision. We need to install it separately.
# Install fiftyone %pip install fiftyone -U
# Restart kernel after installation import IPython IPython.Application.instance().kernel.do_shutdown(True)
All of the IceVision components can be easily imported with a single line.
from icevision.all import * from icevision.models import * # Needed for inference later import icedata # Needed for sample data import fiftyone as fo
The fiftyone integration of IceVision can be used on either IceVision Datasets or IceVision Prediction. Let's start by visualizing a dataset.
If you don't know fiftyone yet, visit the website and read about the concepts: https://voxel51.com/docs/fiftyone.
Fiftyone is a tool to analyze datasets and detections of all forms.
For object detection these concepta are most relevant:
Fiftyone is structured into
fo.Datasets. So every viewable entity is related to a
fo.Dataset. An image is represented by a
fo.Sample. After you created a
fo.Sample you can add
fo.Detections, which is constructed by a list of
fo.Detection. Finally, you need to add a
fo.Sample to your
fo.Dataset and then launch your app by calling
fo.launch_app(dataset). IceVision enables you to create all of these
fo objects from IceVision classes.
Before we train or execute inference, we need to create an
icevision.Dataset. From this dataset, we can create a
Since fiftyone operates on filepaths, you dataset needs filepath as component and you cannot use
Dataset.from_images as it stores the images in RAM.
We use the fridge object dataset available from IceData.
# List all available fiftyone datasets on your machine: fo.list_datasets()
# Download dataset infer_ds_path = icedata.fridge.load_data() train_records, valid_records = icedata.fridge.parser(infer_ds_path).parse() # Set fo dataset name fo_dataset_name = "inference_dataset" #RandomSplitter Create fiftyone dataset fo_dataset = data.create_fo_dataset(valid_records, fo_dataset_name)
# See your new dataset in the lists fo.list_datasets()