Video-based transportation data collection : Différence entre versions
Ligne 25 : | Ligne 25 : | ||
Clone with Mercurial from https://bitbucket.org/Nicolas/trafficintelligence/wiki/Home and follow instructions there for installation and use, including OpenCV and the Library for Trajectory Management, providing I/O functions and several trajectory distances (https://bitbucket.org/trajectories/trajectorymanagementandanalysis). | Clone with Mercurial from https://bitbucket.org/Nicolas/trafficintelligence/wiki/Home and follow instructions there for installation and use, including OpenCV and the Library for Trajectory Management, providing I/O functions and several trajectory distances (https://bitbucket.org/trajectories/trajectorymanagementandanalysis). | ||
+ | |||
+ | ==Free Online Datasets== | ||
+ | |||
+ | * Old synthetic and traffic video data http://i21www.ira.uka.de/image_sequences/ | ||
+ | * UCSD method for people counting with dataset http://www.svcl.ucsd.edu/projects/peoplecnt/ | ||
+ | * PETS datasets | ||
+ | ** 2009: people tracking with multiple cameras http://www.cvg.rdg.ac.uk/PETS2009/ (http://www.cvg.rdg.ac.uk/PETS2009/a.html) | ||
+ | * CityCars and CityPedestrians http://www.psi.toronto.edu/index.php?q=flobject%20analysis | ||
+ | * Gavrila ADD | ||
+ | * INRIA dataset used by N. Dalal (HoG classifiers) ADD | ||
+ | |||
+ | Image datasets of known objects are useful to train and test object classifiers | ||
==License== | ==License== |
Version du 6 décembre 2011 à 00:12
Sommaire
Methods for detection and tracking of road users
- Feature-based tracking is the main and a relatively easy detection and tracking algorithm
- my paper http://n.saunier.free.fr/saunier/stock/saunier06feature-based.pdf and the paper it is based upon http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.49.599&rep=rep1&type=pdf
- Some slightly older information http://wiki.polymtl.ca/transport/index.php/FeatureBasedTracking
- Background subtraction: the most common method is based on a mixture of Gaussians and available in OpenCV http://www.ai.mit.edu/projects/vsam/Publications/stauffer_cvpr98_track.pdf; lit review in http://staff.it.uts.edu.au/~massimo/BackgroundSubtractionReview-Piccardi.pdf
- Object detection/classification: http://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf, available in OpenCV, which can be used for tracking by detection, e.g. in http://www.vision.ee.ethz.ch/showroom/tracking/
Software Development
Because I am relying on OpenCV for computer vision functionality, and because C++ is fast, the previous software was written in C++. For the same reasons, the core most computationally intensive functions should be written in C++ (although the python wrappers are more and more usable). The most up to date documentation is at http://opencv.itseez.com.
The platform of choice for development is Linux (e.g. the Ubuntu distribution). I would like to have the code cross-platform, ie the C++ should compile at least under Windows and Linux, which is not too difficult if using the right tools (g++, make or CMake).
I am If you are not familiar with any of the following topic, please read more:
- C++: see below. I recommend the use of smart pointers for ease of memory management (avoiding memory leaks in a program meant to process hours of video without crashing is essential). See Boost shared pointers http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm
- Version Control: I refuse to work in teams without software version control. I use mercurial which has a fairly low barrier to entry and good documentation. http://mercurial.selenic.com
- Test-driven development: writing tests takes a bit more time when developing, but helps in testing and ensures that the software still matches its specifications when refactoring later. I have used the Boost test library and it does the job http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/index.html, Google test is getting famous and is used in OpenCV.
- Computer vision algorithms: see above
- Python is nice for visualization, and the binding to OpenCV seem now robust enough for prototyping.
It is very important for me to develop quality software that can be easily maintained over the long term, hence the emphasis on version control, smart pointers and tests.
Traffic Intelligence
Clone with Mercurial from https://bitbucket.org/Nicolas/trafficintelligence/wiki/Home and follow instructions there for installation and use, including OpenCV and the Library for Trajectory Management, providing I/O functions and several trajectory distances (https://bitbucket.org/trajectories/trajectorymanagementandanalysis).
Free Online Datasets
- Old synthetic and traffic video data http://i21www.ira.uka.de/image_sequences/
- UCSD method for people counting with dataset http://www.svcl.ucsd.edu/projects/peoplecnt/
- PETS datasets
- 2009: people tracking with multiple cameras http://www.cvg.rdg.ac.uk/PETS2009/ (http://www.cvg.rdg.ac.uk/PETS2009/a.html)
- CityCars and CityPedestrians http://www.psi.toronto.edu/index.php?q=flobject%20analysis
- Gavrila ADD
- INRIA dataset used by N. Dalal (HoG classifiers) ADD
Image datasets of known objects are useful to train and test object classifiers
License
Traffic Intelligence is developed under an open source MIT license and I would like additions to be under the same license.
Sample Datasets
http://pets2010.net/ http://www.svcl.ucsd.edu/projects/peoplecnt/
Resources
- Open source computer vision projects
- OpenCV http://opencv.willowgarage.com/wiki/
- http://code.google.com/p/opencv-feature-tracker/ (Warning: many bugs, not a good basis to build upon)
- https://bitbucket.org/Nicolas/trafficintelligence
- https://bitbucket.org/trajectories/trajectorymanagementandanalysis
- Version Control http://mercurial.selenic.com/
- C++