This repo contains the code for 'ODIN: Automated Drift Detection and Recovery in Video Analytics'. It contains two code bases -- training for the DA-GAN, and the ODIN system itself.
You will need:
- PyTorch 1.4.0
- Torchvision 0.4.0
- kaptan 0.5.12
Multi-GPU training is currently not supported. You will need to ensure torch recognizes only one GPU, otherwise several functions will throw NotImplementedError().
The DA-GAN can be trained from within DA_GAN.ipynb. The code will download CIFAR-10 and train the DA-GAN model. We designed it to work with Google Colab, so you will need to upload the vaegan.zip
file into your colab session and unzip it within the DA_GAN.ipynb notebook (first code cell). The completed models should be backed up to your google drive.
mlep_odin_main
is code for ODIN itself. Specifically, the mlep
folder contains classes for KL-based Delta Band distribution detector (ZonedDistribution class) plus the odin system (MLEPDriftAdaptor class). Inside the directory, you can install it as a development package:
cd mlep
pip3 install -e .
This is the most up to date set of instructions. However, we are continuously updating the codebase, so the most recent commit may break changes. We'll try to update readme whenever this happens.
You should install the minimum (or standard) requirements with pip from the requirements.txt
or minrequirements.txt
. You will also need to install Pytorch and Torchvision. ODIN has out-of-the-box support for image and text embedding methods: DA-GAN (in mlep.models
for images) and word2vec for text. The ODIN system is described in mlep.core.MLEPModedlDriftAdaptor
. You will need to instantiate this class for an application and pass in a configuration based on mlep/configuration/MLEPModelDriftAdaptorConfiguration.py