1

I would like to develop a machine learning algorithm, given two photos, that can decide which image is more "artistic".

I am thinking about somehow combining two images, giving it to a CNN, and get an output 0 (the first image is better) or 1 (the second image is better). Do you think this is a valid approach? Or could you suggest an alternative way for this? Also, I don't know how to combine two images.

Thanks!

Edit: Let me correct "artistic" as "artistic according to me", but it doesn't matter, I am more interested in the architecture. You can even replace "artistic" with something objective. Let's say I would like to determine which photo belongs to a more hotter day.

DukeZhou
  • 6,237
  • 5
  • 25
  • 53
  • 1
    Lol..I am not even sure how humans decide which photo is more artistic. –  Jun 11 '18 at 14:15
  • 1
    @DuttaA Art History is the general field for this, subfield photography. :) Composition is perhaps the primary qualities, but others would be contrast, lighting, focus, etc. and more subtle concepts such as "telling a story" or "capturing a moment". – DukeZhou Jun 13 '18 at 17:15
  • It is Simple by lighting the image with the datamodel expose the original image with the generated one – Mariya Ronald Jan 24 '20 at 14:47

3 Answers3

3

You need to define a scoring function, which returns a value of whatever criterion you are interested in, be it 'artisticity' or 'heat'. This could be something you use a machine learning algorithm for, provided you have a set of training data with labelled images.

You then need to extract features from the images. In the case of 'heat' this could be a colour spectrum (ie distribution of colours across the image), or whatever. If it's a reasonably small image, pixel values might be feasible. These features you can feed into your algorithm, and try to learn an association between the feature values and the (assigned by you) label of the image. You will end up with a classifier that takes image features as input, and returns the labels as output. The quality of the classifier depends on your images, the features you selected, and the task. If there is no structure in the data, then a classifier will not work properly.

If you have a continuous value (eg temperature in degrees C) you would run your two sample images through the classifier, and then compare the output values.

Oliver Mason
  • 5,322
  • 12
  • 32
  • 1
    For a CNN this is the way to go. May be worth mentioning that "provided you have a set of training data with labelled images" probably requires many 1000s of labelled images that the OP needs to source somehow. – Neil Slater Jun 11 '18 at 19:14
1

I think the real problem is, what defines a more artistic image? It's really subjective, I think complexity of the work might be one aspect to consider but still a subjective one, you might want to make the purpose of your ML algorithm more objective or defined. But then again, It's just my opinion

0

My feeling is that, because you are dealing with a subject that his highly subjective, you need to integrate whatever learning algorithm you use with human feedback.

This is to say, crowdsource human opinions on a data set of pictures, train the algorithm to try to intuit what qualities images with similar human rankings share. (Both the positive and negative rankings.) Run the algorithm on a new data set and crowdsource that data set to see if the algorithm gets it right. Rinse & repeat.

You may also want to utilize demographics in the human crowdsourcing. Art historians will likely have different criteria for what makes a photo artistic than the general public. Humans with different educational backgrounds will likely have different criteria for what makes a photo artistic.

Sans the crowdsourcing, the algorithm will have no ability to determine the aesthetic qualities other than what the programmer defines, and in that case, the algorithm will only be able to determine what photos are artistic to the programmer, limiting the utility.

DukeZhou
  • 6,237
  • 5
  • 25
  • 53