CUDA-accelerated Apriltag detection and pose estimation.

Overview

Isaac ROS Apriltag

Overview

This ROS2 node uses the NVIDIA GPU-accelerated AprilTags library to detect AprilTags in images and publishes their poses, IDs, and additional metadata. This has been tested on ROS2 (Foxy) and should build and run on x86_64 and aarch64 (Jetson). It is modeled after and comparable to the ROS2 node for CPU AprilTags detection.

For more information on the Isaac GEM that this node is based off of, see the latest Isaac SDK documentation here.

For more information on AprilTags themselves, including the paper and the reference CPU implementation, click here.

System Requirements

This Isaac ROS package is designed and tested to be compatible with ROS2 Foxy on Jetson hardware.

Jetson

  • AGX Xavier or Xavier NX
  • JetPack 4.6

x86_64

  • CUDA 10.2+ supported discrete GPU
  • VPI 1.1.11
  • Ubuntu 18.04+

Note: For best performance on Jetson, ensure that power settings are configured appropriately (Power Management for Jetson).

Docker

Precompiled ROS2 Foxy packages are not available for JetPack 4.6 (based on Ubuntu 18.04 Bionic). You can either manually compile ROS2 Foxy and required dependent packages from source or use the Isaac ROS development Docker image from Isaac ROS Common.

You must first install the Nvidia Container Toolkit to make use of the Docker container development/runtime environment.

Configure nvidia-container-runtime as the default runtime for Docker by editing /etc/docker/daemon.json to include the following:

    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"

and then restarting Docker: sudo systemctl daemon-reload && sudo systemctl restart docker

Run the following script in isaac_ros_common to build the image and launch the container:

$ scripts/run_dev.sh

You can either provide an optional path to mirror in your host ROS workspace with Isaac ROS packages, which will be made available in the container as /workspaces/isaac_ros-dev, or you can setup a new workspace in the container.

Package Dependencies

Note: isaac_ros_common is used for running tests and/or creating a development container. It also contains VPI Debian packages that can be installed natively on a development machine without the container.

Quickstart

  1. Create a ROS2 workspace if one is not already prepared:
    mkdir -p your_ws/src
    Note: The workspace can have any name; the quickstart assumes you name it your_ws.
  2. Clone this package repository to your_ws/src/isaac_ros_apriltag. Check that you have Git LFS installed before cloning to pull down all large files.
    sudo apt-get install git-lfs
    cd your_ws/src && git clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_apriltag
  3. Build and source the workspace:
    cd your_ws && colcon build --symlink-install && source install/setup.bash
  4. (Optional) Run tests to verify complete and correct installation:
    colcon test
  5. Start isaac_ros_apriltag using the prebuilt executable:
    ros2 run isaac_ros_apriltag isaac_ros_apriltag
  6. In a separate terminal, spin up a calibrated camera publisher to /image_rect and /camera_info using any package (for example, v4l2_camera):
    ros2 run v4l2_camera v4l2_camera_node --ros-args -r /image_raw:=/image_rect
  7. Observe the AprilTag detection output /tag_detections on a separate terminal with the command:
    ros2 topic echo /tag_detections

Configuration

You will need to calibrate the intrinsics of your camera if you want the node to determine 3D poses for tags instead of just detection and corners as 2D pixel coordinates. See here for more details.

Replacing apriltag_ros with isaac_ros_apriltag

  1. Add a dependency on isaac_ros_apriltag to your_package/package.xml and your_package/CMakeLists.txt. The original apriltag_ros dependency may be removed entirely.
  2. Change the package and plugin names in any *.launch.py launch files to use isaac_ros_apriltag and AprilTagNode, respectively.

See Also

  • isaac_ros_image_pipeline: Accelerated metapackage offering similar functionality to the standard CPU-based image_pipeline metapackage
  • isaac_ros_common: Utilities for robust ROS2 testing, in conjunction with launch_test

Isaac ROS Apriltag Pipeline Tutorial

Objective

