Generating Devanagari Using DRAW

Deep Recurrent Attentive Writer (DRAW) is a neural network architecture for image generation. DRAW networks combine a novel spatial attention mechanism that mimics the foveation of the human eye, with a sequential variational auto-encoding framework that allows for the iterative construction of complex images. The system substantially improves on the state of the art for generative models on MNIST, and, when trained on the Street View House Numbers dataset, it generates images that cannot be distinguished from real data with the naked eye.

GitHub Code Repo


Generated Data Animation

Difference

With AttentionWithout Attention

Training

Download the data and place it in the data/ directory. Run train.py to start training. To change the hyperparameters of the network, update the values in the param dictionary in train.py.
Loss Curve
Training Loss Curves

Generating New Images

To generate new images run generate.py.
python3 evaluate.py -load_path /path/to/pth/checkpoint -num_output n
The checkpoint file for the model trained for 50 epochs is present in checkpoint/ directory.

Results

Devanagari Training DataGenerated Devanagari After 50 Epochs
Devanagari Numbers Only Training DataGenerated Devanagari Numbers After 50 Epochs

Some more generated images:

References

  1. Karol Gregor, Ivo Danihelka, Alex Graves, Danilo Jimenez Rezende, Daan Wierstra. DRAW: A Recurrent Neural Network For Image Generation. [arxiv]
  2. ericjang/draw [repo]
  3. What is DRAW (Deep Recurrent Attentive Writer)? [blog]

Data

The Devanagari Character dataset is available on kaggle. (Source)

You can also find me on linkedin. I’d love to hear from you if I can help you or your team with machine learning.


Comments

Popular Posts