1

Usually the logo detection means find the logo and recognize the logo. Some common works do the two steps together using SIFT/SURF matching method, detailed in

But, if the logo is tiny and blur, the result is poor, and kind of time consuming; I want to split the two steps, firstly finding where the logo is in video; then recognize the logo using template matching or other method, like:

My problem is mainly focused on finding the logo automatically in video. I tried two methods:

  • Brightness method. The logo on tv screen usually always there when the show goes on, I select a list of frames randomly and do difference between frames, the logo area tend to be 0; I do some statistics of 0 brightness with threshold to determine whether the pix is logo or not. This method usually do well but failed while the show has static background.
  • Edge method. Likely, if the logo is there, the border tends to be obvious. I do the statistic work like Brightness method, but edge sometimes unstable,such as very bright background.

Are there any suggestions or state of art methods to auto finding logo areas and any other logo recognition method except sift or template matching ?

2 Answers2

1

Let's assume your list of logos known before hand and you have access to examples (video streams/frames) of all logos.

The 2017 answer to your question is to train a logo classifier, and most likely a deep neural network.

With sufficient training data, if it is identifiable to the TV viewers it will be able to detect it. It will be able to handle local blurring and intensity changes (which may thwart "classic" image processing methods of brightness and edges).

OpenCV can load and run network models from multiple frameworks like Caffe, Torch and TensorFlow, so you can use one of their pre-trainined models or train one yourself.

Adi Shavit
  • 16,743
  • 5
  • 67
  • 137
  • Thanks, the real problem for neural network is that can not obtain enough training logos. Only several TV channel logos at hand for template, too less to train classifier; One on one match seems to the only solution. – BrownOfSummer Aug 21 '17 at 09:38
  • You might try other ML techniques from the ML Module. – Adi Shavit Aug 21 '17 at 09:47
0

You could also try the Tensorflow's object detection API here: https://github.com/tensorflow/models/tree/master/research/object_detection

The good thing about this API is that it contains State-of-the-art models in Object Detection & Classification. These models that tensorflow provide are free to train and some of them promise quite astonishing results. I have already trained a model for the company I am working on, that does quite amazing job in LOGO detection from Images & Video Streams. You can check more about my work here: https://github.com/kochlisGit/LogoLens

The problem with the TV is that the LOGOs will probably be not-static and move along the frames. This will result in a motion blur effect, which will probably make your classifier to get confused or not see the LOGOs. However, once you find a logo You can use an object tracking algorithm to keep track of the logo (e.g. deepsort)

LazyAnalyst
  • 426
  • 3
  • 16