This tutorial will help you quickly run and experiment with the full Isaac ROS Apriltag pipeline, from camera frames to tag detections.

Tutorial

  1. Complete the Quickstart steps above.
  2. Connect a compatible camera to your Jetson and set up the camera publisher stream. Your camera vendor may offer a specific ROS2-compatible camera driver package. Alternatively, many generic cameras are compatible with the v4l2_camera package.
    Important: Ensure that the camera stream publishes Image and CameraInfo pairs to the topics /image_raw and /camera_info, respectively.
  3. Ensure that your workspace has been built and sourced, if you have not done so already:
    cd your_ws && colcon build --symlink-install && source install/setup.bash
  4. Finally, launch the pre-composed pipeline launchfile:
    ros2 launch isaac_ros_apriltag isaac_ros_apriltag_pipeline.launch.py

Detections will show up at /tag_detections.

Next Steps

Now that you have successfully launched the full Isaac ROS Apriltag pipeline, you can easily adapt the provided launchfile to integrate with your existing ROS2 environment.

Alternatively, since the AprilTagNode is provided as a ROS2 Component, you can also compose the accelerated Apriltag processor directly into an existing executable.

Package Reference

isaac_ros_apriltag

Overview

The isaac_ros_apriltag package offers functionality for detecting poses from AprilTags in the frame. It largely replaces the apriltag_ros package, though an included dependency on the ImageFormatConverterNode plugin of the isaac_ros_image_proc package also functions as a way to replace the CPU-based image format conversion in cv_bridge.

Available Components

Component Topics Subscribed Topics Published Parameters
AprilTagNode camera/image_rect, camera/camera_info: The input camera stream tag_detections: The detection message array
tf: The tag poses
family: The tag family for the detector (this value can only be 36h11 at this time)
size: The tag edge size in meters, assuming square markers
max_tags: The maximum number of tags to be detected, which is 20 by default

Updates

