People2D: realtime people detection in 2D range data

Keywords: People detection in 2D, range data

 



What is People2D?

This software provides an efficient implementation of the people detector in 2D data originally developed in Human Detection using Multimodal and Multidimensional Features (ICRA 2008). It includes training and detection module C++ source code and example files. The code has been written in a way that it is very easy to modify / hack. NO background subtraction is needed with this method.. The detector runs at 2KHz on a fast computer (i7 CPU - 1.6Ghz)

People2D is a principled approach for detecting people in 2D range data. It is based on discriminative classification of a rich geometrical/statistical feature-set for describing people in 2D range data. The method first segments 2D range data via jump-distance clustering, computes descriptors, and runs Adaboost prediction. The approach allows detections in single frames, without the need of tracking and background-learning. It can been used in indoor, outdoor, from a static or a moving platform. Appropriate training data must be provided to the algorithm to perform well in all cases. It is considered state-of-the-art in the field of 2D detection from single frames (03/2011).

How to cite this lib:
Download

The source code can be download from http://www.informatik.uni-freiburg.de/~spinello/sw/People2D.tar.bz2.
The examples (training/test set) can be dowloaded from http://www.informatik.uni-freiburg.de/~spinello/sw/People2D_examples.tar.bz2

Install

Download and decompress the package. The library relies on cmake to generate the Makefiles.
Enter into the main directory people2D/ directory, then run:
cmake . 
Then run:
make 
The software depends on the following external libraries:
Usage

The software comes with a training module, and a detector module. Scripts are provided for training a people 2D detector in a simple indoor environment (a toy dataset is included).

File format:
The file format used is very simple. A single text file contains a set of 2D laser scans in which each line represents a single scan.
ID1 X11 Y11 L11 X12 Y12 L12 ... X1N Y1N L1N
ID2 X2 Y21 L21 X22 Y22 L22 ... X2N Y2N L2N
ID is the numeric identifier of the scan (ignored), Xp and Yp are the cartesian coordinates of the point p, Lp is the binary label of point p (0 if people -- 1 if background). The value of Lp is ignored when the file is read for people detection.

Quick Training guide:
./people2D_dumpfeats -i data/training.dat -d 0.2 -o output/ppl2Dindoor.abt 
./external_bin/adaboost_train64 -i output/ppl2Dindoor.abt -o output/ppl2dmdl -n 50
In the first line, it reads the annotated file data/training.dat, segments it with a threshold of 0.2m and saves all the features in output/ppl2Dindoor.abt. The second line launches adaboost training module that computes the strong classifier by using 50 stumps; the model is then saved in output/ppl2dmdl.C00_stumpboost.param_txt.

Quick Detection guide:
./people2D_detect -i data/testing.dat -d 0.2 -o output/test_output.dat 
-m output/ppl2dmdl.C00_stumpboost.param_txt -pr
It reads the annotated file data/testing.dat, segments it with a threshold of 0.2m, loads the model output/ppl2dmdl.C00_stumpboost.param_txt, and saves all the results in output/test_output.dat. It also computer precision-recall graph in case that data/testing.dat contains annotations.

Advanced guide:
./people2D_dumpfeats 
Dumps features and labels for learning people appeareance from 2D range data
options:
-i input scan file
-o output model
-d segmentation distance in m
-fx (valids: f0,f1,f2,f3) feature set mix (default 0:all)
-s ignores all params and writes segmentation only on disk
-S do not run sanity checks on data (DISCOURAGED but faster)
-v (1-3) verbosity (default = 0)
./people2D_detect
Detects people in 2D range data
options:
-i input scan file
-m model file
-d segmentation distance in m
-pr consider the annotations in the file and compute pr curve
-fx (valids: f0,f1,f2) feature set mix (default 0:all)
-o output file
-s ignores all params and writes segmentation only on disk
-S do not run sanity checks on data (DISCOURAGED but faster)
-B benchmark mode, no verbosity, no result save
-v (1-3) verbosity (default = 0)

Visualization:
The software comes with several MATLAB scripts for visualizing results in range data:
MATLAB/showdetection.m (visualizes detections)
MATLAB/showsegments.m (visualizes segmentation computed via -s parameter)
MATLAB/showpr_curve.m (visualizes precision recall curve computed via -pr parameter)


Example files:
The software includes training/testing data for a static view of a sparsely populated indoor environment.
WARNING: THIS DATA IS INCLUDED TO SHOW THE FUNCTIONALITY OF THE ALGORITHM, IT IS NOT MEANT TO PRODUCE A DETECTOR ABLE TO GENERALIZE IN MORE COMPLEX / CLUTTERED ENVIRONMENTS.
Results on this dataset by using different segmentation parameters and different feature-sets are displayed below.

Other relevant references
Acknowledgements

Matthias Luber and Prof. Kai O. Arras that annotated the example dataset.

Copyright and License Information

People2D Copyright (c) 2011 Luciano Spinello
This software is licensed under the "Creative Commons License (Attribution-NonCommercial-ShareAlike 3.0)" and is copyrighted by Luciano Spinello
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

People2D is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.