1
3

I want to implement (or adapt an existing implementation) of random forests to structured prediction.

There've been a number of recent NIPS/CVPR papers using this approach successfully in computer vision. A CRF-like models, only with decision trees or random forests in the nodes. Examples: "Structured Class-Labels in Random Forests for Semantic Image Labelling", "Random Forest Random Field", Kinect papers, etc.

Which would be a good place to start, if I want to try one of these models?

Best, if there's some code available in the open. Next best, a good recommendation of some code pieces which could be a starting point for a complete model.

asked May 23 '12 at 21:07

Dmitry%20Chichkov's gravatar image

Dmitry Chichkov
1653614


One Answer:

I think it depends strongly on the kind of model you want. For example the "Structured Class-Labels" paper doesn't really use the forests in a CRF if I remember correctly. The "original" kinect paper doesn't do any kind of structured prediction, it just uses a random forest for each pixel separately. It's been a while since I read RF^2 so I'm not sure what they do.

I would put these models in the following three classes:

1) Unary potentials are learned with random forests (Shotton's work and follow ups)

2) Structured output is learned directly (Structured Class Labels paper, Hough forests)

3) Pairwise potentials are expressed with forests (Decision tree fields, Regression tree fields, I think RF^2)

For the first one there is code available by Jamie Shotton. Alternatively you can use the code of Juergen Gall. There is also code by Sebastian Nowozin, though I'm not sure what exactly it implements.

For the second one: The Hough forests are some kind of structured prediction. I would expect that it shouldn't be to hard to modify this code to do the Structured Class Label method.

For the third kind, I'm pretty sure there is no code available and implementation is non-trivial. This would depend a lot on the model, though.

This answer is marked "community wiki".

answered May 24 '12 at 03:30

Andreas%20Mueller's gravatar image

Andreas Mueller
2686185893

Thanks for references. It looks like Juergen forests code could be a start. Have to really go through the paper and the code...

And yes, a lot depend on the model.

It looks like that I have to learn unary potentials with random forests. At least that's what was working nicely for unary potentials.

Next question is - including interactions. I can't assume basic 'linear chain' or 'flat' model of pairwise interactions. That means that it is either going to be fully connected model, or selection of pairwise interactions should be inferred from the data. That makes implementation non-trivial. So I really don't want to start from scratch....

(May 24 '12 at 14:57) Dmitry Chichkov

This is really an area of active research. I would recommend starting with a tree model. There is a very easy algorithm to build a tree on your variables. I forgot the name but you can look it up in any structure learning tutorial. It builds the maximum spanning tree on the graph of mutual informations. Inference in a tree model is a lot more simple. You can use libdai for inference. If you settle for this simple structure, the parameter learning should still be enough to worry about ;)

(May 24 '12 at 17:30) Andreas Mueller
Your answer
toggle preview

powered by OSQA

User submitted content is under Creative Commons: Attribution - Share Alike; Other things copyright (C) 2010, MetaOptimize LLC.