README.md

    Default Config CUDA (+Python) CPU (+Python) OpenCL (+Python) Debug Unity
    Linux Status Status Status Status Status Status
    MacOS Status Status Status Status Status
    Windows Status

    OpenPose has represented the first real-time multi-person system to jointly detect human body, hand, facial, and foot keypoints (in total 135 keypoints) on single images.

    It is authored by Gines Hidalgo, Zhe Cao, Tomas Simon, Shih-En Wei, Hanbyul Joo, and Yaser Sheikh, and maintained by Gines Hidalgo and Yaadhav Raaj. OpenPose would not be possible without the CMU Panoptic Studio dataset. We would also like to thank all the people who helped OpenPose in any way (doc/contributors.md).


    Authors Gines Hidalgo (left) and Hanbyul Joo (right) in front of the CMU Panoptic Studio

    Contents

    1. Results
    2. Features
    3. Related Work
    4. Installation
    5. Quick Start
    6. Send Us Feedback!
    7. Citation
    8. License

    Results

    Body and Foot Estimation


    Testing the Crazy Uptown Funk flashmob in Sydney video sequence with OpenPose

    3D Reconstruction Module (Body, Foot, Face, and Hands)


    Testing the 3D Reconstruction Module of OpenPose

    Body, Foot, Face, and Hands Estimation


    Authors Gines Hidalgo (left image) and Tomas Simon (right image) testing OpenPose

    Unity Plugin


    Tianyi Zhao and Gines Hidalgo testing the OpenPose Unity Plugin

    Runtime Analysis

    We show an inference time comparison between the 3 available pose estimation libraries (same hardware and conditions): OpenPose, Alpha-Pose (fast Pytorch version), and Mask R-CNN. The OpenPose runtime is constant, while the runtime of Alpha-Pose and Mask R-CNN grow linearly with the number of people. More details here.

    Features

    • Main Functionality:
      • 2D real-time multi-person keypoint detection:
        • 15, 18 or 25-keypoint body/foot keypoint estimation, including 6 foot keypoints. Runtime invariant to number of detected people.
        • 2x21-keypoint hand keypoint estimation. Runtime depends on number of detected people. See OpenPose Training for a runtime invariant alternative.
        • 70-keypoint face keypoint estimation. Runtime depends on number of detected people. See OpenPose Training for a runtime invariant alternative.
      • 3D real-time single-person keypoint detection:
        • 3D triangulation from multiple single views.
        • Synchronization of Flir cameras handled.
        • Compatible with Flir/Point Grey cameras.
      • Calibration toolbox: Estimation of distortion, intrinsic, and extrinsic camera parameters.
      • Single-person tracking for further speedup or visual smoothing.
    • Input: Image, video, webcam, Flir/Point Grey, IP camera, and support to add your own custom input source (e.g., depth camera).
    • Output: Basic image + keypoint display/saving (PNG, JPG, AVI, ...), keypoint saving (JSON, XML, YML, ...), keypoints as array class, and support to add your own custom output code (e.g., some fancy UI).
    • OS: Ubuntu (20, 18, 16, 14), Windows (10, 8), Mac OSX, Nvidia TX2.
    • Hardware compatibility: CUDA (Nvidia GPU), OpenCL (AMD GPU), and non-GPU (CPU-only) versions.
    • Usage Alternatives:
      • Command-line demo for built-in functionality.
      • C++ API and Python API for custom functionality. E.g., adding your custom inputs, pre-processing, post-posprocessing, and output steps.

    For further details, check all released features and release notes.

    Related Work

    Installation

    If you want to use OpenPose without compiling or writing any code, simply download and use the latest Windows portable version of OpenPose! Otherwise, you can also build OpenPose from source.

    See doc/installation/README.md for more details.

    Quick Start

    Most users do not need to know C++ or Python, they can simply use the OpenPose Demo in their command-line tool (e.g., PowerShell/Terminal). E.g., this would run OpenPose on the webcam and display the body keypoints:

    # Ubuntu
    ./build/examples/openpose/openpose.bin
    :: Windows - Portable Demo
    bin\OpenPoseDemo.exe --video examples\media\video.avi

    You can also add any of the available flags in any order. Do you also want to add face and/or hands? Add the --face and/or --hand flags. Do you also want to save the output keypoints on JSON files on disk? Add the --write_json flag, etc.

    # Ubuntu
    ./build/examples/openpose/openpose.bin --video examples/media/video.avi --face --hand --write_json output_json_folder/
    :: Windows - Portable Demo
    bin\OpenPoseDemo.exe --video examples\media\video.avi --face --hand --write_json output_json_folder/

    After installing OpenPose, check doc/README.md for a quick overview of all the alternatives and tutorials.

    Send Us Feedback!

    Our library is open source for research purposes, and we want to continuously improve it! So let us know if you...

    1. Find any bug (in functionality or speed).
    2. Add some functionality on top of OpenPose which we might want to add.
    3. Know how to speed up or improve any part of OpenPose.
    4. Want to share your cool demo or project made on top of OpenPose (you can email it to us too!).

    Just create a new GitHub issue or a pull request and we will answer as soon as possible!

    Citation

    Please cite these papers in your publications if it helps your research. All of OpenPose is based on OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields, while the hand and face detectors also use Hand Keypoint Detection in Single Images using Multiview Bootstrapping (the face detector was trained using the same procedure than the hand detector).

    @article{8765346,
      author = {Z. {Cao} and G. {Hidalgo Martinez} and T. {Simon} and S. {Wei} and Y. A. {Sheikh}},
      journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence},
      title = {OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields},
      year = {2019}
    }
    
    @inproceedings{simon2017hand,
      author = {Tomas Simon and Hanbyul Joo and Iain Matthews and Yaser Sheikh},
      booktitle = {CVPR},
      title = {Hand Keypoint Detection in Single Images using Multiview Bootstrapping},
      year = {2017}
    }
    
    @inproceedings{cao2017realtime,
      author = {Zhe Cao and Tomas Simon and Shih-En Wei and Yaser Sheikh},
      booktitle = {CVPR},
      title = {Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields},
      year = {2017}
    }
    
    @inproceedings{wei2016cpm,
      author = {Shih-En Wei and Varun Ramakrishna and Takeo Kanade and Yaser Sheikh},
      booktitle = {CVPR},
      title = {Convolutional pose machines},
      year = {2016}
    }

    Paper links:

    License

    OpenPose is freely available for free non-commercial use, and may be redistributed under these conditions. Please, see the license for further details. Interested in a commercial license? Check this FlintBox link. For commercial queries, use the Contact section from the FlintBox link and also send a copy of that message to Yaser Sheikh.

    项目简介

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/CMU-Perceptual-Computing-Lab/openpose

    发行版本

    当前项目没有发行版本

    贡献者 88

    全部贡献者

    开发语言

    • C++ 88.8 %
    • Cuda 5.6 %
    • CMake 3.8 %
    • Shell 1.8 %
    • HCL 0.1 %