I'd like to develop an algorithm for recognizing and generating graphical designs. As an example, consider these examples from one class:

class 1 example 1 class 1 example 2

Two examples from another class:

class 2 example 1 class 2 example 2

I want to detect which class the query image belong to, as well as possibly generate a new sample from the class.

Do you have any idea how this could be done?

  • $\begingroup$ I'm assuming that your problem is template matching, but looking at your images, they don't appear to be similar at all. Could you please provide an example, which has an image that you like to detect (Template) and an image, which you want to search (scene)? $\endgroup$ – Tolga Birdal Jan 10 '17 at 10:17
  • $\begingroup$ It's not template matching. A human observer would consider of a similar "style", however if you showed him some examples of handwritten English, he would consider them as another type of image. That's what I expect the algorithm to do: to take examples of similar images and consider them as the same class. $\endgroup$ – Mehrin Jan 10 '17 at 10:22
  • $\begingroup$ Okay I see, so you would like to do style recognition and classify each image to be an image of graphical pattern or not? $\endgroup$ – Tolga Birdal Jan 10 '17 at 10:23
  • $\begingroup$ @Tolga Almost... This is a special class of graphical patterns. Other classes are also possible such as stars, polygons, etc. $\endgroup$ – Mehrin Jan 10 '17 at 10:30
  • $\begingroup$ Do you also want to detect which graphical pattern is this? Or do you just want to detect the style of it? Could you please be more precise on the question? It really changes the method. $\endgroup$ – Tolga Birdal Jan 10 '17 at 10:33

I think deep learning comes very handy to solve such problems in these days. Simply create a convolutional neural network (CNN) architecture. Your input are the images, which are resized to one common dimension. The output is the class (type) of the image. For a CNN, this problem is rather simple and if you don't have a lot of training examples, a simple architecture such as LeNet would suffice. Of course, if you have a lot of classes, maybe a larger network (such as AlexNet) might be more appropriate. In either case, you could benefit from a large set of libraries, which are mostly coded in Python. To name a few: Tiny-DNN, Caffe, Tensorflow and Torch.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.