Difference between revisions of "Object Recognition with Deep Boltzmann Machines"

From AIRWiki
Jump to: navigation, search
m (FrancescoVisin moved page Object Recognition with Deep Belief Networks to Object Recognition with Deep Boltzmann Machines without leaving a redirect)
 
(76 intermediate revisions by 4 users not shown)
Line 1: Line 1:
''This page explains everything (well, at least we tried) concerned with the creation and modification of project pages. For a list of AIRLab projects, see the [[Projects]] page.''
+
== Intro ==
 +
This project aims to exploit the ability of Deep Boltzmann machines (DBM) to classify (and generate) multiclass objects. Initially, they will be used to classify road signs with the purpose to help the navigation of an hypotetical autonomous car. Since the initial results on the classification tasks of road signs using DBM are very good, we are pretty confident about the quality of the project. After that, we will consider the possibility to extend the task to other domains.{{Project | title=Object recognition with DBMs | short_descr= Deep Boltzmann machines for classification tasks | coordinator=MatteoMatteucci | tutor=MatteoMatteucci;FrancescoVisin | students=CarloDEramo | resarea=Robotics | restopic=Machine Learning | start=2014/03/1 | level=Ms | status=Active}}
  
== HOWTO add a new project to the AIRWiki ==
+
== Deep learning and Boltzmann machines ==
'''NOTE: we know it's a lot of text down here. We tried to be hyper-clear to help inexperienced users of AIRWiki: let's say we made the following instructions fool-proof, and possibly too pedantic for most of us. This means that if you consider yourself such an expert that you can avoid to read these instructions, and you do some mistake, by definition you have proved yourself to be a fool.'''
+
'''Deep learning''' is a set of algorithms in machine learning that attempt to model high-level abstractions in data by using architectures composed of multiple non-linear transformations.  
 
