Linux |
---|
OpenPose represents the first real-time multi-person system to jointly detect human body, hand, and facial keypoints (in total 135 keypoints) on single images.
- Functionality:
- 2D real-time multi-person keypoint detection:
- 15 or 18 or 25-keypoint body/foot keypoint estimation. Running time invariant to number of detected people.
- 2x21-keypoint hand keypoint estimation. Currently, running time depends on number of detected people.
- 70-keypoint face keypoint estimation. Currently, running time depends on number of detected people.
- 3D real-time single-person keypoint detection:
- 3-D triangulation from multiple single views.
- Synchronization of Flir cameras handled.
- Compatible with Flir/Point Grey cameras, but provided C++ demos to add your custom input.
- Calibration toolbox:
- Easy estimation of distortion, intrinsic, and extrinsic camera parameters.
- Single-person tracking for further speed up or visual smoothing.
- 2D real-time multi-person keypoint detection:
- Input: Image, video, webcam, Flir/Point Grey and IP camera. Included C++ demos to add your custom input.
- Output: Basic image + keypoint display/saving (PNG, JPG, AVI, ...), keypoint saving (JSON, XML, YML, ...), and/or keypoints as array class.
- OS: Ubuntu (14, 16), Windows (8, 10), Mac OSX, Nvidia TX2.
- Others:
- Available: command-line demo, C++ wrapper, and C++ API.
- CUDA (Nvidia GPU), OpenCL (AMD GPU), and CPU versions.
- Sep 2018: Experimental single-person tracker for further speed up or visual smoothing!
- Jun 2018: Combined body-foot model released! 40% faster and 5% more accurate!
- Jun 2018: Python API released!
- Jun 2018: OpenCL/AMD graphic card version released!
- Jun 2018: Calibration toolbox released!
- Jun 2018: Mac OSX version (CPU) released!
- Mar 2018: CPU version!
- Mar 2018: 3-D keypoint reconstruction module (from multiple camera views)!
For further details, check all released features and release notes.
Windows portable version: Simply download and use the latest version from the Releases section.
Otherwise, check doc/installation.md for instructions on how to build OpenPose from source.
Most users do not need the OpenPose C++ API, but they can simply use the basic Demo and/or OpenPose Wrapper.
- Demo: To easily process images/video/webcam and display/save the results. See doc/demo_overview.md. E.g. run OpenPose in a video with:
# Ubuntu
./build/examples/openpose/openpose.bin --video examples/media/video.avi
:: Windows - Portable Demo
bin\OpenPoseDemo.exe --video examples\media\video.avi
-
Calibration toolbox: To easily calibrate your cameras for 3-D OpenPose or any other stereo vision task. See doc/modules/calibration_module.md.
-
OpenPose Wrapper: If you want to read a specific input, and/or add your custom post-processing function, and/or implement your own display/saving, check the
Wrapper
tutorial on examples/tutorial_wrapper/. You can create your custom code on examples/user_code/ and quickly compile it with CMake when compiling the whole OpenPose project. Quickly add your custom code: See examples/user_code/README.md for further details. -
OpenPose C++ API: See doc/library_introduction.md.
-
Adding an extra module: Check doc/library_add_new_module.md.
-
Standalone face or hand detector:
- Face keypoint detection without body keypoint detection: If you want to speed it up (but also reduce amount of detected faces), check the OpenCV-face-detector approach in doc/standalone_face_or_hand_keypoint_detector.md.
- Use your own face/hand detector: You can use the hand and/or face keypoint detectors with your own face or hand detectors, rather than using the body detector. E.g. useful for camera views at which the hands are visible but not the body (OpenPose detector would fail). See doc/standalone_face_or_hand_keypoint_detector.md.
-
Library dependencies: OpenPose uses default Caffe and OpenCV, as well as any Caffe dependency. The demos additionally use GFlags. It could easily be ported to other deep learning frameworks (Tensorflow, Torch, ...). Feel free to make a pull request if you implement any of those!
Output (format, keypoint index ordering, etc.) in doc/output.md.