This is the code used to compute the results for the CVPR paper
@inproceedings{wohlhart15,
author = "Paul Wohlhart and Vincent Lepetit",
title = {{Learning Descriptors for Object Recognition and 3D Pose Estimation}},
booktitle = {{Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition}},
year = 2015
}
or more precisely a refactored but functionally equivalent version thereof.
Thus far, there is no documentation, except for the sporadic, cryptic comments in the code. As soon as people start using this code and get back to me with questions, I will try to assemble a combination of tutorial and FAQ at the project website: https://www.tugraz.at/institute/icg/research/team-lepetit/research-projects/object-detection-and-3d-pose-estimation/
Additionally, I would like to make you aware of the efforts by Yida Wang to implement the above mentioned paper using a combination of opencv and caffe and contributing to both. At this point there is an initial pull request for the triplet loss layer: https://github.com/BVLC/caffe/pull/2603
This code is released under LPGLv3.0 (see lgpl-3.0.txt)
Additionally, note that running this code might cause unpleasent and unexpected output ranging from killing your kitten to the most unprobable events like turning a nuclear missile into a sperm whale or petunia.
Also, keep in mind this is my first project in python. If you find chunks making you feel "that's not how you do that in python", please go ahead and tell me about it.
You need theano up and running (http://deeplearning.net/software/theano/)
The project consists of two parts: TheanoNetCore and ObjRecPoseEst
You need my version of the LineMOD data
Download the data from our project page
https://www.tugraz.at/institute/icg/research/team-lepetit/research-projects/object-detection-and-3d-pose-estimation/
Additionally you need the color images (colorXXX.jpg) of the
test sequences from the original LineMOD dataset:
http://campar.in.tum.de/Main/StefanHinterstoisser
(median filtered versions of the corresponding depth data are included in the tars as pngs)
> cd ObjRecPoseEst
> mkdir data/results/linemod_realandsynth_o15_dagnet
> cd src
Adjust the path to the LineMOD data (lmDataBase) in linemod_ras_o15_rgbd_dagnet_simple.ini
> python main_train_dagnet.py ../configs/linemod_ras_o15_rgbd_dagnet_simple.ini
> python main_test.py ../data/results/linemod_realandsynth_o15_dagnet/
For a simple demo on only 3 objects, 3-dim descriptors and only a few epochs of training (and thus to check if everything works) try the config file linemod_ras_o3_rgbd_dagnet.ini
Things I wanted to get done before releasing the code, but apparently wont get around to
Overall
main_train_dagnet.py
TheanoNetCore