120 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			120 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | # Image Classification based on NAS-Searched Models
 | ||
|  | 
 | ||
|  | This directory contains 10 image classification models. | ||
|  | Nine of them are automatically searched models using different Neural Architecture Search (NAS) algorithms, and the other is the residual network. | ||
|  | We provide codes and scripts to train these models on both CIFAR-10 and CIFAR-100. | ||
|  | We use the standard data augmentation, i.e., random crop, random flip, and normalization. | ||
|  | 
 | ||
|  | --- | ||
|  | ## Table of Contents
 | ||
|  | - [Installation](#installation) | ||
|  | - [Data Preparation](#data-preparation) | ||
|  | - [Training Models](#training-models) | ||
|  | - [Project Structure](#project-structure) | ||
|  | - [Citation](#citation) | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Installation
 | ||
|  | This project has the following requirements: | ||
|  | - Python = 3.6 | ||
|  | - PadddlePaddle Fluid >= v0.15.0 | ||
|  | - numpy, tarfile, cPickle, PIL | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Data Preparation
 | ||
|  | Please download [CIFAR-10](https://dataset.bj.bcebos.com/cifar/cifar-10-python.tar.gz) and [CIFAR-100](https://dataset.bj.bcebos.com/cifar/cifar-100-python.tar.gz) before running the codes. | ||
|  | Note that the MD5 of CIFAR-10-Python compressed file is `c58f30108f718f92721af3b95e74349a` and the MD5 of CIFAR-100-Python compressed file is `eb9058c3a382ffc7106e4002c42a8d85`. | ||
|  | Please save the file into `${TORCH_HOME}/cifar.python`. | ||
|  | After data preparation, there should be two files `${TORCH_HOME}/cifar.python/cifar-10-python.tar.gz` and `${TORCH_HOME}/cifar.python/cifar-100-python.tar.gz`. | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Training Models
 | ||
|  | 
 | ||
|  | After setting up the environment and preparing the data, you can train the model. The main function entrance is `train_cifar.py`. We also provide some scripts for easy usage. | ||
|  | ``` | ||
|  | bash ./scripts/base-train.sh 0 cifar-10 ResNet110 | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10 GDAS_V1 | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10 GDAS_V2 | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10  SETN | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10 NASNet | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10 ENASNet | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10 AmoebaNet | ||
|  | bash ./scripts/train-nas.sh  0 cifar-10 PNASNet | ||
|  | bash ./scripts/train-nas.sh  0 cifar-100 SETN | ||
|  | ``` | ||
|  | The first argument is the GPU-ID to train your program, the second argument is the dataset name (`cifar-10` or `cifar-100`), and the last one is the model name. | ||
|  | Please use `./scripts/base-train.sh` for ResNet and use `./scripts/train-nas.sh` for NAS-searched models. | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Project Structure
 | ||
|  | ``` | ||
|  | . | ||
|  | ├──train_cifar.py [Training CNN models] | ||
|  | ├──lib [Library for dataset, models, and others] | ||
|  | │  └──models   | ||
|  | │     ├──__init__.py [Import useful Classes and Functions in models]   | ||
|  | │     ├──resnet.py [Define the ResNet models] | ||
|  | │     ├──operations.py [Define the atomic operation in NAS search space] | ||
|  | │     ├──genotypes.py [Define the topological structure of different NAS-searched models] | ||
|  | │     └──nas_net.py [Define the macro structure of NAS models] | ||
|  | │  └──utils | ||
|  | │     ├──__init__.py [Import useful Classes and Functions in utils]   | ||
|  | │     ├──meter.py [Define the AverageMeter class to count the accuracy and loss] | ||
|  | │     ├──time_utils.py [Define some functions to print date or convert seconds into hours] | ||
|  | │     └──data_utils.py [Define data augmentation functions and dataset reader for CIFAR] | ||
|  | └──scripts [Scripts for running]   | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | ### Citation
 | ||
|  | If you find that this project helps your research, please consider citing these papers: | ||
|  | ``` | ||
|  | @inproceedings{dong2019one, | ||
|  |   title     = {One-Shot Neural Architecture Search via Self-Evaluated Template Network}, | ||
|  |   author    = {Dong, Xuanyi and Yang, Yi}, | ||
|  |   booktitle = {Proceedings of the IEEE International Conference on Computer Vision (ICCV)}, | ||
|  |   year      = {2019} | ||
|  | } | ||
|  | @inproceedings{dong2019search, | ||
|  |   title     = {Searching for A Robust Neural Architecture in Four GPU Hours}, | ||
|  |   author    = {Dong, Xuanyi and Yang, Yi}, | ||
|  |   booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, | ||
|  |   pages     = {1761--1770}, | ||
|  |   year      = {2019} | ||
|  | } | ||
|  | @inproceedings{liu2018darts, | ||
|  |   title     = {Darts: Differentiable architecture search}, | ||
|  |   author    = {Liu, Hanxiao and Simonyan, Karen and Yang, Yiming}, | ||
|  |   booktitle = {International Conference on Learning Representations (ICLR)}, | ||
|  |   year      = {2018} | ||
|  | } | ||
|  | @inproceedings{pham2018efficient, | ||
|  |   title     = {Efficient Neural Architecture Search via Parameter Sharing}, | ||
|  |   author    = {Pham, Hieu and Guan, Melody and Zoph, Barret and Le, Quoc and Dean, Jeff}, | ||
|  |   booktitle = {International Conference on Machine Learning (ICML)}, | ||
|  |   pages     = {4092--4101}, | ||
|  |   year      = {2018} | ||
|  | } | ||
|  | @inproceedings{liu2018progressive, | ||
|  |   title     = {Progressive neural architecture search}, | ||
|  |   author    = {Liu, Chenxi and Zoph, Barret and Neumann, Maxim and Shlens, Jonathon and Hua, Wei and Li, Li-Jia and Fei-Fei, Li and Yuille, Alan and Huang, Jonathan and Murphy, Kevin}, | ||
|  |   booktitle = {Proceedings of the European Conference on Computer Vision (ECCV)}, | ||
|  |   pages     = {19--34}, | ||
|  |   year      = {2018} | ||
|  | } | ||
|  | @inproceedings{zoph2018learning, | ||
|  |   title     = {Learning transferable architectures for scalable image recognition}, | ||
|  |   author    = {Zoph, Barret and Vasudevan, Vijay and Shlens, Jonathon and Le, Quoc V}, | ||
|  |   booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, | ||
|  |   pages     = {8697--8710}, | ||
|  |   year      = {2018} | ||
|  | } | ||
|  | @inproceedings{real2019regularized, | ||
|  |   title     = {Regularized evolution for image classifier architecture search}, | ||
|  |   author    = {Real, Esteban and Aggarwal, Alok and Huang, Yanping and Le, Quoc V}, | ||
|  |   booktitle = {Proceedings of the AAAI Conference on Artificial Intelligence (AAAI)}, | ||
|  |   pages     = {4780--4789}, | ||
|  |   year      = {2019} | ||
|  | } | ||
|  | ``` |