DISTIL: Deep dIverSified inTeractIve Learning.

Overview


            

GitHub Decile Documentation GitHub Stars GitHub Forks

Cut down your labeling cost and time by 3x-5x!

What is DISTIL?


            

DISTIL is an active learning toolkit that implements a number of state-of-the-art active learning strategies with a particular focus for active learning in the deep learning setting. DISTIL is built on PyTorch and decouples the training loop from the active learning algorithm, thereby providing flexibility to the user by allowing them to control the training procedure and model. It allows users to incorporate new active learning algorithms easily with minimal changes to their existing code. DISTIL also provides support for incorporating active learning with your custom dataset and allows you to experiment on well-known datasets. We are continuously incorporating newer and better active learning selection strategies into DISTIL, and we plan to expand the scope of the supported active learning algorithms to settings beyond the currently supported supervised classification setting.

Key Features of DISTIL

  • Decouples the active learning strategy from the training loop, allowing users to modify the training and/or the active learning strategy
  • Implements faster and more efficient versions of several active learning strategies
  • Contains most state-of-the-art active learning algorithms
  • Allows running basic experiments with just one command
  • Presents interface to various active learning strategies through only a couple lines of code
  • Requires only minimal changes to the configuration files to run your own experiments
  • Achieves higher test accuracies with less amount of training data, admitting a huge reduction in labeling cost and time
  • Requires minimal change to add it to existing training structures
  • Contains recipes, tutorials, and benchmarks for all active learning algorithms on many deep learning datasets

Starting with DISTIL

DISTIL can be installed using the following means:

From Git Repository

git clone https://github.com/decile-team/distil.git
cd distil
pip install -r requirements/requirements.txt

Pip Installation

pip install decile-distil

First Steps

To better understand DISTIL's functionality, we have provided example Jupyter notebooks in the tutorials folder, which can be easily executed by using Google Colab. We also provide a simple AL training loop that runs experiments using a provided configuration file. To run this loop, do the following from the base folder:

python train.py --config_path=/content/distil/configs/config_svhn_resnet_randomsampling.json

You can use the default configurations that we have provided in the configs folder, or you can make a custom configuration. For making your custom configuration file for training, please refer to Distil Configuration File Documentation.

Some of the algorithms currently implemented in DISTIL include the following:

To learn more on different active learning algorithms, check out the Active Learning Strategies Survey Blog

Documentation

Learn more about DISTIL by reading our documentation.

Mailing List

To receive updates about DISTIL and to be a part of the community, join the Decile_DISTIL_Dev group.

https://groups.google.com/forum/#!forum/Decile_DISTIL_Dev/join 

Acknowledgment

This library takes inspiration, builds upon, and uses pieces of code from several open source codebases. These include Kuan-Hao Huang's deep active learning repository, Jordan Ash's Badge repository, and Andreas Kirsch's and Joost van Amersfoort's BatchBALD repository. Also, DISTIL uses submodlib for submodular optimization.

Team

DISTIL is created and maintained by Nathan Beck, Suraj Kothawade, Durga Sivasubramanian, Apurva Dani, Rishabh Iyer, and Ganesh Ramakrishnan. We look forward to have DISTIL more community driven. Please use it and contribute to it for your active learning research, and feel free to use it for your commercial projects. We will add the major contributors here.

Resources

Youtube Tutorials on DISTIL:

Blog Articles

Publications

[1] Settles, Burr. Active learning literature survey. University of Wisconsin-Madison Department of Computer Sciences, 2009.

[2] Wang, Dan, and Yi Shang. "A new active labeling method for deep learning." 2014 International joint conference on neural networks (IJCNN). IEEE, 2014

[3] Kai Wei, Rishabh Iyer, Jeff Bilmes, Submodularity in data subset selection and active learning, International Conference on Machine Learning (ICML) 2015

[4] Jordan T. Ash, Chicheng Zhang, Akshay Krishnamurthy, John Langford, and Alekh Agarwal. Deep batch active learning by diverse, uncertain gradient lower bounds. CoRR, 2019. URL: http://arxiv.org/abs/1906.03671, arXiv:1906.03671.

