• Stars
    star
    170
  • Rank 223,357 (Top 5 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A specially designed light version of Fast AutoAugment

AutoCLINT

KakaoBrain pytorch tensorflow autocv 1st place autocv2 1st place HitCount

Automatic Computationally LIght Network Transfer

A specially designed light version of Fast AutoAugment is implemented to adapt to various tasks under limited resources.

This is our solution toΒ NeurIPS 2019 AutoDL Challenges. We won the 1st place in the final learderboards in both AutoCV and AutoCV2 Challenges.

AutoCV/AutoCV2 Challenge Introduction

Fully Automated Image (and Video) Classification without ANY human intervention

Despite recent successes of deep learning and other machine learning techniques, practical experience and expertise is still required to select models and/or choose hyper-parameters when applying techniques to new datasets. This problem is drawing githincreasing interest, yielding progress towards fully automated solutions. In this challenge your machine learning code is trained and tested on this platform, without human intervention whatsoever, on image or video classification tasks you have never seen before, with time and memory limitations. All problems are multi-label classification problems, coming from various domains including medical imaging, satellite imaging, object recognition, character recognition, face recognition, etc. They lend themselves to deep learning solutions, but other methods may be used. Raw data is provided, but formatted in a uniform manner, to encourage you to submit generic algorithms.

Methods

We employ a network transfer strategy and implement a light version of Fast AutoAugment for the fast adaptation and the efficient search of data augmentation policies.

Network Transfer

The AutoCV Challenges are given limited memory and computational resources. Thus, we considered a small size of architecture that could use the pre-trained models that were transferred.

We have discovered the optimal hyperparameters and architectures to get the best performance in five minutes from five public data sets (Munster, Chuckey, Pedro, Decal and Hammer). In this process, no data augmentation is used.

Due to the variability in image size (median shape 28x28x1 for munster vs. 576x944x3 for decal) the input tensor size of network must be automatically adapted for each dataset to allow for adequate aggregation of spatial information and to keep the aspect ratio of original image. We automatically adapt these parameters to the median size of each dataset, so that the network effectively trains on entire datasets. Due to time constraints, we do not increase the input tensor volume (without channels) beyond 64^2. If the median shape of the dataset is smaller than 64^2 then we use the median shape as original input.

Munster Chucky Pedro Decal Hammer Kreatur Katze Kraut
data type image image image image image video video video
original median shape 28x28x1 32x32x1 203x74x3 576x944x3 300x400x3 46x60x80x3 46x120x160x1 46x120x160x1
input tensor shape 28x28x1 32x32x1 128x48x3 48x64x3 48x64x3 8x48x64x3 8x48x64x1 8x48x64x1

Fast AutoAugment

Fast AutoAugment learns augmentation policies using a more efficient search strategy based on density matching. Ideally, Fast AutoAugment should be performed automatically, allowing the training data to adapt to test data.

We modify the search space and implement a light version of Fast AutoAugment algorithm to surmount the restricted computational resources.

As Fast AutoAugment, we search the augmentation policies that match the density of train data with density of augmented valid data. We deviate from the original version in that we replace 5-fold with single-fold search and use random search (within subset of searched policy in original) instead of TPE algorithm.

AutoCV Results

Public

V1.XLARGE

  • experiment environment: BrainCloud V1.XLARGE Type (NVIDIA Tesla V100 1GPU, 14CPU, 122GB)
metrics Munster Chucky Pedro Decal Hammer
ALC 0.9421 0.8082 0.7948 0.8647 0.8147
2*AUC-1 0.9992 0.9297 0.9241 0.9233 0.8863
curves

P1.XLARGE

  • experiment environment: BrainCloud P1.XLARGE Type (NVIDIA Tesla P40 1GPU, 6CPU, 61GB)
metrics Munster Chucky Pedro Decal Hammer
ALC 0.9440 0.7835 0.7366 0.8353 0.8286
2*AUC-1 0.9977 0.9353 0.9214 0.9347 0.9142
curves

Private

  • experiment environment: CodaLab (NVIDIA Tesla P100 1GPU, 4vCPU, 26GB)
metrics beatriz Caucase Hippoc. Saturn ukulele
ALC 0.6756 0.7359 0.7744 0.8309 0.9075
2*AUC-1 0.8014 0.9411 0.9534 0.9884 0.9985
curves

AutoCV2 Results

Public (video only)

V1.XLARGE

  • experiment environment: BrainCloud V1.XLARGE Type (NVIDIA Tesla V100 1GPU, 14CPU, 122GB)
metrics Kreature Katze Kraut
ALC 0.8677 0.8613 0.6678
2*AUC-1 0.9613 0.9588 0.7365
curves

P1.XLARGE

  • experiment environment: BrainCloud P1.XLARGE Type (NVIDIA Tesla P40 1GPU, 6CPU, 61GB)
metrics Kreature Katze Kraut
ALC 0.8675 0.8757 0.6883
2*AUC-1 0.9587 0.9572 0.7559
curves

Private

  • experiment environment: CodaLab (NVIDIA Tesla P100 1GPU, 4vCPU, 26GB)
metrics Ideal freddy Homer Isaac2 Formula
ALC 0.8229 0.7516 0.3843 0.7064 0.7661
2*AUC-1 0.9605 0.9945 0.5500 0.9845 0.9661
curves

Final (blind)

  • experiment environment: CodaLab (NVIDIA Tesla P100 1GPU, 4vCPU, 26GB)
metrics Apollon loukooum Fiona Monica1 Kitsune
ALC 0.5593 0.9256 0.4074 0.4491 0.2132
2*AUC-1 0.8022 0.9978 0.5312 0.8617 0.2467
curves

Environment Setup & Experiments

$ apt update
$ apt install python3-tk
  • clone and init. the repository
$ git clone https://github.com/kakaobrain/autoclint.git && cd autoclint
$ # 3rd parties libarary
$ git submodule init
$ git submodule update
$ # download pretrained models
$ wget https://download.pytorch.org/models/resnet18-5c106cde.pth -O ./models/resnet18-5c106cde.pth
$ # download public datasets
$ cd autodl && python download_public_datasets.py && cd ..
  • run public datasets
$ # images
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Munster/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Chucky/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Pedro/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Decal/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Hammer/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ # videos
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Kreatur/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Katze/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
$ python autodl/run_local_test.py -time_budget=1200 -code_dir='./' -dataset_dir='autodl/AutoDL_public_data/Kraut/'; cp autodl/AutoDL_scoring_output/learning-curve-*.png ./results
  • (optional) display learning curve
$ # item2 utils to visualize learning curve
$ wget https://www.iterm2.com/utilities/imgcat -O bin/imgcat; chmod 0677 bin/imgcat
$ bin/imgcat ./results/learning-curve-*.png

Authors and Licensing

This project is developed by Woonhyuk Baek, Ildoo Kim and Sungbin Lim at Kakao Brain. It is distributed under Apache License 2.0.

Citation

If you apply this library to any project and research, please cite our code:

@article{baek2020autoclint,
  title         = {AutoCLINT: The Winning Method in AutoCV Challenge 2019}
  author        = {Woonhyuk Baek and Ildoo Kim and Sungwoong Kim and Sungbin Lim},
  year          = {2020},
  eprint        = {2005.04373},
  archivePrefix = {arXiv}
}

References & Open sources

  1. Fast AutoAugment
  2. Pretrained models for Pytorch
  3. TorchVision models
  4. TQDM: Progress Bar for Python and CLI
  5. AutoCV/AutoDL startking kit

More Repositories

1

fast-autoaugment

Official Implementation of 'Fast AutoAugment' in PyTorch.
Python
1,587
star
2

nerf-factory

An awesome PyTorch NeRF library
Python
1,265
star
3

pororo

PORORO: Platform Of neuRal mOdels for natuRal language prOcessing
Python
1,252
star
4

coyo-dataset

COYO-700M: Large-scale Image-Text Pair Dataset
Python
1,062
star
5

kogpt

KakaoBrain KoGPT (Korean Generative Pre-trained Transformer)
Python
1,000
star
6

torchgpipe

A GPipe implementation in PyTorch
Python
776
star
7

karlo

Python
679
star
8

rq-vae-transformer

The official implementation of Autoregressive Image Generation using Residual Quantization (CVPR '22)
Jupyter Notebook
669
star
9

mindall-e

PyTorch implementation of a 1.3B text-to-image generation model trained on 14 million image-text pairs
Python
630
star
10

word2word

Easy-to-use word-to-word translations for 3,564 language pairs.
Python
350
star
11

torchlars

A LARS implementation in PyTorch
Python
326
star
12

g2pm

A Neural Grapheme-to-Phoneme Conversion Package for Mandarin Chinese Based on a New Open Benchmark Dataset
Python
326
star
13

kor-nlu-datasets

KorNLI and KorSTS: New Benchmark Datasets for Korean Natural Language Understanding
283
star
14

trident

A performance library for machine learning applications.
Python
176
star
15

sparse-detr

PyTorch Implementation of Sparse DETR
Python
150
star
16

hotr

Official repository for HOTR: End-to-End Human-Object Interaction Detection with Transformers (CVPR'21, Oral Presentation)
Python
132
star
17

kortok

The code and models for "An Empirical Study of Tokenization Strategies for Various Korean NLP Tasks" (AACL-IJCNLP 2020)
Python
114
star
18

bassl

Python
113
star
19

scrl

PyTorch Implementation of Spatially Consistent Representation Learning(SCRL)
Python
108
star
20

flame

Official implementation of the paper "FLAME: Free-form Language-based Motion Synthesis & Editing"
Python
103
star
21

brain-agent

Brain Agent for Large-Scale and Multi-Task Agent Learning
Python
92
star
22

helo-word

Team Kakao&Brain's Grammatical Error Correction System for the ACL 2019 BEA Shared Task
Python
88
star
23

jejueo

Jejueo Datasets for Machine Translation and Speech Synthesis
Python
74
star
24

solvent

Python
66
star
25

noc

Jupyter Notebook
44
star
26

cxr-clip

Python
43
star
27

expgan

Python
41
star
28

autowu

Official repository for Automated Learning Rate Scheduler for Large-Batch Training (8th ICML Workshop on AutoML)
Python
39
star
29

nvs-adapter

Python
33
star
30

ginr-ipc

The official implementation of Generalizable Implicit Neural Representations with Instance Pattern Composers(CVPR’23 highlight).
Python
30
star
31

coyo-vit

ViT trained on COYO-Labeled-300M dataset
Python
28
star
32

irm-empirical-study

An Empirical Study of Invariant Risk Minimization
Python
28
star
33

coyo-align

ALIGN trained on COYO-dataset
Python
25
star
34

magvlt

The official implementation of MAGVLT: Masked Generative Vision-and-Language Transformer (CVPR'23)
Python
23
star
35

hqtransformer

Locally Hierarchical Auto-Regressive Modeling for Image Generation (HQ-Transformer)
Jupyter Notebook
21
star
36

CheXGPT

Python
18
star
37

learning-loss-for-tta

"Learning Loss for Test-Time Augmentation (NeurIPS 2020)"
Python
9
star
38

stg

Official implementation of Selective Token Generation (COLING'22)
Jupyter Notebook
8
star
39

leco

Official implementation of LECO (NeurIPS'22)
Python
6
star
40

bc-hyperopt-example

brain cloud hyperopt example (mnist)
Python
3
star