Date Changes
2021-10-20 Migrated to NVIDIA-ISAAC-ROS
2021-08-11 Initial release to NVIDIA-AI-IOT
Comments
  • Error with a Zed2i camera

    Error with a Zed2i camera

    Running on a Jetson Orin AGX JP 5.0.2

    [component_container_mt-1] [INFO] [1668066195.081800913] [apriltag]: [NitrosSubscriber] Received a message but the application receiver's pointer is not yet set.
    [component_container_mt-1] [INFO] [1668066195.280788751] [apriltag]: [NitrosSubscriber] Received a message but the application receiver's pointer is not yet set.
    [component_container_mt-1] [INFO] [1668066195.281303925] [apriltag]: [NitrosSubscriber] Received a message but the application receiver's pointer is not yet set.
    [component_container_mt-1] [INFO] [1668066195.281546456] [apriltag]: [NitrosSubscriber] Received a message but the application receiver's pointer is not yet set.
    [component_container_mt-1] [INFO] [1668066195.372365648] [apriltag]: [NitrosNode] Starting post negotiation setup
    [component_container_mt-1] [INFO] [1668066195.372459505] [apriltag]: [NitrosNode] Getting data format negotiation results
    [component_container_mt-1] [INFO] [1668066195.372484849] [apriltag]: [NitrosPublisher] Negotiation failed
    [component_container_mt-1] [INFO] [1668066195.372498385] [apriltag]: [NitrosPublisher] Use only the compatible publisher: topic_name="/tag_detections", data_format="nitros_april_tag_detection_array"
    [component_container_mt-1] [INFO] [1668066195.372514897] [apriltag]: [NitrosSubscriber] Negotiation failed
    [component_container_mt-1] [INFO] [1668066195.372524050] [apriltag]: [NitrosSubscriber] Use the compatible subscriber: topic_name="/zed2i/zed_node/left/camera_info", data_format="nitros_camera_info"
    [component_container_mt-1] [INFO] [1668066195.372532498] [apriltag]: [NitrosSubscriber] Negotiation failed
    [component_container_mt-1] [INFO] [1668066195.372539314] [apriltag]: [NitrosSubscriber] Use the compatible subscriber: topic_name="/zed2i/zed_node/left/image_rect_color", data_format="nitros_image_bgr8"
    [component_container_mt-1] [INFO] [1668066195.372622163] [apriltag]: [NitrosNode] Exporting the final graph based on the negotiation results
    [component_container_mt-1] [INFO] [1668066195.381650046] [apriltag]: [NitrosNode] Wrote the final top level YAML graph to "/home/warthog/external/isaac_ros_apriltag/install/isaac_ros_apriltag/share/isaac_ros_apriltag/USQGZMTPXW.yaml"
    [component_container_mt-1] [INFO] [1668066195.381732863] [apriltag]: [NitrosNode] Calling user's pre-load-graph callback
    [component_container_mt-1] [INFO] [1668066195.381749503] [apriltag]: [NitrosNode] Loading application
    [component_container_mt-1] [INFO] [1668066195.381765023] [apriltag]: [NitrosContext] Loading application: '/home/warthog/external/isaac_ros_apriltag/install/isaac_ros_apriltag/share/isaac_ros_apriltag/USQGZMTPXW.yaml'
    [component_container_mt-1] [INFO] [1668066195.384871396] [apriltag]: [NitrosNode] Linking Nitros pub/sub to the loaded application
    [component_container_mt-1] [INFO] [1668066195.384994822] [apriltag]: [NitrosNode] Calling user's post-load-graph callback
    [component_container_mt-1] [INFO] [1668066195.385071847] [apriltag]: [NitrosContext] Initializing applicaiton...
    [component_container_mt-1] [INFO] [1668066195.411477857] [apriltag]: [NitrosContext] Running appliation...
    [component_container_mt-1] 2022-11-10 07:43:15.414 ERROR extensions/tensor_ops/detail/[email protected]: invalid video format.
    [component_container_mt-1] 2022-11-10 07:43:15.415 WARN  gxf/std/[email protected]: Error while executing entity 92 named 'USQGZMTPXW_image_converter': GXF_FAILURE
    [component_container_mt-1] 2022-11-10 07:43:15.415 ERROR external/com_nvidia_gxf/gxf/std/[email protected]: Entity with 115 not found!
    [component_container_mt-1] [ERROR] [1668066195.415273422] [apriltag]: [NitrosPublisher] Vault ("vault/vault", eid=115) was stopped. The graph may have been terminated due to an error.
    [component_container_mt-1] terminate called after throwing an instance of 'std::runtime_error'
    
    verify to close 
    opened by MrOCW 7
  • Cuda failure: Unable to recieve meaningful tag_detections

    Cuda failure: Unable to recieve meaningful tag_detections

    I am getting a strange error message while running 'ros2 run isaac_ros_apriltag isaac_ros_apriltag':

    Screenshot from 2022-02-04 11-02-14

    This error message only appears after I spin up the calibrated camera publisher, as instructed in Step 6 of the Quickstart section. For reference, I am using the v4l2_camera node, which is compatible with my laptop camera. This error is especially confusing as the path '/home/thomas/Downloads' doesn't exist on my local machine or in the docker container. Likewise, I am unable to receive meaningful /tag_detections information, as I'm not sure that the isacc_ros_apriltag node is publishing anything given the issue raised above.

    I am running the docker container on x86_64 and meet all of the outlined system requirements. I have been able to successfully get the isaac_ros_image_pipeline to work, which leads me to believe that my container workspace has been setup correctly.

    Any help would be greatly appreciated. Please let me know if I failed to mention any information that would prove valuable in getting this issue resolved. Thanks in advance!

    opened by nsr-taylor 5
  • Jetson Xavier NX High CPU Usage

    Jetson Xavier NX High CPU Usage

    Hi there, I followed all steps in order to run this package within the provided ROS humble docker using Jetpack 5.0.1 on a Jetson Xavier NX and all is working as should however, my CPU usage is 200% which defeats the point of using isaac_apriltag package in the first place as the CPU based packages usage is on a order of magnitude less. Is this normal and if not what could be the problem ?

    Thanks for your help!

    verify to close 
    opened by trentatsa 4
  • run_dev.sh fails on ros2bag

    run_dev.sh fails on ros2bag

    • Fresh install of ubuntu 20.04 on desktop computer
    • Fresh install of ros2-humble
    • fresh install of nvidia container toolkit
    • fresh install of omniverse sim

    followed install instructions.

    Got error: Finished <<< rosbag2_py [44.0s] Starting >>> ros2bag Finished <<< nav2_map_server [1min 17s] Finished <<< ros2bag [21.3s] Starting >>> rosbag2_tests --- stderr: ros2bag /usr/local/lib/python3.8/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn(

    The command '/bin/bash -c cd ${ROS_ROOT} && colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo --packages-up-to behaviortree_cpp_v3 && colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo && rm -Rf src build log' returned a non-zero code: 137 Failed to build base image: isaac_ros_dev-x86_64, aborting. ~/workspaces/isaac_ros-dev/src/isaac_ros_common

    opened by robomike 4
  • Support for Multi-Camera(s) ?

    Support for Multi-Camera(s) ?

    Hi

    Does isaac_ros_apriltag support multi-camera(s) ? If does, how much camera(s) can it support at the same time ? How shall i config the parameters for different camera(s) ? As my robot has 4 camera(s), front, left, right, rear.

    Best, Samuel

    verify to close 
    opened by HappySamuel 2
  • Is tagStandard41h12 supported?

    Is tagStandard41h12 supported?

    Hi, thanks for publishing the code. The link below says this, but is there any change in the types of tags that are still supported? In the 2018.3 release, the tag36h11 tag family is supported. Extending the algorithm to other tag families is planned for a future release. https://docs.nvidia.com/isaac/packages/fiducials/doc/apriltags.html I would like to know if tagStandard41h12 is supported.

    opened by Hiroaki-K4 2
  • apriltags will detect but pose data is always NaN

    apriltags will detect but pose data is always NaN

    Hello,

    I managed to run isaac_ros_apriltag on docker, and /tag_detection publishes detected tags correctly, but all members of pose data are NaN.

    Where can I start to debug this problem.

    Best Regards, Can

    opened by altineller 1
  • it won't work on NX Jetpack 4.6.1 with the latest ros common docker implementation

    it won't work on NX Jetpack 4.6.1 with the latest ros common docker implementation

    After runing the run. sh from the common package it won't build with colcon after cloning to src of the workspace created Any ideas?

    tarting >>> image_geometry                                                                                                     
    Starting >>> camera_calibration_parsers
    --- stderr: image_transport                                                                                                                                                                             
    CMake Error at CMakeLists.txt:4 (find_package):
      By not providing "Findcatkin.cmake" in CMAKE_MODULE_PATH this project has
      asked CMake to find a package configuration file provided by "catkin", but
      CMake did not find one.
    
      Could not find a package configuration file provided by "catkin" with any
      of the following names:
    
        catkinConfig.cmake
        catkin-config.cmake
    
      Add the installation prefix of "catkin" to CMAKE_PREFIX_PATH or set
      "catkin_DIR" to a directory containing one of the above files.  If "catkin"
      provides a separate development package or SDK, be sure it has been
      installed.
    
    
    ---
    Failed   <<< image_transport [2.10s, exited with code 1]
    --- stderr: cv_bridge
    CMake Error at CMakeLists.txt:4 (find_package):
      By not providing "Findcatkin.cmake" in CMAKE_MODULE_PATH this project has
      asked CMake to find a package configuration file provided by "catkin", but
      CMake did not find one.
    
      Could not find a package configuration file provided by "catkin" with any
      of the following names:
    
        catkinConfig.cmake
        catkin-config.cmake
    
      Add the installation prefix of "catkin" to CMAKE_PREFIX_PATH or set
      "catkin_DIR" to a directory containing one of the above files.  If "catkin"
      provides a separate development package or SDK, be sure it has been
      installed.
    
    
    ---
    Failed   <<< cv_bridge [2.05s, exited with code 1]
    Aborted  <<< camera_calibration_parsers [2.79s]                                                                                                                              
    Aborted  <<< image_geometry [2.87s]
    Aborted  <<< isaac_ros_test [3.64s]                                                                  
    Aborted  <<< isaac_ros_common [5.65s]                            
                                     
    Summary: 0 packages finished [6.84s]
      2 packages failed: cv_bridge image_transport
      4 packages aborted: camera_calibration_parsers image_geometry isaac_ros_common isaac_ros_test
      4 packages had stderr output: camera_calibration_parsers cv_bridge image_geometry image_transport
      12 packages not processed
    [email protected]:/workspaces/isaac_ros-dev$ 
    
    opened by AndreV84 1
  • Cuda Error after I change output size to 1280x720.

    Cuda Error after I change output size to 1280x720.

    Hello: I use a IMX219 Camera, it can output in 1280x720, So I change rectify_node output size to 1280x720, and get error:

    [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:97 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_gradient_x2, sizeof(float) * gradient_w * gradient_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:98 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_gradient_y2, sizeof(float) * gradient_w * gradient_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:99 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_gradient_xy, sizeof(float) * gradient_w * gradient_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:100 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_blur_gradient_x2, sizeof(float) * blur_gradient_w * blur_gradient_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:101 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_blur_gradient_y2, sizeof(float) * blur_gradient_w * blur_gradient_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:102 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_blur_gradient_xy, sizeof(float) * blur_gradient_w * blur_gradient_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:104 code=2(cudaErrorMemoryAllocation) "cudaMalloc((void**)&d_maxima_suppression, sizeof(bool) * corners_w * corners_h)" [component_container_mt-1] CUDA error at external/libapriltag/april_tagging/corner_detection/corner_detector.cpp:187 code=700(cudaErrorIllegalAddress) "cudaStreamWaitEvent(x2_stream, sync_event_x2, 0)"

    needs info 
    opened by lymnxn 2
  • Updated README to avoid source and building in same terminal

    Updated README to avoid source and building in same terminal

    I noticed an issue in the README which can lead to complex issues down the line.

    It is bad practice to source and build a ros2 workspace in the same terminal. This is documented here.

    "It is very important that you open a new terminal, separate from the one where you built the workspace. Sourcing an overlay in the same terminal where you built, or likewise building where an overlay is sourced, may create complex issues."

    opened by husseinalijaafar 1
Releases(v0.20.0-dp)
Owner
NVIDIA Isaac ROS
High-performance computing for robotics
NVIDIA Isaac ROS
Hardware-accelerated DNN model inference ROS2 packages using NVIDIA Triton/TensorRT for both Jetson and x86_64 with CUDA-capable GPU.

Isaac ROS DNN Inference Overview This repository provides two NVIDIA GPU-accelerated ROS2 nodes that perform deep learning inference using custom mode

NVIDIA Isaac ROS 62 Dec 14, 2022
A easy-to-use image processing library accelerated with CUDA on GPU.

gpucv Have you used OpenCV on your CPU, and wanted to run it on GPU. Did you try installing OpenCV and get frustrated with its installation. Fret not

shrikumaran pb 4 Aug 14, 2021
Fast and robust certifiable relative pose estimation

Fast and Robust Relative Pose Estimation for Calibrated Cameras This repository contains the code for the relative pose estimation between two central

null 42 Dec 6, 2022
Android hand detect and pose estimation by ncnn

ncnn_nanodet_hand 1.hand detect:用nanode-m训练了个hand detect模型, 2.hand pose:用CMU的数据集训练了个ghostnet作为backbone模仿pfld的handpose模型 3.推理:handpose.cpp单独检测pose,nano

null 80 Jan 3, 2023
Python and C++ implementation of "MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation". Accepted at LXCV Workshop @ CVPR 2021.

MarkerPose: Robust Real-time Planar Target Tracking for Accurate Stereo Pose Estimation This is a PyTorch and LibTorch implementation of MarkerPose: a

Jhacson Meza 47 Nov 18, 2022
Reviatalizing Optimization for 3D Human Pose and Shape Estimation: A Sparse Constrained Formulation

Reviatalizing Optimization for 3D Human Pose and Shape Estimation: A Sparse Constrained Formulation This is the implementation of the approach describ

Taosha Fan 47 Nov 15, 2022
Android MoveNet pose estimation by ncnn

ncnn_Android_MoveNet Android MoveNet single human pose estimation by ncnn this project is a ncnn Android demo for MoveNet, it depends on ncnn library

FeiGeChuanShu 93 Dec 31, 2022
Real-Time Neural 3D Hand Pose Estimation from an Event Stream [ICCV 2021]

EventHands: Real-Time Neural 3D Hand Pose Estimation from an Event Stream Project Page Index TRAIN.md -- how to train the model from scratch EVAL_REAL

null 23 Nov 7, 2022
HybridPose: 6D Object Pose Estimation under Hybrid Representation (CVPR 2020)

HybridPose: 6D Object Pose Estimation under Hybrid Representations This repository contains authors' implementation of HybridPose: 6D Object Pose Esti

SONG, Chen 358 Nov 22, 2022
A simple ros wrapper for apriltag-cpp

Ros wrapper for apriltags-cpp Ros wrapper of the APRIL tags library, using OpenCV (and optionally, CGAL). Requirements Currently, apriltags-cpp requir

Robot Perception & Navigation Group (RPNG) 6 Dec 30, 2021
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation

Build Type Linux MacOS Windows Build Status OpenPose has represented the first real-time multi-person system to jointly detect human body, hand, facia

null 25.6k Dec 29, 2022
PointPillars MultiHead 40FPS - A REAL-TIME 3D detection network [Pointpillars] compiled by CUDA/TensorRT/C++.

English | 简体中文 PointPillars High performance version of 3D object detection network -PointPillars, which can achieve the real-time processing (less th

Yan haixu 191 Jan 3, 2023
HugeCTR is a GPU-accelerated recommender framework designed to distribute training across multiple GPUs and nodes and estimate Click-Through Rates (CTRs)

Merlin: HugeCTR HugeCTR is a GPU-accelerated recommender framework designed to distribute training across multiple GPUs and nodes and estimate Click-T

null 764 Jan 2, 2023
YOLOv4 accelerated wtih TensorRT and multi-stream input using Deepstream

Deepstream 5.1 YOLOv4 App This Deepstream application showcases YOLOv4 running at high FPS throughput! P.S - Click the gif to watch the entire video!

Akash James 35 Nov 10, 2022
Visual odometry package based on hardware-accelerated NVIDIA Elbrus library with world class quality and performance.

Isaac ROS Visual Odometry This repository provides a ROS2 package that estimates stereo visual inertial odometry using the Isaac Elbrus GPU-accelerate

NVIDIA Isaac ROS 339 Dec 28, 2022
ROS2 packages based on NVIDIA libArgus library for hardware-accelerated CSI camera support.

Isaac ROS Argus Camera This repository provides monocular and stereo nodes that enable ROS developers to use cameras connected to Jetson platforms ove

NVIDIA Isaac ROS 35 Dec 10, 2022
We implemented our own sequential version of GA, PSO, SA and ACA using C++ and the parallelized version with CUDA support

We implemented our own sequential version of GA, PSO, SA and ACA using C++ (some using Eigen3 as matrix operation backend) and the parallelized version with CUDA support. All of them are much faster than the popular lib scikit-opt.

Aron751 4 May 7, 2022
A lightweight 2D Pose model can be deployed on Linux/Window/Android, supports CPU/GPU inference acceleration, and can be detected in real time on ordinary mobile phones.

A lightweight 2D Pose model can be deployed on Linux/Window/Android, supports CPU/GPU inference acceleration, and can be detected in real time on ordinary mobile phones.

JinquanPan 58 Jan 3, 2023