Deep learning for image classification [closed]
Asked Answered
V

3

19

After reading a few papers on deep learning and deep belief networks, I got a basic idea of how it works. But still stuck with the last step, i.e, the classification step. Most of the implementation I found on the Internet deal with generation. (MNIST digits)

Is there some explanation (or code) available somewhere that talk about classifying images(preferably natural images or objects) using DBNs?

Also some pointers in the direction would be really helpful.

Villanelle answered 17/2, 2013 at 18:26 Comment(2)
See this answer on Cross Validated: stats.stackexchange.com/a/41201/14673Endocranium
This question belongs to cross validated stats.stackexchange.com/questions/41029/…Complexioned
O
24

The basic idea

These days, the state-of-the-art deep learning for image classification problems (e.g. ImageNet) are usually "deep convolutional neural networks" (Deep ConvNets). They look roughly like this ConvNet configuration by Krizhevsky et al: enter image description here

For the inference (classification), you feed an image into the left side (notice that the depth on the left side is 3, for RGB), crunch through a series of convolution filters, and it spits out a 1000-dimensional vector on the right-hand side. This picture is especially for ImageNet, which focuses on classifying 1000 categories of images, so the 1000d vector is "score of how likely it is that this image fits in the category."

Training the neural net is only slightly more complex. For training, you basically run classification repeatedly, and every so often you do backpropagation (see Andrew Ng's lectures) to improve the convolution filters in the network. Basically, backpropagation asks "what did the network classify correctly/incorrectly? For misclassified stuff, let's fix the network a little bit."


Implementation

Caffe is a very fast open-source implementation (faster than cuda-convnet from Krizhevsky et al) of deep convolutional neural networks. The Caffe code is pretty easy to read; there's basically one C++ file per type of network layer (e.g. convolutional layers, max-pooling layers, etc).

Opalescent answered 16/1, 2014 at 19:52 Comment(0)
E
2

You should use a softmax layer (http://en.wikipedia.org/wiki/Softmax_activation_function) on top of the network you have used for generation, and use backpropagation to fine tune the final network.

Erastatus answered 12/1, 2014 at 10:7 Comment(0)
R
2

These days people start to using SVM in classification layer.

Deep learning is evolving very freely and widely.

Runnel answered 12/9, 2014 at 6:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.