Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Image Recognition Neural Networks, Open Sourced

timothy posted about 5 years ago | from the don't-tell-hal-about-this dept.

Technology 98

sevarac writes "The latest release of Java Neural Network Framework Neuroph v2.3 comes with ready-to-use image recognition support. It provides GUI tool for training multi layer perceptrons for image recognition, and an easy-to-use API to deploy these neural networks in end-user applications. This image recognition approach has been successfully used by DotA AutoScript tool, and now it is released as open source. With this Java library basic image recognition can be performed in just few lines of code. The developers have published a howto article and an online demo which can be used to train image recognition neural networks online."

cancel ×

98 comments

Sorry! There are no comments related to the filter you selected.

Wow (0)

XDirtypunkX (1290358) | about 5 years ago | (#29716621)

People are still using multi-layer perceptrons for that? Guess if you've got CPU power to burn...

Re:Wow (0, Informative)

Anonymous Coward | about 5 years ago | (#29716655)

State-of-the-art 20 years ago! Why /., why?

ICU812:OMFGIJHAOE (-1, Troll)

Anonymous Coward | about 5 years ago | (#29717017)

oh my fucking god i just had an orgasmic experience

lways do when i see opensores

zostergrl

They do support other things (4, Informative)

OeLeWaPpErKe (412765) | about 5 years ago | (#29717441)

So please don't take the (dumb) slashdot blurb as the exhaustive feature list of the library.

Supported :
-> Adaline
-> Perceptron
-> Multi layer perceptron
-> Hopfield
-> Kohonen
-> Hebbian
-> Maxnet
-> Competitive network
-> RBF network

So it does support several quite modern approaches. It also has a training utility which supports image training. This should be very useful to students imho.

Re:They do support other things (0)

Anonymous Coward | about 5 years ago | (#29728643)

I 3 Kohonen self-organizing maps.

White Cluster (-1, Offtopic)

Anonymous Coward | about 5 years ago | (#29716775)

Still it came passing by
The pieces weaved together rose the sun
And fooled me with another day
The knocking message called for my life

Sealed the spell of my scrawny body
Soil to skin, my next of kin
Damp air grasped, stole the words
And greeted me with a hiss

This is forgiveness, so I know
Once I repent I seal the lid
I slither for you and I'm dying
I find trust in hate

They wear white for me
Seemingly jaded and lost
I forge myself into your dreams
And here I am your life

Hangman, clutching at his tools
I will come for you

The noose is tied
Murmur through the crowd
Plunging into anywhere but here

Cloak-captured sighs of relief
As the primal touch brought me back
And the last sight I did see is still here
Beckoning right behind me

what do you suggest? (1)

jipn4 (1367823) | about 5 years ago | (#29717061)

So, what do you suggest people should use instead?

Re:Wow (0)

Anonymous Coward | about 5 years ago | (#29717895)

More like "Wow, would I really want something that uses Neural nets? They generally suck the big one at getting the job done. " And who cares if they are open source? Like I am going to have to choose between them and the neural net product on Amazon?

Re:Wow (0)

Anonymous Coward | about 5 years ago | (#29718839)

Yeah, I don't give a damn about them being open source. It's not like it would take me long to write them if I needed them. And, on top of it it is just the kind of thing where I want to know what I the code is doing. True, it's open source, but why the hell should I read someone else's code when I could write it myself and know it like the back of my hand? How long is this wonderful code anyway?

Lots of tweaking required (in general) (5, Interesting)

Anonymous Coward | about 5 years ago | (#29716637)

Neural nets aren't a good solution for all problems (nothing is, of course).

Furthermore you need plenty of training data partitioned into training and test sets so you can evaluate the generalisation error. If you don't do that you can have absolutely no confidence about the performance of your system.

Working with neural nets has a mostly experimental feel to them (I am a final year AI student). I'm not sure application developers have the discipled methodology to use them correctly (though maybe this framework helps with that) as these behave quite differently from standard computer vision recognition techniques.

Nonetheless, good to see another free toolkit out there.

Re:Lots of tweaking required (in general) (2, Interesting)

dominious (1077089) | about 5 years ago | (#29716861)

Furthermore you need plenty of training data partitioned into training and test sets so you can evaluate the generalisation error. If you don't do that you can have absolutely no confidence about the performance of your system.

Maybe you will find this interesting: http://jmlr.csail.mit.edu/papers/volume9/shafer08a/shafer08a.pdf [mit.edu]

Re:Lots of tweaking required (in general) (5, Funny)

NoYob (1630681) | about 5 years ago | (#29716957)

I am a final year AI student

Damn! You're one hell of an AI student! What language were you written in? Java? So one more year and you're a full blown AI? Am I asking too fast for your CPU to keep up? I'll wait ....

Re:Lots of tweaking required (in general) (5, Funny)

Anonymous Coward | about 5 years ago | (#29716991)

What suggests that I was written in java so one more year and youre a full blown ai are you asking too fast for my cpu to keep up ill wait?

Re:Lots of tweaking required (in general) (1)

Hucko (998827) | about 5 years ago | (#29717247)

you used methodology.

Re:Lots of tweaking required (in general) (0)

Anonymous Coward | about 5 years ago | (#29717465)

I used this: http://www-ai.ijs.si/eliza/eliza.html [www-ai.ijs.si]

Re:Lots of tweaking required (in general) (1)

Tibia1 (1615959) | about 5 years ago | (#29726233)

Oh, i [].

Re:Lots of tweaking required (in general) (1)

phoenixwade (997892) | about 5 years ago | (#29717723)

you weren't spiking with a Lisp, maybe?

Re:Lots of tweaking required (in general) (1)

IceMonkiesForSenate (1316211) | about 5 years ago | (#29719921)

Your post didn't have a prolog.

Re:Lots of tweaking required (in general) (2, Insightful)

jipn4 (1367823) | about 5 years ago | (#29717325)

Furthermore you need plenty of training data partitioned into training and test sets so you can evaluate the generalisation error.

Yes. What's the alternative?

Working with neural nets has a mostly experimental feel to them

Most of software development is "experimental" because most software works with real-world data and because you have an endless cycle of implementing new features, testing, bug reporting, and bug fixing. With neural networks (and similar methods), at least people quantify their error rates. With most other applications, people can't even quantify how often they fail or whether a bug fix actually improves things.

Re:Lots of tweaking required (in general) (0)

Anonymous Coward | about 5 years ago | (#29720097)

I thought I was the last fool to get my PhD in AI ten years ago...
AI is dead as dinosaur. Get over it.
Even Hawking's hierarchical temporal memory approach doesn't work well.;..

Training vs google (1)

cyclomedia (882859) | about 5 years ago | (#29729427)

wouldnt it be cool if there was a neural net search engine, so rather than everyone training up their own individual image recognition bots in isolation they cook work together in a supernet when training but still be disconnected when in use. Prior art would be the matrix: "I know Kung Fu!"...

C/C++ implementation (1)

moon3 (1530265) | about 5 years ago | (#29716719)

Is there a C++ library somewhere ? They have chosen GPL so probably somebody could make a nice and useful C++ fork out of this.

Re:C/C++ implementation (0)

Anonymous Coward | about 5 years ago | (#29716837)

I second that. Image recognition is not a trivial task and implementing this library in lower level languages such as C or C++ would benefit it enormously performance wise.

Re:C/C++ implementation (0)

Anonymous Coward | about 5 years ago | (#29716985)

It's unlikely there will be much speed advantage, unless C/C++ version contains some serious amount of SSE vectorized code etc. If it's straight C++ vs straight Java, the difference is less than 5%, and it's unclear which one comes ahead.

Re:C/C++ implementation (0)

Anonymous Coward | about 5 years ago | (#29717167)

It's unlikely there will be much speed advantage, unless C/C++ version contains some serious amount of SSE vectorized code etc. If it's straight C++ vs straight Java, the difference is less than 5%, and it's unclear which one comes ahead.

Have you got any actual evidence for this statement?

Re:C/C++ implementation (1)

Spacezilla (972723) | about 5 years ago | (#29719173)

Have you got any actual evidence for this statement?

Never has the comment "You must be new here." been more appropriate.

Re:C/C++ implementation (0)

Anonymous Coward | about 5 years ago | (#29720837)

Only my experience. It's somehow fashionable to bash Java. The fact is, computation intensive code fares pretty well in Java. People see slow Java-based end user apps with serious design pattern overdose and jump conclusions. Guess what? C++ apps would be equally slow with equivalently insane level of abstraction. And C++ apps are actually slower in thread safe memory management, sometimes a lot.

There's little speed difference in data processing and math code. And why should there be -- the actual machine code generated is very similar in both languages. The only difference is that C++ compiler generates final output, in Java, it's the virtual machine.

The advantage of C++ is ability to use hardware acceleration and SIMD-optimized libraries. Java JNI (java native interface) calls are rather slow.

Re:C/C++ implementation (1)

ailnlv (1291644) | about 5 years ago | (#29716911)

you could probably use the c++ port of weka
http://www.ohloh.net/p/wekacpp [ohloh.net]

Re:C/C++ implementation (2, Interesting)

khakipuce (625944) | about 5 years ago | (#29717201)

Is there a FORTRAN port or a COBOL port? Java is a perfectly good language but it seems that there are a group of Slashdotters that automatically dismiss anything written in Java. Generally their views seem to be based on false rumour put about when Java first got off the ground.

For the record I have been coding for the last 30 years in just about every major language (with the notable exception of COBOL) on every platform from Mainframes to embedded. I still use C/C++ when I have to but default to Java when ever possible. This is not because I am some dumb newbie, or because of what I was taught at collage; it is because I chose Java over a decade ago as the best balance of versatility and productivity for general purpose programming. I also regularly use PHP and sometimes still do FORTAN when the job requires, and I make a point of seeing what new languages have to offer (Ruby, Python, etc.) but there is no need for a C++ port because the Java one will do you fine.

Re:C/C++ implementation (1)

tjmcgee (749076) | about 5 years ago | (#29717241)

Unless of course you want to run it somewhere that doesn't support/allow java. Perish the thought. Otherwise totally agree.

Re:C/C++ implementation (1)

zach_the_lizard (1317619) | about 5 years ago | (#29717359)

Java is okay. The main thing I don't like about it is the lack of const references. I also miss having pass-by-value and pass-by-reference be explicit.

Re:C/C++ implementation (1)

Adam Dyga (1654843) | about 5 years ago | (#29718709)

Const references? Here you are:

final Object obj = new Object();

In Java everything is passed by VALUE (yes, that's not a mistake) - both primitive types and references.
When you pass the 'obj' variable from the example above as a method parameter,
you actually pass the reference (or pointer in other words) by value.

Re:C/C++ implementation (0)

Anonymous Coward | about 5 years ago | (#29731171)

That's not what I wanted. Perhaps I didn't make myself clear. What about this in C++:

someReturnType some_function(const Object& obj)

Now we've made a contract that says this: This function will not modify the object. (You can use a const_cast, but that is akin to sabotage, which is available in any language).

Re:C/C++ implementation (1, Insightful)

gbjbaanb (229885) | about 5 years ago | (#29717445)

My issues with Java (and especially with the containers layered on top like Tomcat, J2EE etc) is simply resource usage. It can use up a lot of memory just to put a tiny little java app on a server. VMWare found this out when they rewrte their management utility using Tomcat, a lot of users started to complain that it took up 500mb, which was enough to run another guest image!

My other issue is the 100% pure java nonsense. Anyone that tries to tell me what languages I should code in gets that language added to my ban list. I know it was a reaction to MS, but other managed languages are roughly the same - you have to code in that managed environment or suffer various hacks, performance issues to get native code working, which in this day of easy-to-code script languages calling high-performance C dlls is just unacceptable.

Now, there are times when a C port is useful, pretty much all the time. If your java app can call a C library, then a C library is much more useful than a Java one, you instantly give access to it from every other language out there whereas a java one would only be accessed from other java apps.

Re:C/C++ implementation (1)

angel'o'sphere (80593) | about 5 years ago | (#29727537)


My issues with Java (and especially with the containers layered on top like Tomcat, J2EE etc) is simply resource usage. It can use up a lot of memory just to put a tiny little java app on a server. VMWare found this out when they rewrte their management utility using Tomcat, a lot of users started to complain that it took up 500mb, which was enough to run another guest image!

What has a neural network library to do with a web server like tomcat? So you want to use/run a C/C++ Web Server and link a C++ neural network library? Then I would check for a C++ neural network lib, there are plenty.

Regarding Tomcat ... Tomcat runs just fine with 32MB ram. If yours does not, then it might be the app that is installed on it, uses up ram.


My other issue is the 100% pure java nonsense. Anyone that tries to tell me what languages I should code in gets that language added to my ban list. I know it was a reaction to MS, but other managed languages are roughly the same - you have to code in that managed environment or suffer various hacks, performance issues to get native code working, which in this day of easy-to-code script languages calling high-performance C dlls is just unacceptable.

I agree that it might b a bit difficult to get native code running under .Net, however using C and C++ in conjunction with Java never gave me any issues.

Now, there are times when a C port is useful, pretty much all the time.
Certainly not. C is an prodecural imperative language.
The only reason I would use C is if I'm embedded and restricted to kilobytes of memory.
And even then I would consider to use the JavaScript implementation that comes with Chrome and try to implement my business logic in JavaScript instead.

If your java app can call a C library, then a C library is much more useful than a Java one,
Certainly not. In any language like C (pascal etc) the abilities of your library are more or less fix (you are limited to extensions like the C-function qsort is, applying a un-save function that compares to of its arguments and returning -1, 0 , 1)
Everyone who provides an object oriented library gives automatically (with out special designing for it) far more options to improve / extend the library.
In traditional C libraries usually only your code calls the lib. In modern OO programming the library calls your code. That is a hughe difference.


you instantly give access to it from every other language out there whereas a java one would only be accessed from other java apps.
Wich means only be accessed from any other java app written in any language running on a JVM, like Groovy and Scala etc.

As the guy who answered you first points out: for the majority of programmers, C is the last choice ... and C++ is not that popular as well anymore as well. With Qt now LGPL that might change again however.

Bottom line, if you want to fork of that special Java Library, and your claim to be a good C++ Programmer, it should be rather easy for you to translate it.

angel'o'sphere

C is 100000 times faster than java (2, Interesting)

mangu (126918) | about 5 years ago | (#29717771)

Java is a perfectly good language but it seems that there are a group of Slashdotters that automatically dismiss anything written in Java

Have you ever tried going to the limit in optimizing code? An SSE2 machine can do a multiply-and-sum operation on an array of four floating point numbers in one clock cycle. Multiply-and-sum is, basically, what's needed in an artificial neuron network. Get your best effort in java programming and count the cycles. I have seen papers showing an improvement of about 200 thousand times in the best C-plus-Assembly code, versus the best that java can do.

The problem with java is not that it's a "bad" language intrinsically, but that it's best used in what are normally called "corporate" applications. Java is excellent if you are doing database searches, inventory management, trouble ticket applications, CRM, ERP, etc. Java is an alternative for .NET, not forC/C++.

Now, when you go into scientific applications, you usually are developing new algorithms, which may need large amounts of optimization to become practical. This means you may need to unroll your loops, manage the several levels of cache efficiently, watch for all the details on how each byte passes through the CPU(s).

It's not practical to write large applications entirely in assembly code, therefore for those kinds of software you need a somewhat higher level language that blends in smoothly with assembly language, which means C.

Re:C is 100000 times faster than java (1)

ranjix (892606) | about 5 years ago | (#29721313)

meh, not sure about that. You keep forgetting that you don't have to write the whole program in Java, use the JNI and you could implement the parts that really need to be fast in C/C++... Java has some obvious advantages when it comes to portability, out-of-the-box supported libs, database connectivity, even some GUI, which might leave impression that it should be used everywhere. As you pointed out, it doesn't have to, but also the reciprocal is true, one shouldn't dismiss it just because it doesn't do well or fast enough certain operations.

Re:C/C++ implementation (1)

dissy (172727) | about 5 years ago | (#29718569)

Java is a perfectly good language but it seems that there are a group of Slashdotters that automatically dismiss anything written in Java. Generally their views seem to be based on false rumour put about when Java first got off the ground.

In all fairness, when Java first got off the ground, those rumors weren't false!

But yes, most all of the issues with speed and JiTC have not been problems for some time now, and the compatibility issue, while still exists, has been reduced to "Works with Suns JVM" or "Works with MS JVM" etc, and are now just 'annoying' implementation details instead of actual 'problems'.

Re:C/C++ implementation (1)

sjames (1099) | about 5 years ago | (#29722955)

Personally, I avoid Java apps because for run anywhere they sure are awfully picky about how anywhere is set up. I find that they rarely want to run right and when they do in spite of claims that the resource hogging is a myth, I notice that the disk spins and spins while it's loading. Meanwhile, C, python, Perl, and FORTRAN just work.

Meanwhile, C libs are easy to use in nearly anything else. It's easier to call Python from C than it is to call Java from anything else.

maybe neural nets (-1, Troll)

polar red (215081) | about 5 years ago | (#29716751)

will not be stubborn enough to ignore real hard facts about climate change:http://news.bbc.co.uk/2/hi/science/nature/8299426.stm [bbc.co.uk]

"This is yet another paper that makes the future look more scary than previously thought by many," said the University of Arizona scientist.

Re:maybe neural nets (0, Offtopic)

polar red (215081) | about 5 years ago | (#29716895)

current CO2 levels could lead to a sea-level rise of 25 to 40 meters. (80 to 130 ft)

Delenda Carthago (2, Funny)

Dr. Hok (702268) | about 5 years ago | (#29717323)

climate change

You remind me of Cato the Elder [wikipedia.org] who had the habit of ending all his speeches with the words Furthermore, I think Carthage must be destroyed [wikipedia.org] . I think he was right, and I think you're right, too. But that's slashdot: What earned the old Roman eternal reputation gives you only a "-1, Troll". Hang on, though.

Furthermore, I think that the CO2 level in the atmosphere must be reduced.

Re:Delenda Carthago (0)

polar red (215081) | about 5 years ago | (#29717807)

gives you only a "-1, Troll".

I wear that -1 proudly as a badge, because that means they know I'm (or rather the scientists are) right; and instead of attacking the message, they attack the messenger.

Re:Delenda Carthago (0)

Anonymous Coward | about 5 years ago | (#29718489)

Or that you're annoying. There are trolls on both sides of every argument.

Re:Delenda Carthago (-1, Offtopic)

polar red (215081) | about 5 years ago | (#29718527)

There are trolls on both sides of every argument.

that's right. guess which side backs up its arguments with links to articles describing actual scientific work?

Re:Delenda Carthago (-1, Offtopic)

polar red (215081) | about 5 years ago | (#29718607)

and maybe you should read my message thoroughly: especially the 'attack the messenger'-part.

Re:Delenda Carthago (0)

Anonymous Coward | about 5 years ago | (#29724019)

You can be right and still be annoying.

Re:Delenda Carthago (0)

Anonymous Coward | about 5 years ago | (#29724483)

-1 offtopic, -1 troll , ...

Q.E.D. LOSERS.

Re:Delenda Carthago (0)

Anonymous Coward | about 5 years ago | (#29724567)

Actually, it's because you keep saying it when it's completely irrelevant to the discussion. What the GP is saying that although climate change is an important topic, it doesn't have anything to do with the discussion at hand. You're like Walter in The Big Lebowski who would turn everything into an allegory for Vietnam even when it was utterly inappropriate.

Re:Delenda Carthago (1)

polar red (215081) | about 5 years ago | (#29729105)

on the frontpage now : "Facebook User Arrested For a Poke", NOT on the frontpage : "'Scary' climate message from past". Stuff that matters my ass.

!Open Sourced (5, Informative)

RiotingPacifist (1228016) | about 5 years ago | (#29716757)

Maybe im wrong but to me "open sourced" sounds like the project was closed then it was "open sourced" and now its open source. This project has AFAICT always been open:

Neuroph started as a graduate thesis project, after that a part of master theses, and on September 2008. it became open source project on SourceForge.

Also why not give the license in the summary (LGPL3).

Re:!Open Sourced (4, Informative)

logfish (1245392) | about 5 years ago | (#29717073)

To open source thesis work, you will have to get approval from the university your are working at. So I think it probably got open-sourced later then it was developed at least. Often (at my faculty at least) implementations are protected aggressively, to keep other people from getting the same performance.

Re:!Open Sourced (0)

Anonymous Coward | about 5 years ago | (#29717303)

That depends on your university. Many universities (especially those outside of the United States of America) believe that the faculty and students own what they write.

Re:!Open Sourced (2, Informative)

Anonymous Coward | about 5 years ago | (#29725971)

To open source thesis work, you will have to get approval from the university your are working at. So I think it probably got open-sourced later then it was developed at least. Often (at my faculty at least) implementations are protected aggressively, to keep other people from getting the same performance.

man... your university's IP policy sucks.

Re:!Open Sourced (0)

Anonymous Coward | about 5 years ago | (#29717177)

You may well find that all work developed on Uni computer systems / using Uni resources / as part of Uni work might actually belong to the University.
 
The particular university in question may differ, but that's certainly how a lot of Mechanical Engineering departments work.

Re:!Open Sourced (1)

sevarac (1654475) | about 5 years ago | (#29734925)

Hi, you're right when you say the Neuroph has always been open source, but the image recognition used by http://dota-autoscript.com/ [dota-autoscript.com] has not been open source. With this release of Neuroph we added the image recognition support based on ideas and original code from http://dota-autoscript.com./ [dota-autoscript.com.]

Defense of the Ancients (0)

Anonymous Coward | about 5 years ago | (#29716893)

This image recognition approach has been successfully used by DotA

Dammit, I knew the AI was getting better, but I didn't realize this was why.

Usage of the comma, very weird (3, Insightful)

Anonymous Coward | about 5 years ago | (#29716935)

What is it with Slashdot editors and this comma frenzy of theirs?

Re:Usage of the comma, very weird (2, Informative)

hansraj (458504) | about 5 years ago | (#29716965)

Hey! Slashdot editors are highly trained professionals. Trained in the art of screwing up summaries that is.

Thank your stars that they just misused one comma. Their talent for grammatical slaughter was underused. Probably they were feeling merciful today.

Re:Usage of the comma, very weird (1)

s1lverl0rd (1382241) | about 5 years ago | (#29717135)

Anonymous grammar nazi cold-bloodedly takes yet another life.

News at eleven.

Re:Usage of the comma, very weird (2, Funny)

BlackPignouf (1017012) | about 5 years ago | (#29717863)

I live in Germany, a country in which, people love to put commas everywhere, even though, it is not necessary.
That, pisses, me, off.

I think, that, this editor may be German?

Re:Usage of the comma, very weird (1)

alerante (781942) | about 5 years ago | (#29718539)

It's acceptable comma usage if you think of "open-sourced" as an adjective modifying "neural networks". A similar example of that would be "The Bill of Rights, Summarized".

This wont work... (5, Interesting)

Anonymous Coward | about 5 years ago | (#29717015)

This is hardly news-worthy. Having looked at their web-site and having done object recognition myself I can tell you, that this wont work for several reasons. From their FAQ it seems that they are just taking the image and create very long vector from it and then feed that into an ANN.

The following problems exist with this approach (which has been known and addressed in at least the last 20 years):
1. What if you want to classify pictures that have different sizes (not too uncommon)? Wont work because you first have to set a fixed number of neurons in your first layer.
2. What about different locations of the same object? Even if you move the whole image just one image to the right this will dramatically change your flattened vector and can yield completely different classification. This is called location invariance and is solved in the computer vision community by extracting a lot of features on "interesting" regions in the image. With that you can also have different sized images. One famous extraction method is the scale invariant feature transform (SIFT [wikipedia.org] ).

I could go on but you get the point. As for using ANNs instead of other classification methods, it does not really matter that much what kind of classificator you use as the pre-processing is much more important. Support-Vector-Machines has been hyped and work pretty well, but it has it's own caveats. However, using a SVM on the raw-image data produces the same horrible results that I would expect here.

Re:This wont work... (1)

belthize (990217) | about 5 years ago | (#29717235)

You're missing the point. It's written in Java and folks can implement their own calls in just a few lines of code.

You're guilty of 20th century thinking. Now image is everything, actually recognizing it is secondary.

Re:This wont work... (2, Informative)

Dachannien (617929) | about 5 years ago | (#29717393)

There's also the brute-force approach of sampling sub-images from the image at a ton of different sizes and locations and then feeding the sub-images to your classifier. And for controlled images (such as in face recognition) normalizing the image isn't too difficult (by scaling the image to normalize the distance between the eyes). Even then, dimension reduction by PCA and/or LDA is useful to reduce the needed complexity of the classifier.

FFNNs lost their popularity probably 15 or 20 years ago and haven't been touched very often in image analysis since then. The SIFT features you mentioned seem to hold a lot of promise, and there are already folks using them in web-based image search and video indexing.

Re:This wont work... (0)

shervinemami (1270718) | about 5 years ago | (#29718297)

Actually nearly every time someone uses neural networks for image processing, they use the same approach, of making a long vector from the image pixels and feeding it into an ANN. And you are right that it has a lot of associated problems, but the ones you gave aren't really a problem with their software.

Like you said, you might want to use images of different sizes, or images that are in different pixel locations, and like you said, you need to pre-process the images so that they are of the exact same size and generally the desired features are in the exact same position in all images. Any image recognition system needs to do this, because it definitely is the most important part of image recognition, but after you have done that, then I don't see why you can't use the ANN library mentioned in this article to do the actual image recognition part.

In other words, any software that can handle images of different sizes or features in different locations is likely to include the same sort of preprocessing steps as you would need to do when using this ANN software.

OpenCV does provide very basic image recognition abilities but I definitely welcome any new open-sourced libraries that tackle image recognition too.

Re:This wont work... (0)

Anonymous Coward | about 5 years ago | (#29720161)

Another open source toolbox which uses the above mentioned feature extraction method and allows different classifiers to be used (ANNs, but also SVMs etc) is pynopticon [google.com] . It is also written in Python (and c++ for those parts that matter).

Disclaimer: I am the author.

Re:This wont work... (0)

Anonymous Coward | about 5 years ago | (#29718851)

I've built object detectors that work on images using very similar methods, and they worked just fine.

There are no problems with this approach provided that you use the right training data.

1. Classifying images of different sizes: Scale all samples up, or down, to fit a certain sample size. Just like face detection.
2. Different locations: The training data should contain enough samples in different positions/offsets to handle this.

The point is that the training data needs to have enough variance for the system to learn a decent solution.

Re:This wont work... (1)

amilo100 (1345883) | about 5 years ago | (#29720187)

2 cents:

However, using a SVM on the raw-image data produces the same horrible results that I would expect here.

SVMs would probably work a lot better. SVMs perform excellent in high dimensional datasets.

Simple feed forward ANNs screws up – if you have a large amount of input values (e.g. treating the whole image as a vector) there will be a lot of weights on the input layer. So I really don’t know why you would use a normal ANN.

SVMs will probably give decent results for linear kernels and quadratic kernels for images. You can get excellent results by using locality improved kernels (which are actually pretty simple).

Convolution neural networks perform pretty well with images though.

Re:This wont work... (0)

Anonymous Coward | about 5 years ago | (#29721569)

Try Pinta (www.intopii.fi) and see if it does what you except from a pattern recognition system.

Re:This wont work... (2, Interesting)

physburn (1095481) | about 5 years ago | (#29721715)

Yes, they seem to sample the image as a grid, and feed it straight into the neural network. Its a really dumb way to do image recognition. However a neural network library is useful for many identifcation tasks, and its free. Even if its going to be useless for image recognition, it may be useful for how general ai tasks.

---

AI Feed [feeddistiller.com] @ Feed Distiller [feeddistiller.com]

Re:This wont work... (1)

sevarac (1654475) | about 5 years ago | (#29735205)

1. What if you want to classify pictures that have different sizes (not too uncommon)? Wont work because you first have to set a fixed number of neurons in your first layer.

All images are scaled to the same dimensions determined by the sample resolution settings.

2. What about different locations of the same object?

This problem is not adresed here. Suggested approach can be used on whole images or specific known image locations.

Just in time for my daughter's science fair projet (0, Offtopic)

phaggood (690955) | about 5 years ago | (#29717175)

She wants to shoot bugs out of the air with a water gun.

Re: JIT for my daughter's science fair project (1)

Tsar (536185) | about 5 years ago | (#29718185)

She wants to shoot bugs out of the air with a water gun.

Unless the water gun has an extremely high muzzle velocity, she would need to lead the target bugs by a non-trivial angle. The flightpath prediction algorithms required for reliable hits would probably be prohibitively complex since they would have to take species, sex and several environmental factors into account (and math is HARD).

She might get better results adapting this project [slashdot.org] to her purposes. Please invest in a high-powered laser for the project—killing mosquitos with a Blu-Ray laser [youtube.com] is just cruel.

Re: JIT for my daughter's science fair project (1)

vlm (69642) | about 5 years ago | (#29718473)

Unless the water gun has an extremely high muzzle velocity, she would need to lead the target bugs by a non-trivial angle. The flightpath prediction algorithms required for reliable hits would probably be prohibitively complex since they would have to take species, sex and several environmental factors into account (and math is HARD).

Great analogies to cluster computing design issues. Really expensive perfect bullets, or lots of cheap bullets... I'd try the lots of cheap bullets approach since water is cheap. I'd hook up the garden hose thru one of those lawn sprinkler solenoid valves, attach hose to RC car servos, and work the software for two things:

1) Image detection before and after water spray. If you can't tell if you've hit anything, then what you do doesn't matter. That in itself would be an interesting science fair project. Average number of bug flying by per hour vs time of day vs temperature. Average direction of bug flight per temperature (maybe there is an evolutionary advantage to move north when they're warm)

2) Optimized servo controlled blast pattern. I'm guessing bugs have no evolutionary reason to dodge left and right in the rain, but probably have some minimal motivation to either go ascend or descend. They don't always descend or the fish in the lake would be fat and all the bugs by the lakeshore would be dead, and they aren't, therefore they don't always descend. But they don't always ascend or jetliners would be unable to fly due to bug encrustation. So, servo controlled spray in a precisely up/down pattern. Or would a spiral pattern at the target be most effective, since bugs usually spend most of their time going straight... Or do they?

Re: JIT for my daughter's science fair project (1)

phaggood (690955) | about 5 years ago | (#29720229)

> high muzzle velocity

Actually the plan is to use a waterpik which has a very high velocity (and won't require any change the the eletronics, just mash in the power button and apply power to the feeds to get it to fire) and short range (not trying to wet people across the room).

Sheesh, I got a '0-off topic' but the replies all got '2 - informative'?

Will it run on a cluster? (0, Offtopic)

drinkypoo (153816) | about 5 years ago | (#29717251)

After reading that article about seeing through walls with mesh networks, I wonder if you couldn't implement something like this image recognition system on a cluster. The machines could locate a subject with their "sixth sense" and then point cameras at it to track, and none of the nodes would have to be spectacularly powerful.

Wow, once again those who worship at the altar of (-1, Offtopic)

Anonymous Coward | about 5 years ago | (#29717317)

political correctness strike a blow to the rule of law:

http://www.guardian.co.uk/world/2009/oct/09/obama-immigration-arpaio-arizona-sheriff [guardian.co.uk]

What country in history has survived the complete destruction of it's borders? Can any of you liberal apologist pussies name a single example? Perhaps actual tax-paying citizens wouldn't be so pissed off if they weren't having to foot the bill for food and medicine for Congress' army of illegal day laborers, nannies, and gardeners. Why did the Democrats defeat amendments to the Obamacare bill demanding proof of citizenship be confirmed before medical care can be received? Where in the world can one go outside of their home country to receive absolutely FREE food and medicine? What the fuck is wrong with you idiots? I'm going to say this slowly so that you can understand. WE... ARE... BROKE! The middle class can no longer afford to pay for your liberal white yuppie angst. The dollar is worthless. We can't afford to pay more taxes, and we can't print more monopoly money. And the absurdity of faulting Sheriff Joe for racial profiling - WTF? They're ALL hispanic. Why the fuck else are they crossing the desert from Mexico into Arizona? How many Europeans make that shitty journey illegally? Fucking liberals can't even see obvious facts that are right in front of them. They'd destroy the country just to advance their insane and dangerously naive Kumbayah agenda one inch!

But... (3, Funny)

jasonofearth (1254598) | about 5 years ago | (#29717461)

Can it recognize John Connor?

Re:But... (0)

Anonymous Coward | about 5 years ago | (#29724681)

Nah, he looks different in every movie.

Alternative: Numenta (2, Interesting)

Beezlebub33 (1220368) | about 5 years ago | (#29717607)

If you want to see a neural network (-like) implementation that actually works well, you should look at Numenta's NuPic [numenta.com] application and their vision toolkit. It works pretty amazingly well. They also have a nice architecture, in that the core is c++ but they use python for UI, file IO, and other utility stuff. It's under a 'research license' which means that you are allowed to do research and play with it, but if you want to sell a product with their technology, you need to get a real license.

Re:Alternative: Numenta (1)

DriedClexler (814907) | about 5 years ago | (#29719743)

Did you actually try it out yourself? I bought into Numenta's hype and downloaded this program [numenta.com] , and it was laughably bad. It "learns" a list of objects and shows it can recognize them, but when I modified the test images just a little bit and fed them to it, it failed miserably. That's especially bad considering how low res the images are and how they're the same size.

Numenta is only different in having a disprportionately large marketing budget. (Yes, I took the plunge and read On Intelligence.)

Re:Alternative: Numenta (0)

Anonymous Coward | about 5 years ago | (#29720773)

What open source packages would you recommend?

Re:Alternative: Numenta (0)

Anonymous Coward | about 5 years ago | (#29720657)

Numenta has a simple app [numenta.com] for doing image recognition now: you drag in your images, press the button, and it trains. No tweaking required. They have both a local API and a web API you can use to incorporate the technology into an app. It's free.

captcha (1)

morgauxo (974071) | about 5 years ago | (#29718549)

Wonder how well this could be trained to recognize characters in captchas. Here come the spambots!

Re:captcha (1)

wed128 (722152) | about 5 years ago | (#29720317)

probably not any better than anything else...this is not a new technology, it's just an open implementation to save people the time coding. Although, once you read the right literature, a neural net like this isn't really rocket science to implement in the first place, so really it's just a time saver/crutch for students.

Re:captcha (1)

tebee (1280900) | about 5 years ago | (#29721621)

Well that was my first thought too, but then we may be past that point already.
A few days ago I read about a Firefox extension someone has sent a cease-and-desist over called Skipscreen which lets you avoid all those pesky waits when using Rapidshare type sites. Now of course I never use these sites myself and certainly not to download anything illegal, but thought I'd install it for the convenience of anybody else who happened to use use my computer, I mean, who knows what my cat gets up to in the middle of the night?
Incidentally, this is a good example of the Streisand effect in action, as I'd never heard of the extension before and would probably never have used it.

OK getting back to the point here, I was reading the Skipscreen blog and in this entry - http://skipscreen.com/blog/2009/06/new-skipscreen-megaupload-auto-captcha-auto-reloads/ [skipscreen.com] they talk about using neural network to decipher and enter the 4 letter captcha on Megaupload with an 85% accuracy.

Now this is not the most awesome captcha in the world, but we are taking about a free Firefox extension here not some multi thousand dollar program requiring some super computer to run it, although thinking about it maybe that's why I find Firefox too slow these days and have switched to Chrome for day to day browsing.....

Lessons Learned 20 Years Ago at JPL/Nasa (5, Interesting)

Sigfried (779148) | about 5 years ago | (#29720243)

Back in 1987 I was working in the Multimission Image Processing Lab at JPL/Nasa, and the whole Neural Network fad was in its second resurgence, after the original "perceptron" work of Minsky and Papert caught some attention in the early 70's. The group that I was in [nasa.gov] was mostly interesting in mapping, and in particular identifying features (e.g. soil types, vegetation, etc) from both spatial and spectral signatures. As usual, the military was also interested in this, and so Darpa was throwing a lot of loose money around, some of which fell our way.

I spent a lot of time on this project, writing a lot of neural net simulations, supervised and unsupervised learning, back-prop, Hopfield nets, reproducing a lot of Terry Sejnowski's and Grossman's work, taking trips over to Caltech to see what David Van Essen and his crew were doing with their analysis of the visual cortex of Monkey brains, trying to understand how "wetware" neural nets can so quickly identify features in a visual field, resolve 3D information from left-right pairs, and the like. For the most part, all of the neural net models were really programmable dynamical systems, and the big trick was to find ways (steepest descent, simulated annealing, lagrangian analysis) of computing a set of synaptic parameters whose response minimizes an error function. That, and figuring out the "right" error function and training sets (assuming you are doing supervised learning).

Bottom line was, not much came of all this, beyond a few research grants and published papers. The one thing that we do know now is, real biological neural networks do not learn by backward-error propagation. If they did, the learning would be so slow that we would all still be no smarter than trilobites if that. Most learning does appear to be "connectionist" and is stored in the synaptic connections between nodes, and that those connections are strengthened when the nodes that they connect often fire simultaneously. There is some evidence now of "grandmother cells" which are hypothetical cells that fire when, e.g. your grandmother comes into the room. But other than that, most of the real magic of biological vision appears to be in the pre-processing stages of the retinal signals, which are hardcoded layer upon layer of edge-detectors, color mapping, and some really amazing slicing, dicing and discrete FFT transforms of the orginal data into small enough and simple enough pieces that the cognitive part of the brain can make sense of the information.

It's pretty easy to train a small back-prop net to "spot" a silhouette of a cat and distinguish it from a triangle and a doughnut. It is not so easy to write a network simulation that can pick out a small cat in a busy urban scene, curled up beneath a dumpster, batting at a mouse....

To do that, you need a dog.

Re:Lessons Learned 20 Years Ago at JPL/Nasa (2, Insightful)

12357bd (686909) | about 5 years ago | (#29722107)

Yes, there's more than back-prop for succesfull neural processing. One of the most instereseting approaches IMO were done by Liaw and Berger [ieee.org] on adaptable sinaptic training models, but that was more than ten years ago!

Re:Lessons Learned 20 Years Ago at JPL/Nasa (1)

raftpeople (844215) | about 5 years ago | (#29727707)

"Bottom line was, not much came of all this, beyond a few research grants and published papers."

I am constantly reading about successful applications of neural networks and svm's in medical, industrial control and financial applications. Why do you say not much came of it, are you referring to vision only?

Re:Lessons Learned 20 Years Ago at JPL/Nasa (1)

Sigfried (779148) | about 5 years ago | (#29732849)

I was referring to our own work on using neural networks for pattern recognition in images.

The research we were doing was in fact prompted by the well-documented success of neural networks in other nonlinear problems. One of the very first good examples of an applied adaptive neural network was in the standard modem of the time, which used a very small neural network to optimize the equalizer settings on each end.

Neural nets appear to have a lot more success with constructing nonlinear maps from subsets of Rn to Rm with n and m relatively small. Vision is not such a case as the input space n is very large. Once n and m get large you will require an exponentially large number of training samples, with the increased risk of falling into local minima (mitigated by simulated annealing or tunneling). In addition, if there is any inherent linearity in the problem an old-school Kalman filter may be less sexy but more useful.

Many of the success stories of neural nets are really of the "Stone Soup" [wikipedia.org] variety, in which the neural network is the "Stone" and the meat-and-potatoes real work is in how to preprocess the data to reduce the dimensions n and m. One of the most amazing (non-neural) pattern-recognition apps that I have seen recently is the Shazam [shazam.com] technology, which can identify a recorded song from 30 seconds of a (noisy) snippet. Their dimension-reducing logic involves hashes of spectrogram peak pairs [columbia.edu] . No neural nets to be seen, but absolutely brilliant and points to ways that similar things could be done in the visual domain.

Re:Lessons Learned 20 Years Ago at JPL/Nasa (0)

Anonymous Coward | about 5 years ago | (#29790811)

Recognising music types is fairly trivial with Neural Nets, this was one of my minor projects whilst studying. It took samples between 1 and 2 seconds long and could classify the music by type (Pop, Classic, Jazz..)
But as always, NNs are not magic boxes that do everythign for you, and gainging a full understanding of the data is paramount to a succesfull system. This also includes data preprocessing, which is the most important phase.
My PhD was a vision-based NN application, and 70% of the work was preparing the data, and evaluating which information to extract from the image to feed into a complex Kohonen/MLP network, which functioned on new data with satisfyingly low error levels. This was for surveilling unprepared environments and identifying people (not database recorded faces!)

Numenta's free Vision Toolkit (0)

Anonymous Coward | about 5 years ago | (#29720305)

Numenta has a free download called the Vision Toolkit [numenta.com] . It has a really simple approach to training: drag in your images, then press the Train button. You can use the Python API to build a desktop application, or upload it to the hosting service and use it via the web API.

Their approach has some superficial similarity to perceptrons, but it's a lot more brain-like.

Another alternative, in C++ (0)

Anonymous Coward | about 5 years ago | (#29721717)

I recently ran across another software that also does image recognition. It uses texture for that, and claims to support other features soon. See Pinta at www.intopii.fi.

Check for New Comments
Slashdot Login

Need an Account?

Forgot your password?