ryanjcooper / EMNIST

A project designed to explore CNN and the effectiveness of RCNN on classifying the EMNIST dataset.
MIT License
96 stars 38 forks source link
convolutional-neural-networks emnist flask keras learning mnist python3 pythonanywhere recurrent-neural-networks tensorflow

EMNIST

Developed by @coopss

Description

This project was intended to explore the properties of convolution neural networks (CNN) and see how they compare to recurrent convolution neural networks (RCNN). This was inspired by a paper I read that details the effectiveness of RCNNs in object recognition as they perform or even out perform their CNN counterparts with fewer parameters. Aside from exploring CNN/RCNN effectiveness, I built a simple interface to test the more challenging EMNIST dataset dataset (as opposed to the MNIST dataset)

Current Implementation
Todo

Environment

Anaconda: Python 3.5.3

Usage

training.py

A training program for classifying the EMNIST dataset

usage: training.py [-h] --file [--width WIDTH] [--height HEIGHT] [--max MAX] [--epochs EPOCHS] [--verbose]
Required Arguments:
-f FILE, --file FILE  Path .mat file data
Optional Arguments
-h, --help            show this help message and exit
--width WIDTH         Width of the images
--height HEIGHT       Height of the images
--max MAX             Max amount of data to use
--epochs EPOCHS       Number of epochs to train on
--verbose         Enables verbose printing

server.py

A webapp for testing models generated from training.py on the EMNIST dataset

usage: server.py [-h] [--bin BIN] [--host HOST] [--port PORT]
Optional Arguments:
-h, --help   show this help message and exit
--bin BIN    Directory to the bin containing the model yaml and model h5 files
--host HOST  The host to run the flask server on
--port PORT  The port to run the flask server on