README.md 3 KB
Newer Older
Xin Pan's avatar
Xin Pan committed
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
<font size=4><b>Reproduced ResNet on CIFAR-10 and CIFAR-100 dataset.</b></font>

contact: panyx0718 (xpan@google.com)

<b>Dataset:</b>

https://www.cs.toronto.edu/~kriz/cifar.html

<b>Related papers:</b>

Identity Mappings in Deep Residual Networks

https://arxiv.org/pdf/1603.05027v2.pdf

Deep Residual Learning for Image Recognition

https://arxiv.org/pdf/1512.03385v1.pdf

Wide Residual Networks

https://arxiv.org/pdf/1605.07146v1.pdf

<b>Settings:</b>

* Random split 50k training set into 45k/5k train/eval split.
Neal Wu's avatar
Neal Wu committed
26
* Pad to 36x36 and random crop. Horizontal flip. Per-image whitening.
Xin Pan's avatar
Xin Pan committed
27
28
29
30
31
32
33
* Momentum optimizer 0.9.
* Learning rate schedule: 0.1 (40k), 0.01 (60k), 0.001 (>60k).
* L2 weight decay: 0.002.
* Batch size: 128. (28-10 wide and 1001 layer bottleneck use 64)

<b>Results:</b>

Neal Wu's avatar
Neal Wu committed
34
![Precisions](g3doc/cifar_resnet.gif)
35

Neal Wu's avatar
Neal Wu committed
36
![Precisions Legends](g3doc/cifar_resnet_legends.gif)
Xin Pan's avatar
Xin Pan committed
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

CIFAR-10 Model|Best Precision|Steps
--------------|--------------|------
32 layer|92.5%|~80k
110 layer|93.6%|~80k
164 layer bottleneck|94.5%|~80k
1001 layer bottleneck|94.9%|~80k
28-10 wide|95%|~90k

CIFAR-100 Model|Best Precision|Steps
---------------|--------------|-----
32 layer|68.1%|~45k
110 layer|71.3%|~60k
164 layer bottleneck|75.7%|~50k
1001 layer bottleneck|78.2%|~70k
28-10 wide|78.3%|~70k

<b>Prerequisite:</b>

1. Install TensorFlow, Bazel.

2. Download CIFAR-10/CIFAR-100 dataset.

```shell
curl -o cifar-10-binary.tar.gz https://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
curl -o cifar-100-binary.tar.gz https://www.cs.toronto.edu/~kriz/cifar-100-binary.tar.gz
```

<b>How to run:</b>

```shell
68
69
70
# cd to the models repository and run with bash. Expected command output shown.
# The directory should contain an empty WORKSPACE file, the resnet code, and the cifar10 dataset.
# Note: The user can split 5k from train set for eval set.
Neal Wu's avatar
Neal Wu committed
71
72
73
$ ls -R
.:
cifar10  resnet  WORKSPACE
Xin Pan's avatar
Xin Pan committed
74

Neal Wu's avatar
Neal Wu committed
75
76
77
./cifar10:
data_batch_1.bin  data_batch_2.bin  data_batch_3.bin  data_batch_4.bin
data_batch_5.bin  test_batch.bin
Xin Pan's avatar
Xin Pan committed
78

Neal Wu's avatar
Neal Wu committed
79
80
./resnet:
BUILD  cifar_input.py  g3doc  README.md  resnet_main.py  resnet_model.py
Xin Pan's avatar
Xin Pan committed
81
82

# Build everything for GPU.
Neal Wu's avatar
Neal Wu committed
83
$ bazel build -c opt --config=cuda resnet/...
Xin Pan's avatar
Xin Pan committed
84
85

# Train the model.
Neal Wu's avatar
Neal Wu committed
86
87
88
89
90
$ bazel-bin/resnet/resnet_main --train_data_path=cifar10/data_batch* \
                               --log_root=/tmp/resnet_model \
                               --train_dir=/tmp/resnet_model/train \
                               --dataset='cifar10' \
                               --num_gpus=1
Xin Pan's avatar
Xin Pan committed
91

Neal Wu's avatar
Neal Wu committed
92
# While the model is training, you can also check on its progress using tensorboard:
Neal Wu's avatar
Neal Wu committed
93
$ tensorboard --logdir=/tmp/resnet_model
Neal Wu's avatar
Neal Wu committed
94

Xin Pan's avatar
Xin Pan committed
95
96
97
# Evaluate the model.
# Avoid running on the same GPU as the training job at the same time,
# otherwise, you might run out of memory.
Neal Wu's avatar
Neal Wu committed
98
99
100
101
102
103
$ bazel-bin/resnet/resnet_main --eval_data_path=cifar10/test_batch.bin \
                               --log_root=/tmp/resnet_model \
                               --eval_dir=/tmp/resnet_model/test \
                               --mode=eval \
                               --dataset='cifar10' \
                               --num_gpus=0
Xin Pan's avatar
Xin Pan committed
104
```