ERIS-1 Technicals
9 years ago
For those already familiar with machine learning, here is the TLDR rundown of my approach. This probably won't make any sense to you if you haven't worked with machine learning before.
ERIS-1 is a Generative Adversial Network. Basically, you create two neural networks, a "discriminatory" and a "generative" network. The former is fed by the training images and images output by the latter, and is graded by it's ability to differentiate images generated by the gen network from real training images. On the other hand, the generative network is rated higher the better it can "trick" the discriminatory network. Over time the generative network, in theory, produces images that are very hard to tell apart from "real" images.
The network architecture is four layers of convolutions, with ReLus and batchnorms inbetween. If someone is interested in the exact architecture, I can write it out sometime. ERIS-1 is trained for 50 epochs on the top 100k highest rated images downloaded from e621.net, resized to 64x64px. This is somewhat on the lower end of training data size, and I hope to produce better networks using more data in the future. Training ERIS-1 took about 9 hours on a GTX 970, though improvements I made to the training code may allow me to train other networks a bit quicker in the future.
I train my networks on a GTX 970 card. All of my code in written in Python. I use the library Theano as the backbone for my work (with cuDNN). I use Numpy/Scipy, Fuel, lxml, BeautifulSoup and just the plain Python standard library to handle my data. If someone is interested in how I found, acquired and prepared my data, I can give a more detailed rundown.
Here is a collection of every epoch of ERIS-1, you can really see the progress being made before it peaks around 40ish: http://imgur.com/a/P7CUK
ERIS-1 is a Generative Adversial Network. Basically, you create two neural networks, a "discriminatory" and a "generative" network. The former is fed by the training images and images output by the latter, and is graded by it's ability to differentiate images generated by the gen network from real training images. On the other hand, the generative network is rated higher the better it can "trick" the discriminatory network. Over time the generative network, in theory, produces images that are very hard to tell apart from "real" images.
The network architecture is four layers of convolutions, with ReLus and batchnorms inbetween. If someone is interested in the exact architecture, I can write it out sometime. ERIS-1 is trained for 50 epochs on the top 100k highest rated images downloaded from e621.net, resized to 64x64px. This is somewhat on the lower end of training data size, and I hope to produce better networks using more data in the future. Training ERIS-1 took about 9 hours on a GTX 970, though improvements I made to the training code may allow me to train other networks a bit quicker in the future.
I train my networks on a GTX 970 card. All of my code in written in Python. I use the library Theano as the backbone for my work (with cuDNN). I use Numpy/Scipy, Fuel, lxml, BeautifulSoup and just the plain Python standard library to handle my data. If someone is interested in how I found, acquired and prepared my data, I can give a more detailed rundown.
Here is a collection of every epoch of ERIS-1, you can really see the progress being made before it peaks around 40ish: http://imgur.com/a/P7CUK