OpenPose: Real-Time Multi-Person Keypoint Detection

Subscribe

OpenPose: Real-Time Multi-Person Keypoint Detection

The OpenPose library uses neural networks to perform real-time human body pose estimation for single- and multi-person video analysis.

Subscribe to the viso blog

Stay connected with viso.ai and receive new blog posts straight to your inbox.
Subscribe

OpenPose was the first system to jointly detect human body, foot, face, and hand keypoints on a single image, and it remains one of the most widely cited pieces of software in the pose estimation literature. The OpenPose library made real-time multi-person analysis practical at a point when most methods still assumed one subject per frame.

This guide covers what the library actually outputs, how its two-branch architecture assembles skeletons without a person detector, how it compares to top-down alternatives, and where keypoint detection now sits inside agentic computer vision systems. It also covers the constraints that matter if you are choosing a pose detection stack today rather than in 2019.

What Is OpenPose?

OpenPose is an open-source library for real-time multi-person keypoint detection, developed at Carnegie Mellon University’s Perceptual Computing Lab. Given one input image, it returns up to 135 keypoints per person across four groups: body and foot, face, left hand, and right hand. The method won the 2016 keypoint challenge on the COCO dataset and established the bottom-up approach as competitive with detector-first pipelines.

The library was authored by Ginés Hidalgo, Zhe Cao, Tomas Simon, Shih-En Wei, Yaadhav Raaj, Hanbyul Joo, and Yaser Sheikh, and is maintained by Hidalgo and Raaj. Its training data came in large part from the CMU Panoptic Studio, a multi-camera dome that allowed the team to bootstrap 3D annotations from hundreds of synchronized views.

The core outputs are:

  • Body pose and foot: 15, 18, or 25 keypoints, with the 25-point model adding six foot keypoints
  • Hand keypoint estimation: 21 points per hand, so 42 across both
  • Face: 70 keypoints covering jawline, brows, eyes, nose, and mouth
  • Formats: rendered overlays plus keypoint arrays exportable as JSON, XML, or YML

OpenPose runtime is invariant to the number of people detected for body and foot estimation. Face and hand keypoint stages do scale with headcount, which is the practical bottleneck in crowded scenes.

OpenPose for JiuJitsu
Bottom-up keypoint detection keeps inference cost flat as the number of people in frame rises, which is why the approach suits fixed cameras watching busy areas rather than single-subject capture.

 

Computer Vision Builder

Bring a new AI vision application to life.

Turn ideas into computer vision apps — no coding needed.

How OpenPose Works

OpenPose passes the input image through the first layers of a convolutional neural network to extract a shared feature map. Those features then feed two parallel branches. The first predicts confidence maps, one per body part, indicating where each anatomical landmark is likely to sit. The second predicts Part Affinity Fields, or PAFs, which are 2D vector fields encoding the position and orientation of each limb.

PAFs are what let the library skip person detection entirely. Rather than cropping each individual and running single-person estimation inside the box, OpenPose scores every candidate connection between detected parts against the corresponding affinity field, then resolves the assignment as a set of bipartite matching problems. Weak connections are pruned, and the surviving links assemble into one skeleton per person.

  1. Accept the full frame as input, whether from images and video or a live stream
  2. Predict part confidence maps and Part Affinity Fields in two parallel branches
  3. Refine both predictions across successive network stages
  4. Score candidate limb connections using PAF line integrals
  5. Solve bipartite matching to group parts, then assemble full-body poses

The full formulation is set out in the TPAMI paper on real-time multi-person 2D pose estimation using Part Affinity Fields. The face and hand detectors were trained separately using the multiview bootstrapping procedure described in Hand Keypoint Detection in Single Images using Multiview Bootstrapping.

What OpenPose Detects

Body Pose and Foot Keypoints

The BODY_25 configuration is the default and the most useful of the three body models. Beyond the standard torso and limb joints, it adds six foot keypoints covering heel and toe positions on each side. That addition matters more than it sounds: ankle-only skeletons cannot distinguish a flat stance from a heel strike, so gait analysis, balance assessment, and ladder or step compliance checks all depend on those extra points.

Face and Hand Keypoints

Face and hand estimation run as separate refinement stages on regions derived from the body skeleton. Because the hand detector was trained through multiview bootstrapping rather than manual annotation, it handles self-occlusion better than its training set size would suggest. The tradeoff is runtime, since both stages are invoked per person rather than once per frame.

3D Pose Reconstruction

