Quick, Draw

Can a neural network learn to recognize doodling? Quick, Draw

Code Requirements

You can install Conda for python which resolves all the dependencies for machine learning.

pip install requirements.txt

Description

Quick, Draw! is an online game developed by Google that challenges players to draw a picture of an object or idea and then uses a neural network artificial intelligence to guess what the drawings represent. The AI learns from each drawing, increasing its ability to guess correctly in the future.The game is similar to Pictionary in that the player only has a limited time to draw (20 seconds).The concepts that it guesses can be simple, like 'foot', or more complicated, like 'animal migration'. This game is one of many simple games created by Google that are AI based as part of a project known as 'A.I. Experiments'. Quick, Draw

Dataset

Follow the documentation here to get the dataset. I got .npy files from google cloud for 14 drawings.

Labels
  1. Apple :apple:
  2. Bowtie ?
  3. Candle ?️
  4. Door :door:
  5. Envelope :envelope:
  6. Fish :fish:
  7. Guitar :guitar:
  8. Ice Cream :icecream:
  9. Lightning ⚡
  10. Moon :first_quarter_moon_with_face:
  11. Mountain :mount_fuji:
  12. Star :star:
  13. Tent :tent:
  14. Toothbrush ?
  15. Wristwatch :watch:

Python Implementation

  1. Network Used- Convolutional Neural Network

If you face any problem, kindly raise an issue

Procedure

  1. Get the dataset as mentioned above and place the .npy files in /data folder.
  2. First, run LoadData.py which will load the data from the /data folder and store the features and labels in pickel files.
  3. Now you need to have the data, run QD_trainer.py which will load data from pickle and augment it. After this, the training process begins.
  4. Now you need to have the data, run QuickDrawApp.py which will use use the webcam to get what you have drawn.
  5. For altering the model, check QD_trainer.py.
  6. For tensorboard visualization, go to the specific log directory and run this command tensorboard --logdir=. You can go to localhost:6006 for visualizing your loss function and accuracy.

Mergerd to Google's git repo

See the pull request here

GitHub