7
$\begingroup$

What are the most used/popular artificial neural network algorithms for recognising the content of images in general?

E.g.

  • If the picture is of a person, dog, cat or a car.
  • If the picture is a landscape, indoor or some banner or advert.

etc.

I've heard of backpropagation algorithm so far.

$\endgroup$
13
$\begingroup$

According to Wikipedia, there are 4 main types of artificial neural network learning algorithms: supervised, unsupervised, reinforcement and deep learning.

Unsupervised learning algorithms:

Supervised learning algorithms:

Reinforcement learning algorithms:

Deep learning algorithms:

And other (e.g. Data Pre-processing).

So basically you need a good algorithm for pattern recognition for your computer vision analysis.

Object recognition methods in computer vision

Object recognition is a process for identifying a specific object in a digital image or video. Object recognition algorithms rely on matching or learning algorithms using appearance-based or feature-based techniques. Common techniques include edges, gradients, Histogram of Oriented Gradients (HOG), Haar wavelets, and linear binary patterns. Object recognition is useful in applications such as video stabilization, automated vehicle parking systems, and cell counting in bioimaging.

You can recognize objects using a variety of models, including:

  • Extracted features and boosted learning algorithms,
  • Bag-of-words models with features such as SURF and MSER,
  • Gradient-based and derivative-based matching approaches,
  • Viola-Jones algorithm,
  • Template matching,
  • Image segmentation and blob analysis,
  • Fuzzy Membership Rules,
  • etc.

So there are plenty of different approaches and it's difficult to choose the most efficient or popular, because it really depends on the needs. And the list is increasing every year.


There are also independent algorithms in computer vision, in example:

Read more:


Popular open source computer vision software:

  • OpenCV (Open Source Computer Vision Library),

    Open source computer vision and machine learning software library. It has C++, C, Python and Java interfaces and supports Windows, Linux, Android and Mac OS.

    OpenCV is released under a BSD license, it is free for both academic and commercial use. It has C++, C, Python and soon Java interfaces running on Windows, Linux, Android and Mac. The library has >2500 optimized algorithms (see figure below). It is used around the world, has >2.5M downloads and >40K people in the user group. New algorithms continue to be added to the Open CV library.

  • SimpleCV

    SimpleCV is a Python interface to several powerful open source computer vision libraries in a single convenient package.

    It allow access to the high-level feature detection, filtering, and pattern recognition algorithms found in Open CV without the need to understanding of bit depth, file format, or buffer management techniques.

  • Accord.NET Framework

    The Accord.NET framework provides machine learning, mathematics, statistics, computer vision, computer audition, and several scientific computing related methods and techniques to .NET. This project extends the popular AForge.NET Framework providing a more complete scientific computing environment.

  • MATLAB from MathWorks

    An open-source platform-independent C++ framework for machine learning and computer vision research framework. Working with Open CV, the framework contains MATLAB wrappers for core components of the library and an experimental graphical user interface for developing and visualizing machine learning data flows. Using MATLAB, you can analyze data, develop algorithms, and create models and applications.

  • ROVIS Machine Vision System

    An open source software application under development by the ROVIS Research Group.

  • Open Vision Control

    A software package for object motion detection.

Such open source frameworks are also available for the Android operating system. These include Cuckoo, an Android framework.


Conclusion

So everything is about the needs, requirements, scalability, time and money involved. Therefore I would start to experiment with OpenCV library (which has over 2500 optimized algorithms) and learning algorithms written in Matlab, Octave or Python.

On-line courses:

Links:

$\endgroup$
4
$\begingroup$

This field is evolving rapidly. Just a few days ago, the results of the imagenet 2014 challenge have been published. It will take some time until all the papers are available.

If you want to solve these kinds of problems, the take away message is that most, if not all classical solutions to the problem are obsolete.

The way to go (and it probably won't change too soon!) are convolutional networks with dropout. This approach has been pushed by Geoffrey Hinton's Phd Alex Krizhevski (both at Google now) and is known as "AlexNet". The relevant publication can be found here.

Several $\epsilon$ improvements have been made. Some names to google are Jonathan Masci, Matthew Zeiler, Dan Ciresan.

There are numerous open source implementations, e.g. cuda-convnet2, Decaf, OverFeat.

The guys of clarifai have a nice demo of the capabilities of this method.

$\endgroup$
1
$\begingroup$

Depends on what you mean by efficient. If you want state-of-the-art predictive performance, you should dig into deep learning, convolutional networks and the like.

Those techniques are very computationally intensive, though. So if by efficient you mean low training complexity, you want to be looking at the opposite end of the spectrum.

$\endgroup$
  • 1
    $\begingroup$ Efficient in the meaning which are the most used or popular nowadays. Can you list at least few good algorithm candidates to dig into? $\endgroup$ – kenorb Aug 20 '14 at 13:07
  • $\begingroup$ @kenorb that's not a conventional meaning of 'efficient'. I guess you made edits already. $\endgroup$ – Memming Aug 20 '14 at 17:05
  • $\begingroup$ The problem with SE is that you've to use specific limited wording which you don't want to use. I was afraid of using common used, popular or best, as it would be closed as too broad or opinion based. $\endgroup$ – kenorb Aug 20 '14 at 17:15

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.