To apply machine learning, you need to find thousands of labeled examples of both real and rendered images.
After you have labeled data, most likely a Convolutional Neural Network (CNN) will learn the differences between the labels.
There are several data augmentation techniques available as rightly pointed out by Paul. You could for e.g. see the following https://www.kaggle.com/cdeotte/25-million-images-0-99757-mnist where 25 million images are generated from 42K original images.
The only other approach I would like to add is that if the real image you want to classify can be broken ...
Your training and testing data should be different, for the reason that it is easy to overfit the training data, but the true goal is for the algorithm to perform on data it has not seen before. Its normal to see your training performance continue to improve even though your test data performance has converged.
This might be a bit more complicated.
I normally reuse computer vision and deep learning software to do that. Even if I don't do Deep Learning.
Particularly I use Pytorch, for its bridge with Numpy and pandas. Here is a tutorial.
This allows me to use a GPU if wanted, and to reuse a lot of code since for deep learning and images there is tons of code ...
Yes, merging / dropping classes will tend to increase performance. If you merge classes, there will be more examples per class which will tend to decrease the variance of a model. Reducing the total of number classes has the potential to allow the model better fit the data, reducing bias. Many models are constrained by learning capacity.
There is no way to definitely note how many epochs is required. Your accuracy graphs may be unstable for several reasons such as -
Irregular data distribution
Large batch size (as mentioned in the comments)
Overfitting and underfitting (in this case im not too sure which one)
You can fix it through the following methods -
Analyse your data ...
This image perfectly defines your situation, you achieved great results on 12th epoch because after that your model starts to overfit your training data resulting in bad testing results.
12th epoch is your model's Best Fit.
You also would have noticed between 1-12 epochs both your Training as well as Testing error was going down.
Yes, this is the reason you should use 'early stopping' in your models which will stop training when the model is not improving or you can keep the history of the training to pick the epoch that had the best performance.
The reason you get excellent results in the 12th epoch, but terrible performance in the 100th epoch is simply you are overtraining. By ...
The answer may depend on what kind of information you want to extract from the images. However, the general approach to the problem is to find a perfect balance so that your image is not too small which is hard to extract too much information or it is not high-resolution input which will unnecessarily complicate your model. The latter will also be hard to ...
Two possible approaches:
Treat it as a supervised learning problem by tagging each image with mood/style labels.
Treat it as an unsupervised learning problem by applying topic modeling. Each image would probabilistically belong to a topic. Then label each topic with a mood/style.