Geo-trax: A Comprehensive Framework for Georeferenced Vehicle Trajectory Extraction from Drone Imagery
Description
Geo-trax (GEO-referenced TRAjectory eXtraction) is an end-to-end pipeline for extracting high-accuracy, georeferenced vehicle trajectories from high-altitude, bird’s-eye view drone footage, addressing critical challenges in urban traffic analysis and real-world georeferencing. Designed for quasi-stationary drone monitoring of intersections or road segments, Geo-trax utilizes advanced computer vision and deep learning methods to deliver high-quality data and support scalable, precise traffic studies. This pipeline transforms raw, top-down video data into georeferenced vehicle trajectories in real-world coordinates, enabling detailed analysis of vehicle dynamics and behavior in dense urban environments.
⚠️ Important: If you use the code in your work, please cite the following reference [1]:
Robert Fonod, Haechan Cho, Hwasoo Yeo, Nikolas Geroliminis (2025). Advanced computer vision for extracting georeferenced vehicle trajectories from drone imagery, arXiv preprint arXiv:2411.02136.
(Note: This manuscript shall be replaced by the published version once available.)
The pipeline includes the following key components:
- Vehicle Detection (✅): Utilizes a pre-trained YOLOv8 model to detect vehicles (cars, buses, trucks, and motorcycles) in the video frames.
- Vehicle Tracking (✅): Implements a selected tracking algorithm to follow detected vehicles, ensuring robust trajectory data and continuity across frames.
- Trajectory Stabilization (✅): Corrects for unintentional drone movement by aligning trajectories to a reference frame, using bounding boxes of detected vehicles to enhance stability. Leverages the stabilo 🚀 library to achieve reliable, consistent stabilization.
- Georeferencing (👷🏼): Maps stabilized trajectories to real-world coordinates using an orthophoto and image registration technique.
- Dataset Creation (👷🏼): Compiles trajectory and related metadata (e.g., velocity, acceleration, dimension estimates) into a structured dataset.
- Visualization Tools (✅/👷🏼): Provides tools to visualize the extracted trajectories, overlaying paths on video frames and generating various plots for traffic data analysis.
- Customization and Configuration (✅): Offers flexible configuration options to adjust the pipeline settings, including detection and tracking parameters, stabilization methods, and visualization modes.
This is a preliminary version of the pipeline with some functionalities not being implemented (👷🏼). Future releases will include more detailed documentation, a more user-friendly interface, and additional functionalities.
🚀 Planned Enhancements
Release Plan
-
Version 1.0.0
- Complete georeferencing functionality (Point 4 above).
- Comprehensive dataset creation with all metadata (Point 5 above).
- Visualization and plotting tools (Point 6 above).
- Tools for comparing extracted trajectories with on-board sensor data.
- Basic documentation and examples covering all core functionalities.
-
Version >1.0.0
- Release tools for (re-)training the detection model.
- Pre-processing tools for raw video input.
- Expanded documentation, tutorials (docs folder), and sample examples.
- List of known limitations, e.g., ffmpeg backend version discrepancies in OpenCV.
- Comprehensive unit tests for critical functions and end-to-end tests for the entire pipeline.
- Publishing on PyPI for simplified installation and distribution.
-
Version 2.0.0
- Upgrades to the latest ultralytics (>8.2) and numpy (>2.0) versions.
- Support for additional tracking algorithms and broader vehicle type recognition.
- Transition to a modular package layout for enhanced maintainability.
- Implementation of batch inference and multi-thread processing to improve scalability.
- Automated testing workflows with GitHub Actions.
📝 Changes (v0.2.0 -> v0.3.0):
-
Video Visualization and Batch Processing Enhancements
- Added a script for visualizing video outputs with annotated trajectories.
- Improved batch processing logic for better efficiency and robustness when handling multiple input files.
-
Dependency and Delimiter Detection Updates
-
High-Precision Homography and Logging Improvements
- Updated the code to save homography transformations at higher precision.
- Enhanced logging functionality for more detailed and user-friendly feedback during execution.
-
Code Streamlining
- Performed general code optimizations and refactoring for better maintainability and performance.
- Made minor updates to the
README.md.
Full Changelog: https://github.com/rfonod/geo-trax/compare/v0.2.0...v0.3.0
Files
rfonod/geo-trax-v0.3.0.zip
Files
(20.9 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:ac38e1ab158b6c04419960ea36a199ef
|
20.9 MB | Preview Download |
Additional details
Related works
- Is described by
- Preprint: arXiv:2411.02136 (arXiv)
- Is supplement to
- Software: https://github.com/rfonod/geo-trax/tree/v0.3.0 (URL)
- Is supplemented by
- Software: https://github.com/rfonod/stabilo-optimize/ (URL)
- Software: https://github.com/rfonod/stabilo/ (URL)
Dates
- Updated
-
2025-01-02Update from v0.2.0 to v0.3.0
Software
- Repository URL
- https://github.com/rfonod/geo-trax
- Programming language
- Python
- Development Status
- Active