Paul St-Aubin edited Methodology Tools & Techniques.tex  almost 10 years ago

Commit id: 55619f4a71dd2e4bd58fca7b29ec2539fb435260

deletions | additions      

       

\subsubsection{Software}  \label{software}  The software used is the open-source Traffic Intelligence project \cite{Saunier_2010}, itself based on the computer vision platform openCV \cite{Brahmbhatt_2013}. This software provides the basic feature-tracking, trajectory management and coordinate projection \cite{Ismail_2013} functionality as well a few usage-specific tools such as correction for lens distortion (depicted in Figure~\ref{fig:cg-undistort}), trajectory clustering, and basic motion prediction functions. Some of the more advanced analysis tools and techniques presented in this paper are under development and will be made available as their functionality is completed and validated. \subsubsection{Processing}  Real-time analysis is not an explicit goal of this technology as its intended use is primarily for research. However, performance is a serious consideration if, for no other reason than to ensure that processing remains affordable and does not fall behind data collection. In any case, some calculations may require pre-processing of as much data as possible, particularly machine learning tasks such as is used in motion prediction (see section \ref{motion-prediction}).  In the current iteration of the software, and with today's multi-core possessors, tasks are highly parallelisable. Feature tracking and trajectory analysis can be performed on multiple video sequences at a time, typically cut up into 20 minute or 1 hour segments, in parallel on a single mid-to-high-performance machine, or on a computer cluster. With parallel processing of video sequences on a single computer, memory becomes the main bottleneck; 32 GB or more of memory is highly recommended on a multi-core machine to take full advantage of up to 8 threads. Alternatively, the large majority of calculation tasks can be parallelised at the observation level as they are independent events.  Feature tracking is written in C++ for performance, while the majority of trajectory analysis is written in Python for ease of development and extensibility. Where possible, expensive trajectory analysis calculations make use of Python wrappers for fast compiled libraries.