Domain: opencv.org
Stories and comments across the archive that link to opencv.org.
Comments · 7
-
Re:The current approach to AI is a DEAD END.
I never understood why people think image recognition is new "AI". It isn't. License plate readers (and image recognition) have been around for decades.
Image recognition was indeed around for decades. It was based on convolutions for edge-detection, haar cascades for face recognition. You'll have used these if you had a camera with face detection up to a few years ago. If you've coded with OpenCV you'll have used these APIs, e.g. https://docs.opencv.org/3.4.1/...
It was an old technology that had run its course and really was a dead end. It wasn't making progress. It required too much custom human coding for things you wanted to recognize, and it was hit-or-miss.
When machine-learning neural networks came of age in the mid 2010s it was a game-changer. It recognized far more things in far more difficult images. Neural networks of course had been around for decades too. What made them come of age was (1) vast tagged training datasets, (2) fast enough hardware to run the training at scale.
-
Bad News
I recently bought a second-hand Kinect 1 to use it in my robotics pet projects and it looked very promising (see OpenKinect and OpenCV). Why can't MS kill Windows 10 instead?
-
Deep nets
From my investigation of the matter it looks to be some sort of multi-variate analysis in drag. Uninteresting. Basically you get guys sitting around twiddling knobs. Finding the right parameters which works for a little bit and then you start knob twiddling again to find the next ones.
Except for 1 key difference. With Deep-Neural-Nets, the knobs twiddle themselves alone.
DNN get inspiration of how some neural network work in the nature (e.g.: a column in the primary visual cortex of the brain) to design thing that you can throw at problems, and which will autonomously train themselves.
Some years back I wrote a day trading program for a friend. It dynamically changed its behavior depending on the market signals and the rules he gave it (stops, buys, shift to a different stock etc.) which he found useful. Now that was fun.
These older program require you to have precise criteria in advance.
That works perfectly well with clearly codified problem - the friend has a clear set of rules that need implementation.
That completely fails for more vague problem ("detect a face") - it would be possible in theory to design a set of rules that can detect a face - a Haar Cascade. But designing such set of rules is extremely complex and cumbersome. And each time you need something new ("detect if there's a bird"), you would need to repeat all the hard work to invent yet another set of rules.
At that point, better take an advice from how mother nature solved the problem (by using stacks of neural network in a columns) and simply throw a DNN (e.g: a Convolution Neural Net - a ConvNet) at the problem, and watch it self organize and come up with a solution to your problem.It's the modern-day equivalent of training pigeons to peck a city images to steer a missile.
-
Gazebo, ROS, OpenCV, Point Cloud Library
Yes, you can learn a lot of robotics without actual hardware. I develop software for self-driving vehicles, and spend 95% of my time away from the hardware!
ROS + Gazebo will let you assemble a robotics software stack and explore different planning and control algorithms in simulation: http://gazebosim.org/ and http://www.ros.org/
If you want to explore perception and computer vision, take a look at OpenCV ( http://opencv.org/ ) and the tutorials there. The great thing about computer vision is you can run your software against the standard research sets or images you pull off Flickr.
Point Cloud Library is a nice package for looking at 3D laser data (but has some numerical quirks): http://pointclouds.org/
I would definitely take a look at some MOOCs, Andrew Ng's Machine Learning at Coursea (https://www.coursera.org/learn/machine-learning) or the MIT Courseware ( http://ocw.mit.edu/courses/ele... )
-
high-level GPU api's and languages
There's probably no need to reinvent the wheel. A number of high-level api's are available for this purpose.
OpenCV does image processing and has GPU support.A more general tool is Theano which is a meta-programming tool. You state your computations symbolically and theano generates a computation graph. The graph gets simplified and the theano generates cpu/gpu code for your equations.
--Beau
-
Re:A few suggestions
Don't forget OpenCV: http://opencv.org/. As another post says, it may well be necessary to assemble components to satisfy a specific application. My experience has been that commercial systems are horribly inflexible for unique requirements.
-
Re:Win32 because of webcam library
What's wrong with the Python interface to Intel's immensely popular OpenCV. Firewire devices, USB, multiple cameras.. all are a breeze on Linux or those-other-two-popular-OS's.
Using a Debian-based system as example:
apt-get install python-opencv
In a Python interpreter do:
from opencv import cv
then:
help(cv)
.. and prosper.