[5] Sener, Ozan, and Silvio Savarese. "Active learning for convolutional neural networks: A core-set approach." ICLR 2018.

[6] Krishnateja Killamsetty, Durga Sivasubramanian, Ganesh Ramakrishnan, and Rishabh Iyer, GLISTER: Generalization based Data Subset Selection for Efficient and Robust Learning, 35th AAAI Conference on Artificial Intelligence, AAAI 2021

[7] Vishal Kaushal, Rishabh Iyer, Suraj Kothawade, Rohan Mahadev, Khoshrav Doctor, and Ganesh Ramakrishnan, Learning From Less Data: A Unified Data Subset Selection and Active Learning Framework for Computer Vision, 7th IEEE Winter Conference on Applications of Computer Vision (WACV), 2019 Hawaii, USA

[8] Wei, Kai, et al. "Submodular subset selection for large-scale speech training data." 2014 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2014.

[9] Ducoffe, Melanie, and Frederic Precioso. "Adversarial active learning for deep networks: a margin based approach." arXiv preprint arXiv:1802.09841 (2018).

[10] Gal, Yarin, Riashat Islam, and Zoubin Ghahramani. "Deep bayesian active learning with image data." International Conference on Machine Learning. PMLR, 2017.

[11] Suraj Kothawade, Nathan Beck, Krishnateja Killamsetty, and Rishabh Iyer, “SIMILAR: Submodular Information Measures based Active Learning in Realistic Scenarios,” To Appear In Neural Information Processing Systems, NeurIPS 2021.

Comments
  • Different results

    Different results

    Hello authors, It's great that you publish the source code, but the default hyper-parameters in config_cifar10_resnet_badge.json can not get similar accuracy in your project about badge strategy, so could you please share the hyper-params to produce the graph in README.

    opened by chipsh 2
  • Eval Mode in select()

    Eval Mode in select()

    SMI, SCMI, and SCG need to have self.model.eval() in their select() methods. Without it, the embedding computation will not necessarily be the same for similar points, which may cause performance degradation.

    opened by nab170130 1
  • Update README

    Update README

    • Add the effective evaluation paper
    • Add links to the SIMILAR and effective eval papers
    • Remove the results right now from the main readme and rather link to the benchmark folders for each case. Each folder will have the detailed results for the corresponding case.
    opened by rishabhk108 1
  • Update Interface for Scalability and Add New Content

    Update Interface for Scalability and Add New Content

    This merge request replaces the old interface used in DISTIL that requires numpy arrays. To better adapt to larger (and otherwise different) datasets, the new strategies now take torch.utils.data.Dataset objects. This simplifies dataset management and trims the need for many added utilities.

    Furthermore, submodular optimization has been changed to use submodlib, which is closely tied to DECILE. As a result, much of the utilities revolving around submodular optimization and disparity (dispersion) functions has been pruned as well. Any missing functionality should be implemented as part of submodlib.

    Lastly, this merge request adds new documentation, updated examples, and the complete updated benchmark profile of the Effective Evaluation of Deep Active Learning on Image Classification Tasks.

    opened by nab170130 0
  • Submodlib integration - Multiple changes and feature additions

    Submodlib integration - Multiple changes and feature additions

    1. Main change: Pre-compute kernel before SIM function instantiations
    2. Feature addition: Facilitate feature extraction from any layer in the neural network
    3. Multiple other changes in commit messages
    opened by surajkothawade 0
  • Doc Index Plots and Utils Docstrings

    Doc Index Plots and Utils Docstrings

    Added plots to the index page of the documentation. Added docstrings to utils files, but did not specify autodoc construction to be included in documentation.

    opened by nab170130 0
  • Grammar-check readme, fix file names and imports in all files

    Grammar-check readme, fix file names and imports in all files

    Grammar-checked the readme file. Fixed the file names so that all are lowercase, matching convention. Fixed imports in ALL files. Removed import block in init.py file in active_learning_strategies and fixed imports in all relevant files. Each file was tested: All attempted imports worked, and every example / testing script and notebook worked.

    Note: THE GOOGLE COLAB NOTEBOOKS THAT ARE LINKED IN THE README NEED TO HAVE THE CHANGES IN THE IMPORT STATEMENTS PRESENT IN THE NOTEBOOKS FOLDER. MAKE SURE TO INCORPORATE THOSE CHANGES WHEN MERGING.

    opened by nab170130 0
  • Merge Grammar-Checked README and Fixed File Names

    Merge Grammar-Checked README and Fixed File Names

    Grammar-checked the README present from the commit on the main branch that this current branch originated. Fixed the file names such that all are lower case. Fixed the affected import statements. Note: Any notebook dependent on everything within the distil folder needs to have their import statements checked / fixed!

    opened by nab170130 0
  • Device fix and import trimming

    Device fix and import trimming

    Added optional device parameter to each learning strategy and otherwise ensured that the specified device was being used in all locations where a torch object was being moved. Further trimmed imported but never used libraries.

    opened by nab170130 0
  • Used with Custom Datasets

    Used with Custom Datasets

    Though it says that distil coud be used with custom datasets there are no tutorials to support this claim and I have not been able to implement any kaggle datasets either. Please include instructions for if we want to use any dataset separate from the pre-defined

    opened by svpowell 0
  • Is there code to draw the diagram under the experiment_plot folder

    Is there code to draw the diagram under the experiment_plot folder

    Hi, Thank you very much for the toolkit, I want to plot the experimental comparison result, but I don't konw how to plot the same effect as the paper, so can you provide the code for this plot? Thanks.

    opened by InstantWindy 0
  • Semi-Supervised Learning

    Semi-Supervised Learning

    Hello!

    Is it possible to perform Active-Learning with a combination of SSL methods such as Virtual Adversarial Training (VAT), Entropy Minimization (EntMin), etc?

    I believe that this would be the major benefit of using DL for active learning. Otherwise, one can use an easier model to train & tune after each iteration.

    Do you also think Extreme Learning Machine could be useful as a one-shot learning method to speed up the active-learning iterations with your library?

    opened by kayuksel 0
