Open moefarhat opened 6 years ago
@moefarhat - I found your original paper you linked was more from a comparing results standpoint and not as much how to implement. But they had great links off that paper to others. In order of usefulness. DeepLogo: Hitting Logo Recognition with the Deep Neural Network Hammer Scalable Triangulation-based Logo Recognition ImageNet Classification with Deep Convolutional Neural Networks
I also found a few other papers, which might be worthwhile. Scalable Logo Detection and Recognition with Minimal Labeling Logo retrieval with a contrario visual query expansion Scalable logo recognition in real-world images SSD Deep Learning for Logo Detection Logo Detection Using Machine Learning Research Gate Logo Detection General Answer
Github projects: Logo Detection - YOLOv2 YOLOv2 Logo Detection Medium Article Logo Detection Logo Detection Deep Learning
For the billboard detection (in no particular order of usefulness):
Hough Transform/Edge Detection Methods I think this is cheap, easy to implement and will work relatively well. However it won't be state of the art or most accurate. I think we should probably try to implement one of these methods.
Stack Overflow Billboard Corner Detection How to detect parallelograms from the detected edge points in python Parallelogram Detection Using the Tiled Hough Transform OpenCV shape detection Stack Overflow find intersection point of two lines drawn using houghlines opencv Billboard Detection - Ad Agency Real Implementation, just high level
Read section 4 of this paper, should be very helpful for detecting edges of billboards. He uses something he calls Smartlines. In this paper they detect grass and remove it from the image they're searching - I really like the idea of detecting sky or clouds and removing them from the search domain. Automatic Billboard Detection Master's Thesis (more for soccer billboards)
Objectness I haven't looked enough into this method, but I assume it is also a ML type method that might be very expensive. BING: Binarized Normed Gradients for Objectness Estimation at 300fps Measuring the objectness of image windows Objectness measure V2.2
Contour Detection/Instance Segmentation This seems to be the state of the art method, with Contour Detection getting us segmentation of the billboards, and then we'd have to come up with an algorithm that says a parallelogram shape is most likely a billboard. Instance Segmentation would train directly from billboard images and then use a CNN to get us an exact image mask of the billboard. I am concerned about the expense involved to train/run this type of algorithm. Might need GPUs.
Discriminative Generative Contour Detection Contour Detection, Image and Video Segmentation
Read section 6. Uses instance segmentation to solve the problem, i.e. a deep learning/CNN approach where you train a network to recognize billboards and then it can segment any image automatically as a billboard or not. This is a really good example of how to do it via ML instead of basic computer vision techniques. Suppressing distractors from driver's field of view - Master's Thesis
I think this and that master's thesis are the most useful if we want to go the ML route. It seems like instance segmentation is exactly what we need, but contour detection with some model for what a billboard constitutes could also get us there. Splash of Color: Instance Segmentation with Mask R-CNN and TensorFlow
Great tutorial on how to use R-mask CNN for instance segmentation. He makes it sound not so bad. Deep learning based Object Detection and Instance Segmentation using Mask R-CNN in OpenCV (Python / C++)
Other: I would consider this one cheating because they have manually annotated billboards in their soccer images and then just just build up a probability PDF of where the billboard is in the image using different descriptors. Because they have manually annotated billboards, they know what is part of the billboard and what isn't, so they can easily make a mask of what to project and what to leave out. Some of the interesting parts are the motion tracking maybe? Seems like a lot of 568 concepts are used. Visual Tracking and Localisation of Billboards in Streamed Soccer Matches
Practical Resources for the Project Canny in OpenCV Loading in, manipulating images Geometric Transforms of Images in OpenCV - rotation, affine, homography, etc Same as above but different flavor OpenCV Misc Color Transformations - eg. BGR2GRAY, BGR2RGB Find Intersection of Two Lines Intersection of 2 lines code Intersection of 2 lines BEAST MODE CODE
Need to research this more, but the find contours function was looking almost identical to the Canny Edges for me :( OpenCV Find Contours - could maybe replace Hough Lines? OpenCV Convex Hull Process Image to find external contour Finding extreme points in contours using openCV Scipy Convex Hull Implementation - Maybe better? Convex Hull by hand using only numpy
Linear Regression/Least Squares Fitting a Rectangle: Fitting a rectangle Best fitted rectangle on a set of points Fit a rectangle around points
How to convert videos to images: OpenCV - Getting Started with Videos Learn OpenCV - Read, Write and Display a video using OpenCV Scikit-image working with videos
RDP Algorithm (to simplify polygons, not sure if useful): RDP on Wikipedia RDP Overview RDP Library #1 RDP Library #2
This paper uses neural nets to recognize company logos on billboards, uses flikr as a source of learning.