A Convolutional Neural Network to Classify Handwritten Letters

See demo at convnet.jasonyzhang.com.

Demo will take a while to load the first time.

Uppercase and lowercase should be correctly identified. The following should all return 'A' with the highest probability:

For best performance, draw large, centered letters. The following did not return 'A' because they weren't large enough/centered:

The training set will need more data augmentation before it can correctly classify letters that are rotated/translated/scaled.

Architecture

This figure is generated by adapting the code from https://github.com/gwding/draw_convnet.

The layers are organized as:

  • 5x5 Convolutional Kernel
  • 2x2 Max Pool
  • 5x5 Convolutional Kernel
  • 2x2 Max Pool
  • 1024 FC
  • Batch normalization
  • 512 FC
  • Batch normalization
  • 26 FC
  • Softmax