Releases(0.2.0)
Owner
decile-team
DECILE: Data EffiCient machIne LEarning
decile-team
Tool for live presentations using manim

manim-presentation Tool for live presentations using manim Install pip install manim-presentation opencv-python Usage Use the class Slide as your sce

Federico Galatolo 146 Jan 06, 2023
Software for Multimodalty 2D+3D Facial Expression Recognition (FER) UI

EmotionUI Software for Multimodalty 2D+3D Facial Expression Recognition (FER) UI. demo screenshot (with RealSense) required packages Python = 3.6 num

Yang Jiao 2 Dec 23, 2021
Code for the paper "VisualBERT: A Simple and Performant Baseline for Vision and Language"

This repository contains code for the following two papers: VisualBERT: A Simple and Performant Baseline for Vision and Language (arxiv) with a short

Natural Language Processing @UCLA 463 Dec 09, 2022
Rethinking Transformer-based Set Prediction for Object Detection

Rethinking Transformer-based Set Prediction for Object Detection Here are the code for the ICCV paper. The code is adapted from Detectron2 and AdelaiD

Zhiqing Sun 62 Dec 03, 2022
ETMO: Evolutionary Transfer Multiobjective Optimization

ETMO: Evolutionary Transfer Multiobjective Optimization To promote the research on ETMO, benchmark problems are of great importance to ETMO algorithm

Songbai Liu 0 Mar 16, 2021
Code for the USENIX 2017 paper: kAFL: Hardware-Assisted Feedback Fuzzing for OS Kernels

kAFL: Hardware-Assisted Feedback Fuzzing for OS Kernels Blazing fast x86-64 VM kernel fuzzing framework with performant VM reloads for Linux, MacOS an

