Slashdot Mirror


Image Recognition Neural Networks, Open Sourced

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."

22 of 98 comments (clear)

  1. Lots of tweaking required (in general) by Anonymous Coward · · Score: 5, Interesting

    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.

    1. Re:Lots of tweaking required (in general) by dominious · · Score: 2, Interesting

      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

    2. Re:Lots of tweaking required (in general) by NoYob · · Score: 5, Funny
      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 ....

      --
      It's NOT me! It's the meds! I'm on 1000mg of Fukitol.
    3. Re:Lots of tweaking required (in general) by Anonymous Coward · · Score: 5, Funny

      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?

    4. Re:Lots of tweaking required (in general) by jipn4 · · Score: 2, Insightful

      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.

  2. !Open Sourced by RiotingPacifist · · Score: 5, Informative

    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).

    --
    IranAir Flight 655 never forget!
    1. Re:!Open Sourced by logfish · · Score: 4, Informative

      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.

    2. Re:!Open Sourced by Anonymous Coward · · Score: 2, Informative

      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.

  3. Usage of the comma, very weird by Anonymous Coward · · Score: 3, Insightful

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

    1. Re:Usage of the comma, very weird by hansraj · · Score: 2, Informative

      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.

    2. Re:Usage of the comma, very weird by BlackPignouf · · Score: 2, Funny

      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?

  4. This wont work... by Anonymous Coward · · Score: 5, Interesting

    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).

    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.

    1. Re:This wont work... by Dachannien · · Score: 2, Informative

      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.

    2. Re:This wont work... by physburn · · Score: 2, Interesting
      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 @ Feed Distiller

  5. Re:C/C++ implementation by khakipuce · · Score: 2, Interesting

    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.

    --
    Art is the mathematics of emotion
  6. Delenda Carthago by Dr.+Hok · · Score: 2, Funny

    climate change

    You remind me of Cato the Elder who had the habit of ending all his speeches with the words Furthermore, I think Carthage must be destroyed . 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.

    --
    Say out loud: I'm an Aspie and I'm somewhat proud, I guess. Uh. Can I write an email in all caps instead? Hm...
  7. They do support other things by OeLeWaPpErKe · · Score: 4, Informative

    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.

  8. But... by jasonofearth · · Score: 3, Funny

    Can it recognize John Connor?

  9. Alternative: Numenta by Beezlebub33 · · Score: 2, Interesting

    If you want to see a neural network (-like) implementation that actually works well, you should look at Numenta's NuPic 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.

    --
    The more people I meet, the better I like my dog.
  10. C is 100000 times faster than java by mangu · · Score: 2, Interesting

    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.

  11. Lessons Learned 20 Years Ago at JPL/Nasa by Sigfried · · Score: 5, Interesting
    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 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.

    1. Re:Lessons Learned 20 Years Ago at JPL/Nasa by 12357bd · · Score: 2, Insightful

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

      --
      What's in a sig?