I’m wondering if there are any alternatives to Art Breeder (https://artbreeder.com/) - i.e. sites or standalone software which similarly allow you to use AI to combine the content of one image with the style of another (e.g. make a painting look more like a photograph) in the way that Art Breeder allows you to set weights for the style and other parameters while morphing between the two. It works extremely well except you can only upload your own source images if you pay them a monthly fee, which I can’t afford and I don’t need - I only need to use it for a certain number of images, not on an ongoing monthly basis. Surely this type of weighted morphing is available from other sites or programs, rather than just the more usual morphing which just blends two images without mixing the style of one and the content of another? The ones I’ve looked at don’t allow the same weighting of style parameters, and are far less advanced.
That’s not weighted morphing, it is a trained neural net.
Which means there are papers explaining how to do it, and tutorials, but it is also highly likely that training your own solution would be prohibitively expensive.
And that’s the reason why they are charging monthly fee…
As far as I can tell, related articles are “A Neural Algorithm of Artistic Style” Leon A. Gatys, Alexander S. Ecker, Matthias Bethge, and there’s tutorial on medium, titled “Neural Style Transfer: Creating Art with Deep Learning using tf.keras and eager execution”.
–edit–
This is likely related:
Well, I’ve checked the video and looked into a brief tutorial about it…
Basically, it is possible to train a replacement, but it is not going to be easy.
The whole thing is based off GAN, which stands for Generative Adversarial Networks.
This thing has been used for “This person does not exist”, for example.
Basically, there are two networks. One - a “generator” - takes a “vector” (array) of random values and produces a picture.
The other one - a “discriminator” - takes a picture and tries to determine whether the picture is real or fake. It receives both generated and real photos.
They “fight” each other. Generator tries to produce a picture that woudl fool discriminator, and discriminator tries to determine which pictures are real as precisely as possible.
Because you already know which photos are real, this thing can train itself without supervision, but. “Train” means that it will essentually map all the pictures you provided into an array of floats, meaning… an “N-dimensional” vector. However, meaning of individual values will be unknown.
So, how do they produce pictures in this model. Let’s say it was trained on faces and somebody wants to genderflip Obama. Or change style of a painting. It is the same thing.
First they need to find which “Vector” of inputs the original picture corresponds to. You can locate that with a sort of brute force/gradient descent, but it will take forever. So… they train a 3rd neural network that tries to map pictures produced by generator back to the input vector taken by generator. This will produce a “good enough” guess, and using that guess as a base you can perform a refined search and finally find a function that is almost completely identical to the input.
Then you need some sort of human-sensible parameters. For example “age” for photos. This is done by creating a fourth neural network which will map input vectors to parameters, and that one requires manual labeling. I haven’t gotten to that phase, but supposedly the mapping is simple enough so you can derive a “normal” or an “axis” within that N dimensional vector space that determines which way you have to go if you want to increase/decrease this or that parameter. Then using that mapping you implement a slider, and adjsut input vector guess received from the source image based on “parameter axis” you determined.
And that’s probably what art breeder roughly does.
The problem is input data, manual labels for images, and huge amount of computational time. Basically the video I linked shows training times and we’re talking about 7 days or more, and that’s definitely not on a toaster.
The other issue is that this apparently is related to data scientists, and as far as I can tell, data scientists produce fairly bad code often and also use fairly weird stack of tools. For example, apparently now fascination with “jupiter notebooks” in python is a thing, and I can’t fathom why anyone would want something like that. Coding example for training GANN are available on realpython site, but the code seems to be fairly bad. I mean, the dude has “data” and “labels” arrays which have the same size, but doesnt’ even try to group them into struct or class or something similar.
And that’s the rough idea of it.