Chair for Sys­tems Se­cu­ri­ty 541 Nov 27, 2022
When Does Pretraining Help? Assessing Self-Supervised Learning for Law and the CaseHOLD Dataset of 53,000+ Legal Holdings

When Does Pretraining Help? Assessing Self-Supervised Learning for Law and the CaseHOLD Dataset of 53,000+ Legal Holdings This is the repository for t

RegLab 39 Jan 07, 2023
Pytorch implementation of the paper "COAD: Contrastive Pre-training with Adversarial Fine-tuning for Zero-shot Expert Linking."

Expert-Linking Pytorch implementation of the paper "COAD: Contrastive Pre-training with Adversarial Fine-tuning for Zero-shot Expert Linking." This is

BoChen 12 Jan 01, 2023
SeisComP/SeisBench interface to enable deep-learning (re)picking in SeisComP

scdlpicker SeisComP/SeisBench interface to enable deep-learning (re)picking in SeisComP Objective This is a simple deep learning (DL) repicker module

Joachim Saul 6 May 13, 2022
ConE: Cone Embeddings for Multi-Hop Reasoning over Knowledge Graphs

ConE: Cone Embeddings for Multi-Hop Reasoning over Knowledge Graphs This is the code of paper ConE: Cone Embeddings for Multi-Hop Reasoning over Knowl

MIRA Lab 33 Dec 07, 2022
Deep Learning tutorials in jupyter notebooks.

DeepSchool.io Sign up here for Udemy Course on Machine Learning (Use code DEEPSCHOOL-MARCH to get 85% off course). Goals Make Deep Learning easier (mi

Sachin Abeywardana 1.8k Dec 28, 2022
VR-Caps: A Virtual Environment for Active Capsule Endoscopy

VR-Caps: A Virtual Environment for Capsule Endoscopy Overview We introduce a virtual active capsule endoscopy environment developed in Unity that prov

DeepMIA Lab 90 Dec 27, 2022
This repository is for Contrastive Embedding Distribution Refinement and Entropy-Aware Attention Network (CEDR)

CEDR This repository is for Contrastive Embedding Distribution Refinement and Entropy-Aware Attention Network (CEDR) introduced in the following paper

phoenix 3 Feb 27, 2022
Simple streamlit app to demonstrate HERE Tour Planning

Table of Contents About the Project Built With Getting Started Prerequisites Installation Usage Roadmap Contributing License Acknowledgements About Th

Amol 8 Sep 05, 2022
Project looking into use of autoencoder for semi-supervised learning and comparing data requirements compared to supervised learning.

Project looking into use of autoencoder for semi-supervised learning and comparing data requirements compared to supervised learning.

Tom-R.T.Kvalvaag 2 Dec 17, 2021
Neural-fractal - Create Fractals Using Complex-Valued Neural Networks!

Neural Fractal Create Fractals Using Complex-Valued Neural Networks! Home Page Features Define Dynamical Systems Using Complex-Valued Neural Networks

Amirabbas Asadi 10 Dec 17, 2022
Composing methods for ML training efficiency

MosaicML Composer contains a library of methods, and ways to compose them together for more efficient ML training.

MosaicML 2.8k Jan 08, 2023
Unofficial implementation of Point-Unet: A Context-Aware Point-Based Neural Network for Volumetric Segmentation

Point-Unet This is an unofficial implementation of the MICCAI 2021 paper Point-Unet: A Context-Aware Point-Based Neural Network for Volumetric Segment

Namt0d 9 Dec 07, 2022
Official code for "EagerMOT: 3D Multi-Object Tracking via Sensor Fusion" [ICRA 2021]

EagerMOT: 3D Multi-Object Tracking via Sensor Fusion Read our ICRA 2021 paper here. Check out the 3 minute video for the quick intro or the full prese

Aleksandr Kim 276 Dec 30, 2022
Prediction of MBA refinance Index (Mortgage prepayment)

Prediction of MBA refinance Index (Mortgage prepayment) Deep Neural Network based Model The ability to predict mortgage prepayment is of critical use

Ruchil Barya 1 Jan 16, 2022