/google_sketcher

Build a simple yet effective CNN to work as a sketch recognizer. Just like Google Quick-Draw Project.

Primary LanguagePythonMIT LicenseMIT

Google Sketcher

This repo is dedicated to build a simple yet effective Convolutional Neural Network, train it over the Google Quick-Draw Dataset, and save it for further usage.

You can find a demo from here.

Description

The trained CNN can take any doodle image as input, and "guess" what the doodle describes within 345 categories.

  • CNN Architecture v1:
    cnn_architecture_v1

  • CNN Architecture v2:
    cnn_architecture_v2

  • Manual:

  1. run python3 main.py - The script will automatically download training dataset, prerpocess data, build the CNN, train the CNN, and save the model.
  2. run pip3 install tensorflowjs - The command will automatically install the latest version of TensorFlowJS into your machine.
  3. run bash convert.sh - The script will automatically convert the trained model into a TensorflowJS compatible model, so that we can use the trained model to do inference on a web application.

Trained Model

  • You can find my trained model in the model directory.
  • You can also download the trained model and the training log file in my AWS S3.
    model_v1
    model_v2

My Running Environment

Hardware

  • AWS EC2 - r4.16xlarge
  • CPU: Dual socket Intel® Xeon™ E5 Broadwell Processors (2.3 GHz) - vCPU x 64
  • Memory: 488GB DDR4

Operating System

  • Amazon Linux AMI 2018.03

Software

  • Python 3.6.3
  • NumPy 1.13.3
  • TensorFlow 1.8.0
  • Keras 2.1.6

References

Citation

  @misc{ye2018googlesketcher,
    author = {Wengao Ye},
    title = {Google Sketcher},
    year = {2018},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/elleryqueenhomels/google_sketcher}}
  }