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)
 
(44 intermediate revisions by 3 users not shown)
Line 1: Line 1:
''This page explains how the creation and modification of project pages is done. Look [[SMW_Project_Workflow | here]] for an explanation of the full lifecycle of a project within the AIRWiki.''
+
== 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}}
  
== Adding a new project to the AIRWiki ==
+
== Deep learning and Boltzmann machines ==
#'''Register as AIRWiki user.''' To modify the wiki (including the creation of new pages), you must be one or AIRWiki's [[registered users]]. [[SMW_Project_Workflow#Student_Registration]] explains what you have to do.
+
'''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.  
#'''Create a page for the project in the AIRWiki.''' Each project must have an associated page. If the project you are going to work on hasn't already one, you have to create it by following the procedure described in [[SMW_Project_Workflow#Project_Instantiation]]. It's a good idea to ask your Tutor for the name of the new page.
+
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.  
# '''Provide basic information about your project.''' The new page you just created already includes an automatically-generated frame on the right upper corner, used to show the basic data about your project. You can input or edit such data by clicking the "edit with form" tab on the top of the page
+
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.
 
+
Please note that everything in the AIRWiki must be written ''in English''.
+
 
+
After you have created the page and filled in the basic data about your project, you have to edit it to '''describe your project''' (see below for directions). And, as your work on the project progresses, don't forget to '''keep your project's page up-to-date''' by editing it every time you have new material.
+
 
+
== Editing a project page ==
+
===READ THIS FIRST!===
+
The AIRWiki is divided into two parts, called [[Layers]]: a '''public layer''' -readable by anyone on the internet- and a '''private layer''' - only readable by [[Registered users]]. Registered users can modify both layers of AIRWiki.
+
 
+
'''If you publish something on the public layer, it becomes public for all the world to see'''. And you have full personal responsibility for what you publish (see the [[General disclaimer]], also accessible by clicking the "Disclaimers" link on the bottom of every AIRWiki page). You should not be too worried by the possibility that you publish something that doesn't make sense scientifically or technically: all of us make mistakes. But there are types of mistakes which mean ''big trouble'', such as publishing copyrighted material. See [[Registered users#Warnings]] for further information.
+
 
+
 
+
===OK, I know what I am doing. How do I do I edit a page?===
+
Editing pages of the AIRWiki requires writing or changing WikiMedia source code (WikiMedia is the system used to build AIRWiki, the same used for Wikipedia). You don't know how WikiMedia code works? Don't worry, it's very easy to learn. Take a look to the [http://www.mediawiki.org/wiki/Help:Contents MediaWiki Help]. [[http://www.mediawiki.org/wiki/Help:Formatting | This]] is one of the most useful help pages.
+
 
+
A good starting point is looking around the AIRWiki and clicking 'edit' here and there to see what the source code of the pages look like (just don't save any modifications!). If you see something useful, you can copy the code into your page.
+
 
+
There are several ways to edit a page, for instance to add new information:
+
* if you want to edit the private layer of the page, just click on the "discussion" tab on the top of the page and, in the editing page that opens, change the source code;
+
* if you only want to edit the basic information shown in the frame on top right, you can choose a simplified method by clicking the "edit with form" tab on the top of the page;
+
* to have full access to the content of the page (including the basic information),
+
For project pages, the ''public layer'' can be changed by clicking the 'edit' tab on the top of the page. Thus, to add or modify something you only have to click that tab and do it. By clicking the 'Save Page' button on the bottom of the page, your work will be immediately made public to everyone 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 before hitting the 'Save page' button. 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 you didn't :-) ), 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. In this way you access the editing form for the '''discussion page''' associated to your project; this page has the same name of the associated project page, preceded by "Talk:". It is the place where you can put all your work notes.
+
 
+
'''You are strongly encouraged to use your project's page to store ANY useful information about the project, as soon as it is available'''. If such information is already sufficiently well-proven and well-formatted to be put on the public layer, you should directly put it there; if it is not, you should put it into the private layer, then prepare it for publication and finally move it to the public layer as soon as possible. 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 "MyProject", on the top of the web page you are looking at there is the title "Editing '''Talk:'''MyProject". If the title is "Editing MyProject" (i.e. if ''Talk:'' is missing), you are editing the public layer. For additional information, see [[Layers]].
+
 
+
Actually, there is one important difference between modifying the public layer and the private layer:
+
 
+
 
+
 
+
 
+
 
+
 
+
Important: don't change the ''Semantic Media Wiki code'' (the lines between {{ and }} on top of the wiki code) of any page if you don't know what you are doing!
+
 
+
Notes:
+
* while editing a page, you can click the "Show preview" button at the bottom of the page to see what your modifications look like. If you don't like what you see, press the 'back' button of your browser to exit from the editing page without saving. If, instead, you are certain that all is ok, click the "Save page" button at the bottom of the page to update the AIRWiki with your modifications.  
+
 
+
To know how, see [[#HOWTO add information to a project page]].
+
 
+
+
 
+
 
+
== Public or private? ==
+
The right 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 all useful information;
+
* can access your documentation through the internet, from any PC.
+
 
+
As soon as you have some new information about your project (results, images, data, links, decisions, roadmaps, what you have done today, descriptions of things gone well or of errors made, warnings, and pretty much everything), 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 that was accomplished. To know how to put information in, see [[#HOWTO 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 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" and checked for errors. Of course errors occur, so you shouldn't be too worried about that, but remember that you are creating a public page on the internet. If something needs to be revised or checked, leave it in the private layer until it's ready.
+
* You should, eventually, migrate most of 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.