This is an implementation of DenseNet-BC. The difference between DenseNet-BC and original DenseNet is using 1x1 convolutional layer before each 3x3 convolutional layer in DenseBlock.
3 kinds of DenseNet is defined in densenet.py: DenseNetCifar, DenseNetImagenet, & DenseNet.
DenseNetCifar and DenseNetImagenet consists of 4 DenseBlocks, while you can change # of blocks and # of layers for each block
by passing n_layers which is an argument of DenseNet.
- Python 3.5.2
- Chainer 2.0.0
- ChainerCV 0.5.1
- OpenCV w/ contrib 3.2.0.7
FYI: You can install OpenCV with or without contrib for python via pip: pip install opencv-python or pip install opencv-contrib-python.
Whole training log is in result_cifar100/log.json
In my environment (GTX 1080), one epoch including validation took around 210 seconds.
As to DenseNetImagenet or DenseNet in densenet.py, examples of # of layers are below.
| # of layers | growth rate | # of layer of each block |
|---|---|---|
| 121 | 32 | 6, 12, 24, 16 |
| 169 | 32 | 6, 12, 32, 32 |
| 201 | 32 | 6, 12, 48, 32 |
| 161 | 48 | 6, 12, 36, 32 |

