2025-11-24 19:00:53 +01:00
2025-10-21 16:20:51 +02:00
2025-11-24 19:00:53 +01:00
2025-10-21 16:20:51 +02:00
2025-02-28 15:25:31 +01:00
2025-01-21 16:23:19 +01:00
2024-10-14 16:28:34 +02:00
2024-06-26 16:25:35 +02:00
2025-08-13 15:30:37 +02:00
2024-06-26 16:25:35 +02:00
2024-06-26 17:13:19 +02:00
2025-08-05 17:47:14 +02:00
2024-11-25 17:51:20 +01:00

RapidPoseTriangulation

Fast triangulation of multiple persons from multiple camera views.
A general overview can be found in the paper RapidPoseTriangulation: Multi-view Multi-person Whole-body Human Pose Triangulation in a Millisecond.

2D detections       3D detections

3D to 2D projection

Build

  • Clone this project with submodules:

    git clone --recurse-submodules https://gitlab.com/Percipiote/RapidPoseTriangulation.git
    cd RapidPoseTriangulation/
    
  • Enable GPU-access for docker building:

    • Install nvidia container tools: Link

    • Run sudo nano /etc/docker/daemon.json and add:

      {
        "runtimes": {
          "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
          }
        },
        "default-runtime": "nvidia"
      }
      
    • Restart docker: sudo systemctl restart docker

  • Build docker container:

    docker build --progress=plain -t rapidposetriangulation .
    ./run_container.sh
    
  • Build triangulator:

    cd /RapidPoseTriangulation/swig/ && make all && cd ../tests/ && python3 test_interface.py && cd ..
    
    cd /RapidPoseTriangulation/scripts/ && \
    g++ -std=c++2a -fPIC -O3 -march=native -Wall -Werror -flto=auto \
      -I /RapidPoseTriangulation/rpt/ \
      -isystem /usr/include/opencv4/ \
      -isystem /onnxruntime/include/ \
      -isystem /onnxruntime/include/onnxruntime/core/session/ \
      -isystem /onnxruntime/include/onnxruntime/core/providers/tensorrt/ \
      -L /onnxruntime/build/Linux/Release/ \
      test_skelda_dataset.cpp \
      /RapidPoseTriangulation/rpt/*.cpp \
      -o test_skelda_dataset.bin \
      -Wl,--start-group \
        -lonnxruntime_providers_tensorrt \
        -lonnxruntime_providers_shared \
        -lonnxruntime_providers_cuda \
        -lonnxruntime \
      -Wl,--end-group \
      $(pkg-config --libs opencv4) \
      -Wl,-rpath,/onnxruntime/build/Linux/Release/ \
    && cd ..
    
  • Download ONNX models from model registry and save them to mmdeploy/extras/exports/. Upon the first usage, they will be converted to TensorRT models, which will take a few minutes.
    (Note that this conversion is not deterministic and will each time result in slightly different models and therefore also slightly different benchmark results.)

  • Test with samples:

    python3 /RapidPoseTriangulation/scripts/test_triangulate.py
    
  • Test with skelda dataset:

    export CUDA_VISIBLE_DEVICES=0
    python3 /RapidPoseTriangulation/scripts/test_skelda_dataset.py
    

Extras

  • Exporting tools for 2D models are at mmdeploy directory.

  • For usage in combination with ROS2 see ros directory.

  • Running on a Nvidia Jetson is also possible following jetson directory.


Citation

Please cite RapidPoseTriangulation if you found it helpful for your research or business.

@article{
  rapidtriang,
  title={{RapidPoseTriangulation: Multi-view Multi-person Whole-body Human Pose Triangulation in a Millisecond}},
  author={Bermuth, Daniel and Poeppel, Alexander and Reif, Wolfgang},
  journal={arXiv preprint arXiv:2503.21692},
  year={2025}
}
Description
Ultra fast triangulation of multiple persons from multiple camera views
Readme 24 MiB
Languages
C++ 92.1%
Python 7%
CMake 0.6%
SWIG 0.2%