You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
mht 988d8622fa Fix: Correct classifier weight loading and device handling 6 days ago
.idea Intial commit 1 week ago
bin Intial commit 1 week ago
build Intial commit 1 week ago
cimp Fix: Correct classifier weight loading and device handling 6 days ago
cmake-build-debug Intial commit 1 week ago
exported_weights Intial commit 1 week ago
ltr Intial commit 1 week ago
pytracking Intial commit 1 week ago
test Docs: Enhance HTML report metrics and add test framework README 6 days ago
vcpkg@8f54ef5453 Intial commit 1 week ago
CMakeLists.txt Intial commit 1 week ago
README.md Update README.md to emphasize CUDA requirement and remove CPU fallback references 1 week ago
bb_regressor_stats.txt Intial commit 1 week ago
build.sh Intial commit 1 week ago
classifier_stats.txt Intial commit 1 week ago
demo.py Intial commit 1 week ago
run_demo.sh Intial commit 1 week ago
vcpkg-toolchain.cmake Intial commit 1 week ago
vcpkg.json Intial commit 1 week ago

README.md

C++ Tracker Implementation

This project implements a C++ version of the DiMP tracker, focusing on the bounding box regressor and classifier components.

Overview

The project consists of two main components:

  1. BBRegressor: Implements the IoU (Intersection over Union) network for bounding box regression
  2. Classifier: Implements the feature extraction for target classification

Requirements

  • CMake (3.18 or higher)
  • C++17 compatible compiler
  • LibTorch (PyTorch C++ API)
  • CUDA (required) - This implementation requires CUDA and does not support CPU-only execution

Building the Project

Automatic Build

The easiest way to build the project is to use the provided build script:

chmod +x build.sh
./build.sh

This will:

  1. Check for CUDA availability (and exit if not found)
  2. Download LibTorch with CUDA support if not already installed
  3. Configure the project with CMake
  4. Build the project
  5. Install the executable to the bin/ directory

Manual Build

If you prefer to build manually:

mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release

Running the Demo

To run the demo application:

# Make sure CUDA is properly set up in your environment
./run_demo.sh

The script will check for CUDA availability and set up the necessary environment variables before running the demo.

Project Structure

  • cimp/: Main C++ implementation
    • bb_regressor/: Bounding box regressor implementation
    • classifier/: Feature extractor implementation
    • demo.cpp: Demo application
  • exported_weights/: Directory containing exported PyTorch weights
    • backbone/: Backbone network weights
    • bb_regressor/: Bounding box regressor weights
    • classifier/: Classifier weights
  • ltr/: Reference Python implementation
  • bin/: Built executables

Implementation Notes

  • The PrRoIPooling implementation requires CUDA and has no CPU fallback
  • All tensor operations are performed on CUDA devices
  • The tracker is optimized for GPU execution only

Comparing Python and C++ Implementations

To compare the outputs between Python and C++ implementations:

  1. Run the Python implementation to generate reference outputs:
python demo.py
  1. Run the C++ implementation:
./run_demo.sh
  1. Compare the output statistics in the generated files:
    • bb_regressor_stats.txt
    • classifier_stats.txt

License

This project is licensed under the MIT License - see the LICENSE file for details.