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
Colar: Effective and Efficient Online Action Detection by Consulting Exemplars, CVPR 2022.

Colar: Effective and Efficient Online Action Detection by Consulting Exemplars This repository is the official implementation of Colar. In this work,

LeYang 246 Dec 13, 2022
A tool for making map images from OpenTTD save games

OpenTTD Surveyor A tool for making map images from OpenTTD save games. This is not part of the main OpenTTD codebase, nor is it ever intended to be pa

Aidan Randle-Conde 9 Feb 15, 2022
Pairwise model for commonlit competition

Pairwise model for commonlit competition To run: - install requirements - create input directory with train_folds.csv and other competition data - cd

abhishek thakur 45 Aug 31, 2022
Implementation of PersonaGPT Dialog Model

PersonaGPT An open-domain conversational agent with many personalities PersonaGPT is an open-domain conversational agent cpable of decoding personaliz

ILLIDAN Lab 42 Jan 01, 2023
QKeras: a quantization deep learning library for Tensorflow Keras

QKeras github.com/google/qkeras QKeras 0.8 highlights: Automatic quantization using QKeras; Stochastic behavior (including stochastic rouding) is disa

Google 437 Jan 03, 2023
This is RFA-Toolbox, a simple and easy-to-use library that allows you to optimize your neural network architectures using receptive field analysis (RFA) and create graph visualizations of your architecture.

ReceptiveFieldAnalysisToolbox This is RFA-Toolbox, a simple and easy-to-use library that allows you to optimize your neural network architectures usin

84 Nov 23, 2022
An LSTM for time-series classification

Update 10-April-2017 And now it works with Python3 and Tensorflow 1.1.0 Update 02-Jan-2017 I updated this repo. Now it works with Tensorflow 0.12. In

Rob Romijnders 391 Dec 27, 2022
Use of Attention Gates in a Convolutional Neural Network / Medical Image Classification and Segmentation

Attention Gated Networks (Image Classification & Segmentation) Pytorch implementation of attention gates used in U-Net and VGG-16 models. The framewor

Ozan Oktay 1.6k Dec 30, 2022
Code for "MetaMorph: Learning Universal Controllers with Transformers", Gupta et al, ICLR 2022

MetaMorph: Learning Universal Controllers with Transformers This is the code for the paper MetaMorph: Learning Universal Controllers with Transformers

Agrim Gupta 50 Jan 03, 2023
Nonnegative spatial factorization for multivariate count data

Nonnegative spatial factorization for multivariate count data This repository contains supporting code to facilitate reproducible analysis. For detail

Will Townes 24 Dec 19, 2022
Paddle implementation for "Highly Efficient Knowledge Graph Embedding Learning with Closed-Form Orthogonal Procrustes Analysis" (NAACL 2021)

ProcrustEs-KGE Paddle implementation for Highly Efficient Knowledge Graph Embedding Learning with Orthogonal Procrustes Analysis 🙈 A more detailed re

Lincedo Lab 4 Jun 09, 2021
GT China coal model

GT China coal model The full version of a China coal transport model with a very high spatial reslution. What it does The code works in a few steps: T

0 Dec 13, 2021
CLDF dataset derived from Robbeets et al.'s "Triangulation Supports Agricultural Spread" from 2021

CLDF dataset derived from Robbeets et al.'s "Triangulation Supports Agricultural Spread" from 2021 How to cite If you use these data please cite the o

Digital Linguistics 2 Dec 20, 2021
Implementation of gaze tracking and demo

Predicting Customer Demand by Using Gaze Detecting and Object Tracking This project is the integration of gaze detecting and object tracking. Predict

2 Oct 20, 2022
A naive ROS interface for visualDet3D.

YOLO3D ROS Node This repo contains a Monocular 3D detection Ros node. Base on https://github.com/Owen-Liuyuxuan/visualDet3D All parameters are exposed

Yuxuan Liu 19 Oct 08, 2022
Simulation-based inference for the Galactic Center Excess

Simulation-based inference for the Galactic Center Excess Siddharth Mishra-Sharma and Kyle Cranmer Abstract The nature of the Fermi gamma-ray Galactic

Siddharth Mishra-Sharma 3 Jan 21, 2022
Invasive Plant Species Identification

Invasive_Plant_Species_Identification Used LiDAR Odometry and Mapping (LOAM) to create a 3D point cloud map which can be used to identify invasive pla

2 May 12, 2022
SpeechNAS Better Trade off between Latency and Accuracy for Large Scale Speaker Verification

SpeechNAS Better Trade off between Latency and Accuracy for Large Scale Speaker Verification

Wentao Zhu 24 May 20, 2022
Removing Inter-Experimental Variability from Functional Data in Systems Neuroscience

Removing Inter-Experimental Variability from Functional Data in Systems Neuroscience This repository is the official implementation of [https://www.bi

Eulerlab 6 Oct 09, 2022
unofficial pytorch implement of "Squareplus: A Softplus-Like Algebraic Rectifier"

SquarePlus (Pytorch implement) unofficial pytorch implement of "Squareplus: A Softplus-Like Algebraic Rectifier" SquarePlus Squareplus is a Softplus-L

SeeFun 3 Dec 29, 2021