README_cn.md 3.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
# Image Classification Models
本目录下包含6个图像分类模型,都是百度大数据实验室 Hierarchical Neural Architecture Search (HiNAS) 项目通过机器自动发现的模型,在CIFAR-10数据集上达到96.1%的准确率。这6个模型分为两类,前3个没有skip link,分别命名为 HiNAS 0-2号,后三个网络带有skip link,功能类似于Resnet中的shortcut connection,分别命名 HiNAS 3-5号。

---
## Table of Contents
- [Installation](#installation)
- [Data preparation](#data-preparation)
- [Training a model](#training-a-model)
- [Model performances](#model-performances)

## Installation
最低环境要求:

- PadddlePaddle Fluid >= v0.15.0
- Cudnn >=6.0

如果您的运行环境无法满足要求,可以参考此文档升级PaddlePaddle:[installation document](http://www.paddlepaddle.org/docs/develop/documentation/zh/build_and_install/pip_install_cn.html)

## Data preparation

第一次训练模型的时候,Trainer会自动下载CIFAR-10数据集,请确保您的环境有互联网连接。

数据集会被下载到Trainer同目录下的`dataset/cifar/cifar-10-python.tar.gz`,如果自动下载失败,您可以自行从 https://www.cs.toronto.edu/~kriz/cifar.html 下载cifar-10-python.tar.gz,然后放到上述位置。


## Training a model
准备好环境后,可以训练模型,训练有2个入口,`train_hinas.py``train_hinas_res.py`,前者用来训练0-2号不含skip link的模型,后者用来训练3-5号包含skip link的模型。

训练0~2号不含skip link的模型:
```
python train_hinas.py --model=m_id       # m_id can be 0, 1 or 2.
```
训练3~5号包含skip link的模型:
```
python train_hinas_res.py --model=m_id    # m_id can be 0, 1 or 2.
```

此外,`train_hinas.py``train_hinas_res.py` 都支持以下参数:

初始化部分:

- random_flip_left_right:图片随机水平翻转(Default:True)
- random_flip_up_down:图片随机垂直翻转(Default:False)
- cutout:图片随机遮挡(Default:True)
- standardize_image:对图片每个像素做 standardize(Default:True)
- pad_and_cut_image:图片随机padding,并裁剪回原大小(Default:True)
- shuffle_image:训练时对输入图片的顺序做shuffle(Default:True)
- lr_max:训练开始时的learning rate(Default:0.1)
- lr_min:训练结束时的learning rate(Default:0.0001)
- batch_size:训练的batch size(Default:128)
- num_epochs:训练总的epoch(Default:200)
- weight_decay:训练时L2 Regularization大小(Default:0.0004)
- momentum:momentum优化器中的momentum系数(Default:0.9)
- dropout_rate:dropout层的dropout_rate(Default:0.5)
- bn_decay:batch norm层的decay/momentum系数(即moving average decay)大小(Default:0.9)



## Model performances
6个模型使用相同的参数训练:

- learning rate: 0.1 -> 0.0001 with cosine annealing
- total epoch: 200
- batch size: 128
- L2 decay: 0.000400
- optimizer: momentum optimizer with m=0.9 and use nesterov
- preprocess: random horizontal flip + image standardization + cutout

以下是6个模型在CIFAR-10数据集上的准确率:

| model    | round 1 | round 2 | round 3 | max    | avg    |
|----------|---------|---------|---------|--------|--------|
| HiNAS-0  | 0.9548  | 0.9520  | 0.9513  | 0.9548 | 0.9527 |
| HiNAS-1  | 0.9452  | 0.9462  | 0.9420  | 0.9462 | 0.9445 |
| HiNAS-2  | 0.9508  | 0.9506  | 0.9483  | 0.9508 | 0.9499 |
| HiNAS-3  | 0.9607  | 0.9623  | 0.9601  | 0.9623 | 0.9611 |
| HiNAS-4  | 0.9611  | 0.9584  | 0.9586  | 0.9611 | 0.9594 |
| HiNAS-5  | 0.9578  | 0.9588  | 0.9594  | 0.9594 | 0.9586 |