+
We will work on Boltzmann machines, an energy-based model which has been proven to perform very well in image and speech recognition tasks. A Boltzmann machines is composed of visible units representing the inputs of the network provided by the dataset and hidden units representing the feature detectors of the net. In a general fully connected Boltzmann machine each pair of unit is connected with a symmetric connection with a certain weights. We will focus on DBMs that are a particular type of Boltzmann machines built by stacking several layers of RBM on top of each other in a proper way. A RBM is known as restricted Boltzmann machines, a Boltzmann machines with no intra-layer connections. We'll study also deep belief network (DBN), a hybrid model between a neural network with discriminative and generative connections and a DBM, which has only symmetric connections.  
Contributing to a wiki is easy, and leaves you with a deep sense of satisfaction: by contributing, you are documenting your work in a durable form ''and'' helping all the other users of the wiki as well. By the way, a well thought out help for MediaWiki (the software that AIRWiki, or for that matter also Wikipedia and many other websites, is built upon) is available [http://www.mediawiki.org/wiki/Help:Contents here]. So even if this is your first experience with a wiki, you should not have any problems.
+
We will use ''Pylearn2'' framework which offers training procedures of deep neural networks. During the project we will go deep in the analysis of this kind of networks studying their potentiality and flexibility; we'll try different configuration of networks in order to obtain the good performances we're looking for.
 
+
To contribute you need to become one of AIRWiki's [[Registered users]]. Please note that all the content you insert into the AIRWiki must be written ''in English''.
+
 
+
Here is a complete description of the procedure to create a new page associated to your project: follow it carefully, because other contributors do not appreciate when their content is damaged by careless people. Be ''very'' careful with that 'Save page' button...
+
 
+
 
+
'''Step 1: Preparing the new project page'''
+
# open a text editor (e.g. Notepad);
+
# create a new, empty text file: let's call it ''YourPage.txt'';
+
# open the [[Project page template]] and click the ''edit'' tab on the top of it to expose the wiki source text;
+
# copy all the content of the source text window into YourPage.txt;
+
# modify YourPage.txt file by substituting all the example text with information about your project.
+
 
+
 
+
'''Step 2: Adding the new project to the [[Projects]] page of the AIRWiki'''
+
# open the [[Projects]] page;
+
# go to the 'Ongoing projects' section and find the subsection having the name of the research area of your project: e.g. "E-Science" (if you have doubts, ask the teachers);
+
#choose a name of your liking for the new AIRWiki page dedicated to your project. If the project already has an "official" name, use it; otherwise, use a word or a short phrase with only the first letter in capitals (of course you have to choose a name that is coherent with the objectives of the project);
+
# click the ''edit'' link on the right of the subsection to expose the wiki source text;
+
# add a new text line with the name of your project and a link to its wiki page: the latter is simply the project name you chose surrounded by double square parentheses (this will create the page when you will click the "Save page" button - DON'T click it now);
+
# use a blank line to separate the new line from pre-existing text;
+
#be extremely careful not to alter pre-existing text: if you think you could have done that, press the 'back' button of your browser now to exit from the editing page without saving, then repeat the editing steps;
+
# click the "Show preview" button at the bottom of the page, and look carefully at the whole subsection (not only to the part you added): if it doesn't seem to be ''perfectly right'', press the 'back' button of your browser to exit from the editing page without saving, then repeat the editing;
+
# when you are certain that all is ok, click the "Save page" button at the bottom of the page.
+
 
+
You should be now (proudly) looking at the description of your project, perfectly set among the others. Now, clicking on the link to your project's page in the [[Projects]] page of the AIRWiki, you will see one of these:
+
* the 'edit' tab of an empty page: good, you chose an unused name for your page. Proceed to fill the page as described below.
+
* a non-blank page: argh, you chose an already-used name for your page. Re-edit the Projects page and modify the wiki link (i.e. the name between double square parentheses) you put in it, changing the name of your new page (i.e. again, the name between double square parentheses). As before, click the 'Save page' button only if and when you are certain that all is ok in the whole page.
+
Go on with this checking and modifying until you find a (sensible!) name that no other project has yet used.
+
 
+
 
+
'''Step 3: Filling the new page'''
+
# if you are looking at the 'edit' tab of your project's new page, simply open file "YourPage.txt" (you know, the one containing the content for your page, which you prepared before) and copy its entire contents into the page. If not, first use a browser to open your page and click on the 'edit' tab on the top of the page.
+
# click the "Show preview" button at the bottom of the page, and look carefully at the result: if it doesn't seem to be right, press the 'back' button of your browser now to exit from the editing page without saving, then repeat the page editing by clicking on the 'edit' tab on the top of the page;
+
# when you are certain that all is ok, click the "Save page" button at the bottom of the page.
+
 
+
You should now be able to (veeery proudly) see your project's page in its full glory. If you aren't satisfied with the result, just go back to page editing by clicking on the 'edit' tab on the top of the page.
+
 
+
As your work on your project will go on, don't forget to keep your project's page up-to-date by editing it every time you have new material. To know how, see [[#HOW TO add information to a project page]].
+
 
+
== HOW TO add information to a project page ==
+
As said in [[AIRWiki#How do I access the contents of this wiki?]], AIRWiki is divided into two parts (called "layers"): a ''public layer'', readable by anyone through the internet and a ''private layer'', only accessible by [[Registered users]].
+
 
+
Registered users can modify both layers of AIRWiki.
+
 
+
For project pages, the ''public layer'' can be changed by clicking the 'edit' tab of the page. Thus, to add or modify something you only have to click that tab and do it. By clicking the 'Save' button on the bottom of the page, your work will be immediately made public on the internet. If you want to check the result before saving (a ''very good habit''), click the 'Show preview' button and take a look. If you are not sure that what you see is exactly what it should (including the parts of the page that you didn't modify - or thought so :-) ), just press the 'back' button of your browser now to exit from the editing page without saving, then repeat the page editing.
+
 
+
The ''private layer'' of project pages can be edited in just the same way: the only difference is that you have to click the 'discussion' tab instead of the 'Edit' one.
+
 
+
See [[#Public or private?]] to understand what you should put into the public layer and what you should, instead, put into the private layer.
+
 
+
Tip: if you are editing the private layer of a project page, on the top of the web page you are looking at there is the title "Editing '''Talk:'''NameOfTheProject". If the title is "Editing NameOfTheProject" (i.e. if ''Talk:'' is missing), you are editing the public layer.
+
 
+
Actually, there is only one important difference between modifying the public layer and the private layer: '''if you publish something wrong in the public layer, you make your mistake public to all the world'''. And you have full responsibility for what you publish. Of course, we all make mistakes, and you should not be too worried by the possibility that you write something that doesn't make sense scientifically or technically: but there are types of mistakes which mean trouble, especially when you infringe someone else's copyright. See [[Registered users#Caveats for registered users]].
+
 
+
== Public or private? ==
+
As soon as you have some new information about your project (decisions, roadmaps, results, images, data, descriptions of things gone well or of errors made, links, warnings, and everything else), it's very important that you '''put it into the project's page'''. In this way you will create a ''trace'' of how the project is proceeding, what difficulties you had to overcome, and how this was accomplished.
+
 
+
The best thing to do is to treat your project's page as an '''online repository of everything related to the project'''. You are encouraged to do just that. By doing so you:
+
* help anyone that is working or will work on your project or a similar one by recording useful information;
+
* can access your documentation through the internet, from any PC.
+
 
+
To know how to put information in, see [[#HOW TO add information to a project page]]. The obvious problem is: what information must be put into the "public" layer of the project's page and what should instead put into the "private" layer? You should follow these (loose) guidelines:
+
* Any text of the public layer of AIRWiki must be written in English;
+
* Anything on the public layer of AIRWiki should be sufficiently "finished". If something needs revising or checking, leave it in the private layer until it's ready.
+
* You should, eventually, migrate all the content of the private layer to the public layer. (Well, excluding the details regarding your work that cannot be of interest to anyone out of the AIRLab, such as how much you paid for this and that :-) ) So:
+
** try to keep the contents of the private layer of your project's page well organized: in this way the migration will be easy;
+
** it's a good idea if you directly write everything in English!
+
* Try to include into the project's page everything ''you'' would have liked to find there (if you work on a project started by others) and everything you think that people working on it in the future will like to find.
+
* It is especially useful if you include a '''project diary''' into the private part of your project's page: a short description of everything you do, why you did it, and what resulted from it. This will be invaluable for those that will have to take your work further!
+
 
+
A final note: for your teachers, the AIRWiki will be the main source of information about how your project is going, so they will look at its page (public and private parts) often and with attention :-)
+

Latest revision as of 16:09, 3 July 2014

Intro

This project aims to exploit the ability of Deep Boltzmann machines (DBM) to classify (and generate) multiclass objects. Initially, they will be used to classify road signs with the purpose to help the navigation of an hypotetical autonomous car. Since the initial results on the classification tasks of road signs using DBM are very good, we are pretty confident about the quality of the project. After that, we will consider the possibility to extend the task to other domains.

Object recognition with DBMs
Short Description: Deep Boltzmann machines for classification tasks
Coordinator: MatteoMatteucci (matteo.matteucci@polimi.it)
Tutor: MatteoMatteucci (matteo.matteucci@polimi.it), FrancescoVisin (visin@elet.polimi.it)
Collaborator:
Students: CarloDEramo (carlo.deramo@polimi.it)
Research Area: Robotics
Research Topic: Machine Learning
Start: 2014/03/1
Status: Active
Level: Ms

Deep learning and Boltzmann machines

Deep learning is a set of algorithms in machine learning that attempt to model high-level abstractions in data by using architectures composed of multiple non-linear transformations. We will work on Boltzmann machines, an energy-based model which has been proven to perform very well in image and speech recognition tasks. A Boltzmann machines is composed of visible units representing the inputs of the network provided by the dataset and hidden units representing the feature detectors of the net. In a general fully connected Boltzmann machine each pair of unit is connected with a symmetric connection with a certain weights. We will focus on DBMs that are a particular type of Boltzmann machines built by stacking several layers of RBM on top of each other in a proper way. A RBM is known as restricted Boltzmann machines, a Boltzmann machines with no intra-layer connections. We'll study also deep belief network (DBN), a hybrid model between a neural network with discriminative and generative connections and a DBM, which has only symmetric connections. We will use Pylearn2 framework which offers training procedures of deep neural networks. During the project we will go deep in the analysis of this kind of networks studying their potentiality and flexibility; we'll try different configuration of networks in order to obtain the good performances we're looking for.