My 99.37% solution to Udacity Nanodegree project P2 (Traffic Sign Classification)
For this project, I use DenseNet for traffic sign classification. For more information about DenseNet, you can refer to the paper or open source implementation .
Below is my network graph. The network consists of several “dense blocks”. Each dense block chains up several concatenations. By concatenating the input and normalized convolution together as the output, we are actually “short cutting” the input to the output during the forward pass. Incidentally, the differentiation of a “split operation” is an “addition operation”. Hence the backward pass is very much like a residual add.
The table shows the details of the network construction.
Here is my training log. I split the all train images into train (62 K) and validation (3K) set. From the original train images, I made augmentation to get more argument train images (332K). I use pascal Titian X GPU machine for training.
I use batch size of 256 per iteration. In the log file, one epoch means one pass over all argument train images. The solver used is SGD, with momentum = 0.9, weight decay = 0.0005. The learning rate policy is “step”, starting from 0.1, then to 0.01, 0.001 and 0.001. I use cross entropy loss
The final results is 99.37% on test set, with a cross entropy loss of 0.021.
I am preparing the code (in tensorflow) for uploading to GitHub. I will update this post again when the code is ready.
“Densely Connected Convolutional Networks” - Gao Huang, Zhuang Liu,Kilian Q. Weinberger, Laurens van der Maaten — Arxiv 25-Aug-2016