OpenPose supports real-time single-person 3D pose estimation by triangulating 2D detections from multiple calibrated views. It ships a calibration toolbox for estimating intrinsic, extrinsic, and distortion parameters, and it handles synchronization for Flir and Point Grey camera arrays. There is no monocular 3D pose module, so recovering depth from one viewpoint requires either a multi-camera rig or a separate monocular depth estimation model.

OpenPose for Physical Therapy
Triangulating 3D pose from calibrated views avoids the scale ambiguity inherent to single-camera setups, at the cost of the calibration discipline that multi-camera installations demand.

Hardware, Inputs, and Deployment

OpenPose accepts a broad range of sources, which is part of why it spread so quickly through research labs and prototype builds.

  • Image files, video files, and webcams
  • Flir and Point Grey industrial cameras
  • IP and CCTV streams
  • Custom input sources, including depth cameras and stereo lens rigs

On the compute side, the library supports CUDA for Nvidia GPUs, OpenCL for AMD, and a CPU-only build. It runs on Ubuntu, Windows, macOS, and the Nvidia Jetson family. The CPU path is slow enough that most teams treat it as a correctness check rather than a deployment target.

For constrained hardware, the community-maintained lightweight variant reimplements the approach with a smaller backbone and achieves usable frame rates on CPU with a modest accuracy penalty. That variant is the more realistic option when edge computing constraints rule out a discrete GPU at every camera, and it is a common starting point for teams building video analytics on existing camera estate.

OpenPose vs. Alpha-Pose vs. Mask R-CNN

The three libraries represent genuinely different design decisions, and the right choice depends on how many people you expect in frame.

Property OpenPose Alpha-Pose (RMPE) Mask R-CNN
Approach Bottom-up, parts then grouping Top-down, detect then estimate Detection and segmentation with a keypoint head
Runtime vs. headcount Constant for body and foot Grows linearly Grows linearly
Keypoint coverage Body, foot, face, both hands Body, with extensions Body keypoints plus instance masks
Best suited to Crowded scenes, fixed cameras Few subjects, accuracy priority Pipelines already needing segmentation

Alpha-Pose addresses the weakness of top-down methods, namely that pose quality is capped by the quality of the person detector. It introduces a symmetric spatial transformer network to recover a clean person region from an imprecise bounding box, a single-person pose estimator that operates on that region, and a parametric non-maximum suppression step to discard redundant pose proposals. The result is strong accuracy when subject count is low.

Mask R-CNN extracts feature maps, proposes regions, aligns them to a fixed size, then branches into box, mask, and keypoint predictions. If your system already performs instance segmentation, adding a keypoint head is cheaper than running a second library. For a broader comparison across methods, see our overview of human pose estimation with deep learning and the related work on DensePose.

OpenPose for Welding
Top-down methods inherit the failure modes of their person detector, so a missed detection in an occluded scene removes that person’s pose entirely rather than degrading it.

Where Keypoints Fit in Agentic Computer Vision

Raw pixels are a poor interface for reasoning systems. Keypoints are a good one. A skeleton is a compact, structured description of what a body is doing, which makes pose detection a natural perception layer beneath agentic computer vision systems that plan and act rather than simply classify.

The pattern is straightforward in practice. A keypoint model converts each frame into a small set of coordinates and confidence scores. Downstream logic, increasingly a vision language model or a rules engine driven by one, reasons over that representation to answer questions an operator actually asks. Was anyone within two meters of the press while it cycled? Did that lift use three points of contact? Those questions require action localization in time as well as space, and joint geometry is what makes them answerable.

This division of labor also helps with privacy. Discarding frames after keypoint extraction leaves a representation that supports safety and ergonomics analysis without retaining identifiable imagery, which is a meaningful advantage over storing raw video for later review.

Limitations to Weigh Before Building

OpenPose’s historical importance is not in question. Its suitability for a new production deployment is a separate matter.

  • Licensing. The library is free for non-commercial use and redistribution. Commercial use requires a paid license negotiated through CMU’s technology transfer office, which is a hard gate for product work.
  • Maintenance cadence. The most recent tagged release, v1.7.0, dates to November 2020. The repository still accepts issues, but the codebase has not tracked recent framework changes.
  • Build complexity. The Caffe dependency and CMake build make installation notably harder than pip-installable alternatives.
  • No identity persistence. Single-person tracking exists for smoothing, but there is no re-identification across occlusions, so multi-person tracking needs a separate component.
  • Occlusion and truncation. Bottom-up grouping can merge parts across adjacent people in dense crowds, a failure mode worth measuring against your own footage using standard model performance metrics.

Newer lightweight models and the pose variants of modern object detection families now cover much of the same ground with permissive licenses and simpler deployment. OpenPose remains the reference implementation to understand, and often the right choice for research, but the commercial calculus has shifted.