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
Serve TensorFlow ML models with TF-Serving and then create a Streamlit UI to use them

TensorFlow Serving + Streamlit! ✨ 🖼️ Serve TensorFlow ML models with TF-Serving and then create a Streamlit UI to use them! This is a pretty simple S

Álvaro Bartolomé 18 Jan 07, 2023
This repository contains the code for the paper 'PARM: Paragraph Aggregation Retrieval Model for Dense Document-to-Document Retrieval' published at ECIR'22.

Paragraph Aggregation Retrieval Model (PARM) for Dense Document-to-Document Retrieval This repository contains the code for the paper PARM: A Paragrap

Sophia Althammer 33 Aug 26, 2022
Fuse radar and camera for detection

SAF-FCOS: Spatial Attention Fusion for Obstacle Detection using MmWave Radar and Vision Sensor This project hosts the code for implementing the SAF-FC

ChangShuo 18 Jan 01, 2023
Pytorch implementation of Straight Sampling Network For Point Cloud Learning (ICIP2021).

Pytorch code for SS-Net This is a pytorch implementation of Straight Sampling Network For Point Cloud Learning (ICIP2021). Environment Code is tested

Sun Ran 1 May 18, 2022
code for Multi-scale Matching Networks for Semantic Correspondence, ICCV

MMNet This repo is the official implementation of ICCV 2021 paper "Multi-scale Matching Networks for Semantic Correspondence.". Pre-requisite conda cr

joey zhao 25 Dec 12, 2022
Implementation of Rotary Embeddings, from the Roformer paper, in Pytorch

Rotary Embeddings - Pytorch A standalone library for adding rotary embeddings to transformers in Pytorch, following its success as relative positional

Phil Wang 110 Dec 30, 2022
Fake-user-agent-traffic-geneator - Python CLI Tool to generate fake traffic against URLs with configurable user-agents

Fake traffic generator for Gartner Demo Generate fake traffic to URLs with custo

New Relic Experimental 3 Oct 31, 2022
An AutoML Library made with Optuna and PyTorch Lightning

An AutoML Library made with Optuna and PyTorch Lightning Installation Recommended pip install -U gradsflow From source pip install git+https://github.

GradsFlow 294 Dec 17, 2022
A Sign Language detection project using Mediapipe landmark detection and Tensorflow LSTM's

sign-language-detection A Sign Language detection project using Mediapipe landmark detection and Tensorflow LSTM. The project is built for a vocabular

Hashim 4 Feb 06, 2022
Deep Ensemble Learning with Jet-Like architecture

Ransomware analysis using DEL with jet-like architecture comprising two CNN wings, a sparse AE tail, a non-linear PCA to produce a diverse feature space, and an MLP nose

Ahsen Nazir 2 Feb 06, 2022
The VeriNet toolkit for verification of neural networks

VeriNet The VeriNet toolkit is a state-of-the-art sound and complete symbolic interval propagation based toolkit for verification of neural networks.

9 Dec 21, 2022
Code for unmixing audio signals in four different stems "drums, bass, vocals, others". The code is adapted from "Jukebox: A Generative Model for Music"

Status: Archive (code is provided as-is, no updates expected) Disclaimer This code is a based on "Jukebox: A Generative Model for Music" Paper We adju

Wadhah Zai El Amri 24 Dec 29, 2022
DeLag: Detecting Latency Degradation Patterns in Service-based Systems

DeLag: Detecting Latency Degradation Patterns in Service-based Systems Replication package of the work "DeLag: Detecting Latency Degradation Patterns

SEALABQualityGroup @ University of L'Aquila 2 Mar 24, 2022
A simple Python library for stochastic graphical ecological models

What is Viridicle? Viridicle is a library for simulating stochastic graphical ecological models. It implements the continuous time models described in

Theorem Engine 0 Dec 04, 2021
Dense Prediction Transformers

Vision Transformers for Dense Prediction This repository contains code and models for our paper: Vision Transformers for Dense Prediction René Ranftl,

Intelligent Systems Lab Org 1.3k Jan 02, 2023
Extracts essential Mediapipe face landmarks and arranges them in a sequenced order.

simplified_mediapipe_face_landmarks Extracts essential Mediapipe face landmarks and arranges them in a sequenced order. The default 478 Mediapipe face

Irfan 13 Oct 04, 2022
PyTorch implementation of CVPR'18 - Perturbative Neural Networks

This is an attempt to reproduce results in Perturbative Neural Networks paper. See original repo for details.

Michael Klachko 57 May 14, 2021
Hierarchical Metadata-Aware Document Categorization under Weak Supervision (WSDM'21)

Hierarchical Metadata-Aware Document Categorization under Weak Supervision This project provides a weakly supervised framework for hierarchical metada

Yu Zhang 53 Sep 17, 2022
Plug-n-Play Reinforcement Learning in Python with OpenAI Gym and JAX

coax is built on top of JAX, but it doesn't have an explicit dependence on the jax python package. The reason is that your version of jaxlib will depend on your CUDA version.

128 Dec 27, 2022
Video Frame Interpolation without Temporal Priors (a general method for blurry video interpolation)

Video Frame Interpolation without Temporal Priors (NeurIPS2020) [Paper] [video] How to run Prerequisites NVIDIA GPU + CUDA 9.0 + CuDNN 7.6.5 Pytorch 1

YoujianZhang 31 Sep 04, 2022