Question

Is there any mature open source human detection and tracking system/algorithm?

I need to use a human tracking algorithm in my research. But I don't want to pay much time implementing one by myself. So I would like to know if there're such out-of-the-box toolkit.

Topics

0 / 1  ·  24 Answers  ·  9458 Views

All Answers (24)

  • Paul Wohlhart · Graz University of Technology
    What's your setup? Single/Multiple Cameras (network)? Fixed camera(s)? Known scene? Resolution? Indoor/Outdoor? Individuals always separable from at least one view? do you want to track everybody or a dedicated person of interest? ...
  • Mustafa Teke · Middle East Technical University
    OpenCV has a nice implementation of HOG, which produces good results for detecting humans. OpenCV has GPU implementation also.
  • Felipe Trujillo-Romero · Universidad Tecnológica de la Mixteca
    I agree with Paul you must to answer these questions first in order to define the limits of your problem. But in the maintime you can check the OpenCV library since this library includes some algorithms for tracking.
  • Stephan Irgenfried · Karlsruhe Institute of Technology
    We implemented human face recognition and tracking in Matlab / Simulink using a standard webcam. If you're interested, feel free to contact me.
  • Ransalu Senanayake · Sri Lanka Institute of Information Technology
    HOG - Histogram of Oriented gradients. "Pedestrian detection". Already developed. You just have to call the function. Look at the samples in openCV. Also you can find a code from Matlab exchange.

    Also there are standard algorithms for human upper body detection, posture detection etc...

    #include "cvaux.h"
    #include "highgui.h"
    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>

    using namespace cv;
    using namespace std;

    int main(int argc, char** argv)
    {
    Mat img;
    char _filename[1024];

    HOGDescriptor hog;
    hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
    namedWindow("people detector", 1);

    //argv[1]="r1.jpg";
    //img = imread(argv[1]);
    CvCapture* cap=cvCreateCameraCapture(0);
    img=cvQueryFrame(cap);

    for(;;){
    img=cvQueryFrame(cap);

    fflush(stdout);
    vector<Rect> found, found_filtered;
    double t = (double)getTickCount();
    // run the detector with default parameters. to get a higher hit-rate
    // (and more false alarms, respectively), decrease the hitThreshold and
    // groupThreshold (set groupThreshold to 0 to turn off the grouping completely).
    int can = img.channels();
    hog.detectMultiScale(img, found, 0, Size(8,8), Size(32,32), 1.05, 2);
    t = (double)getTickCount() - t;
    printf("tdetection time = %gms\n", t*1000./cv::getTickFrequency());
    size_t i, j;
    for( i = 0; i < found.size(); i++ ){
    Rect r = found[i];
    for( j = 0; j < found.size(); j++ )
    if( j != i && (r & found[j]) == r)
    break;
    if( j == found.size() )
    found_filtered.push_back(r);
    }
    for( i = 0; i < found_filtered.size(); i++ ){
    Rect r = found_filtered[i];
    // the HOG detector returns slightly larger rectangles than the real objects.
    // so we slightly shrink the rectangles to get a nicer output.
    r.x += cvRound(r.width*0.1);
    r.width = cvRound(r.width*0.8);
    r.y += cvRound(r.height*0.07);
    r.height = cvRound(r.height*0.8);
    rectangle(img, r.tl(), r.br(), cv::Scalar(0,255,0), 3);
    }
    imshow("people detector", img);

    cvWaitKey(1);
    }


    return 0;
    }
  • Wei Shi · Shanghai Jiao Tong University
    thanks for the comments and suggestion. I will clarify the setup: the scene is fixed and indoor. Only one static camera. Frequent occlusions may happen. And I want track as many people as I can.
  • Jürgen Brauer · Fraunhofer Institute for Optronics, System Technology and Image Exploitation IOSB
    Beside -- the already mentioned -- OpenCV CPU+GPU ready-to-use HOG person detectors, there is also a very fast + easy to use Matlab FPDW ("Fastest Pedestrian Detector in the West") reference implementation, see

    http://www.juergenwiki.de/work/wiki/doku.php?id=public:person_detection_-_the_fastest_pedestrian_detector_in_the_west_fpdw

    But: note, all these are person detectors, not person trackers, i.e. you will come up with person detection bounding box rectangles for a single frame and would need to augment it further to a person tracker by associating the individual bounding boxes between between the frames to yield a person tracker.
  • Bruce Draper · Colorado State University
    HoG in OpenCV is mature -- it just doesn't work very well in anything other than very simple scenarios. Also, its not a tracker. I would go ahead and try HoG first (along with one of the simple trackers that are also available in OpenCV). But if it doesn't work, look at the last couple of PETS workshops. If your set-up is similar to the PETS set up (fixed camera, people at a distance, but often in crowds) then there is a public version of Bolme's MOSSE system that is reasonably reliable and really fast.
  • Arpit Jain · University of Maryland, College Park
    for tracking you can use particle filters/mean shift/kalman tracker or do detection based tracking where you detect humans in each frame and concatenate the detection to produce tracks. It's lot of engineering apart from algorithm :).
  • Ziyan Wu · Rensselaer Polytechnic Institute
    sure openCV!
  • Mark Lescroart · University of California, Berkeley
    You might check out Lubomir Bourdev and Jitendra Malik's Poselet algorithm. Matlab code is available at: http://www.cs.berkeley.edu/~lbourdev/poselets/
  • Ebrahim Bararian · Amirkabir University of Technology
    maybe you need this http://sbinfocanada.about.com/cs/marketing/g/nichemarket.htm
    accompanying the opencv pedestrian detection system. pedestrian tracking system just detect the near upright people of special rang of size. I think deformable detection is already an unsolved problem.
  • Johnny Padulo · National Center of Medicine and Science in Sport, Tunis, Tunisia
    what is your Aim?
  • Rajiv Kumar · Punjab Institute of Management & Technology, Mandi Gobindgarh
    Movid is an acronym that stands for Modular Open Vision Interaction Daemon. Movid a cross-platform and Open Source vision tracking system, designed to be as modular as possible. Their current focus is on detection and tracking of humans and their interaction with computers as well as any objects they might use to do so. It utilizes computer vision, but other sensing techniques could be added as well.
    it may be useful to you.

    www.movid.org
  • John Sanabria Sarmiento · Industrial University of Santander
    did you try with HMM ??
  • Vania Estrela · Universidade Federal Fluminense
    I have seen these simple things and they can be further improved:
    http://nootropicdesign.com/projectlab/2011/03/20/arduino-computer-vision/
    http://www.amazon.com/Making-Things-See-Processing-MakerBot/dp/1449307078

    You will have very simple hardware and software.
    Regards,
    Vania
  • Lakis Christodoulou · Cyprus University of Technology
    Vania i'm developing my own 3D-Stereo Computer Vision toolbox with Human Surveillance, Monitoring, Tracking, Segmentation, Detection, Classification, Recognition, Image-Video Processing and Analysis algorithms based on Matlab programming. Soon i will deploy my own developed image-video processing algorithms and compare them with Matlab's Computer Vision Toolbox

    You can download and install Matlab's Computer Vision Toolbox
    http://www.mathworks.com/products/computer-vision/index.html
    Computer Vision System Toolbox™ provides algorithms and tools for the design and simulation of computer vision and video processing systems. The toolbox includes algorithms for feature extraction, motion detection, object detection, object tracking, stereo vision, video processing, and video analysis. Tools include video file I/O, video display, drawing graphics, and compositing. Capabilities are provided as MATLAB® functions, MATLAB System objects™, and Simulink® blocks. For rapid prototyping and embedded system design, the system toolbox supports fixed-point arithmetic and C code generation.
    Matlab Stereo Computer Vision System Toolbox
    • Key Features
    • Feature Detection and Extraction
    • Registration and Stereo Vision
    • Object Detection, Motion Estimation, and Tracking
    • Video Processing and Display
    • Stream Processing in MATLAB and Simulink
    • System Design and Implementation

    Open CV has free C/C++ image-video processing algorithms and you can test and deploy them in your work environment, or you can develop your own algorithms based on your research analysis.

    Let me know in case you need a detection-segmentation and tracking algorithm...
  • Lakis Christodoulou · Cyprus University of Technology
    I recommend Adaptive Statistical Image-Video Processing for moving video-object tracking based on extensive Kalman Filtering. As for moving-object detection-segmentation i recommend adaptive color, shape, size, feature extraction with the combination of foreground and background detection based on adaptice statistical thresholding. Of course there are many algorithms to be tested but always prefer to develop adaptive image-video processing cause they are more accurate (but more complicated and time consumed in processing).
  • Ransalu Senanayake · Sri Lanka Institute of Information Technology
    histogram of oriented gradients (HoG)
    OpenCV has inbuilt and for matlab http://www.mathworks.com/matlabcentral/fileexchange/33863-histograms-of-oriented-gradients
  • Fernando Osorio · University of São Paulo
    There are several back-ground removal algorithms that can be used with static cameras with OpenCV (e.g. http://code.google.com/p/bgslibrary/ ). Once the back-ground was removed it will be very simple to track people and other moving elements. You can also use other devices than "normal" cameras, as your application is indoor. Why not to try a Kinect device (e.g. Microsoft Kinect). Similar back-ground removal algorithms can be used with Kinect 3D point-cloud and tracking people can be very effective using this type of devices (indoor, max. 10 meters distance range).
  • Jaya Shukla · Shiv Nadar University
    Using the Kinect we are getting the RGB image and Depth Image. After thresholding the depth image you can remove backgound.
  • Jaya Shukla · Shiv Nadar University
    I am able to get the head points using haar cascade classifier. How can I stick Skeleton in the first frame based on head information. Is there any relationship?
  • Jaya Shukla · Shiv Nadar University
    I have installed OpenCV+OpenNI and getting the images through Kinect. Is there any Opensource API for getting the skeelton tracking in C/C++ in ubuntu 12.04?How can I install that and how can I include that API's when running OpenCV prograams?
  • Mouloud Kachouane · University of Science and Technology Houari Boumediene
    Hi, I recommend to you to use OpenCV library, it contains all what you need, I used it (under Linux) and I tried the pedestrian detector sample (CPU or GPU), you can also read my publication, it's about pedestrian detection where we talk about our implementation of a fast pedestrian detector.

Question Followers (33) See all