Introduction to Generating Watch Designs with Machine Learning

Mathias Pfeil

Author

Machine Learning

Category

June 20 2019

Time Created

It has been about a year since I found my two most recent interests: machine learning and watches. I wanted to bring these two hobbies together, and last month (May 2019) I found the way to do that. I built a pretty rough Deep Convolutional Generative Adversarial Network (DCGAN) to generate 128x128 images of completely new watch designs, then posted my results to the /r/watches subreddit. All of my training data, 8,000 images worth, was taken from that subreddit, so I thought it was only fitting to post there first. Here were the results from my first test.

While not great, we can start to see the case shape, lugs, crown, and even wrists forming in the images. Unfortunately, mode collapse happened before any more progress could be made. I wanted to see some hands and hour markers, so I went back to tweak the networks. After a little work, I came up with this configuration:

  • Kernel size of 3 and strides of 2 on all layers
  • Generator has an input layer with 512 filters, followed by 4 hidden layers, first two with 256 filters, second two with 128 filters
  • Discriminator has 4 hidden layers and one output layer, first two layers with 128 filters, second two with 256
  • Batch size of 64
  • Learning rate of 0.001 for both generator and discriminator
  • All of that over... 50,000 epochs

I also increased my training dataset from 8,000 to 50,000 watch images. With this new configuration, and about 3 hours of training, we can finally see some improvement.

Many of the watches generated have hand sets and hour markers. Everything is still very blurry, but the generated designs are more representative of what a real watch looks like. Ideally we would be getting useable designs out of this GAN, but that may take a few more articles in this series.