DWPose
Evaluate DWPose as a pose preprocessor: separate detection, keypoint mapping, rendered pose maps and downstream generation before judging a character-reference workflow.
At a glance
- Input
- A reference image for person detection and whole-body pose estimation, plus the exact detector and pose checkpoint pair used by the chosen path.
- Output
- Raw pose coordinates and, in the reviewed integration, a rendered body, hand and face map for a downstream workflow.
- Access
- The official ONNX branch documents separate code paths and model files. Use the reviewed official artifacts rather than assuming a mirror has the same contents or license.
- Who it fits
- Technical artists and developers who need a diagnosable pose-preprocessing stage before image generation.
- When to choose something else
- Choose another workflow when you need measured 3D motion or a finished generated image. DWPose's estimated image coordinates and pose guide do not establish either result.
- Cost and access conditions
- Measure person detection, pose estimation and drawing separately from the later image generation and manual correction. No end-to-end frame rate or hardware minimum was tested here.
Key Highlights
Detection and pose estimation are separate stages
The inspected ONNX path detects people before running pose estimation. Diagnose the selected person and bounding region before blaming keypoint quality.
Raw keypoints are not the rendered pose map
The reviewed wrapper filters and remaps keypoints before drawing the body, hands and face. Its drawing omits the separately computed foot points, so a whole-body estimate does not mean every point appears in the guide image.
The reviewed preprocessor package is Apache 2.0
The official repository code and the exact named ONNX detector and pose files in the reviewed official model repository declare Apache 2.0. Downstream generators, wrappers, inputs and outputs require separate review.
About
On this page
DWPose estimates human body, hand, face and foot keypoints from an image. In an image-generation workflow, its useful role is to supply pose information to another system; it does not itself turn a prompt into a finished character. Evaluate it when you need a pose reference you can inspect and debug, especially when a plausible generated image might hide an incorrect hand, missing person or reversed joint.
This guide is a source-based review of the research project and its official ONNX integration, checked on September 10, 2026. No pose inference, timing benchmark or generated-image comparison was run for this article. The example below is a proposed evaluation, not a successful test report.
Reviewed source revisions: code 3dca5db7, model card 1a714410.
Understand which part of the workflow DWPose owns
The DWPose paper describes whole-body pose estimation and a two-stage distillation method used to train the estimators. Those training stages should not be confused with two inference steps that a user must run on every photograph. The project releases multiple model sizes; the name alone does not identify one universal parameter count or speed. DWPose research paper.
For practical troubleshooting, separate four artifacts: the input image, the detected people and keypoints, the pose representation sent downstream, and the final generated picture. Save each one during evaluation. If the pose map is wrong, changing the text prompt is unlikely to explain the original error. If the map is correct but the generated picture ignores it, the next investigation belongs downstream.
This distinction is particularly useful for character references. Suppose an illustrator wants a figure holding a small box across the torso. The hands overlap the object, one elbow is partly hidden, and a second person appears at the edge of the photograph. A convincing costume or face in the final output does not prove the intended pose was transferred. Decide which person and which joints matter before judging the image's overall appeal.
DWPose is not a substitute for a measured three-dimensional rig, a motion-capture system or a task-specific safety assessment. Do not infer those capabilities from a skeleton visualization. A pose preprocessor can be useful without supporting every application that uses the word “pose.”
Keep raw coordinates separate from the drawn map
In the official ONNX example, the whole-body wrapper first invokes a person detector and then a pose estimator. It also synthesizes a neck location and remaps indices for its OpenPose-style representation. A consumer expecting the raw research ordering must therefore check the actual interface instead of assuming that every exported array has the same meaning. Whole-body wrapper.
The drawing wrapper normalizes coordinates and suppresses low-confidence points before rendering body, hand and face information. Its final return value is a raster pose image, not the full original keypoint array. The code calculates a foot slice but does not include that slice in the pose dictionary passed to the drawing function. This is a concrete reason not to promise that a ControlNet preview displays every raw whole-body keypoint. Pose-map implementation.
Before connecting your own consumer, write down what it expects: image or coordinates, pixel or normalized units, person ordering, joint ordering, and handling of missing values. Check a recognizable point against the source image. A left wrist that appears on the correct side of a preview can still be mislabeled in a custom numeric export.
If you need structured coordinates, use an interface that actually exposes them and preserve confidence or missing-point information. Do not recover precise coordinates by reading colors back out of a compressed screenshot. That would add another lossy conversion and make debugging much harder.
Choose one installation path and record its dependencies
The repository distinguishes the research environment used with MMPose from its ControlNet integration. Its ONNX branch provides a route that avoids the full MMPose installation for that integration, and points to a separate OpenCV-based branch. These are distinct paths, not a list of packages that every user should install together. Installation instructions.
For the documented ONNX example, both the person-detection checkpoint and the pose checkpoint matter. Saving only a pose-model filename leaves part of the pipeline unspecified. Keep the repository commit, branch, both checkpoint identifiers, runtime provider, image preprocessing and downstream model version together in a run record. Official ONNX example.
Read device selection in the code you are actually running. The reviewed wrapper selects CUDA in its constructor; the existence of a CPU branch in an expression is not proof that an unchanged checkout will choose CPU automatically on your machine. A community node may behave differently, which is another reason to identify the wrapper rather than describe all DWPose integrations as interchangeable.
Use an isolated environment for a trial and keep its dependency record. Old tutorial pins may be useful for reproducing an old setup, but they do not establish compatibility with your current graphics drivers or application. We have not installed these environments here, so this guide does not certify a particular operating system or GPU combination.
Resolve rights for the whole pipeline
The DWPose repository code carries an Apache 2.0 licence. The project's official README also directs users to the yzd-v/DWPose Hugging Face repository for its models. At the immutable revision reviewed here, that model repository declares Apache 2.0 and contains the exact ONNX pair named by the official example: yolox_l.onnx for person detection and dw-ll_ucoco_384.onnx for pose estimation. Repository licence. Immutable model-card licence.
That evidence supports the reviewed official code and those two checkpoint files. It is not blanket clearance for a renamed mirror, derivative checkpoint, ControlNet or Stable Diffusion model, wrapper, hosted service, source photograph or generated output. Retain required notices when redistributing covered material, verify downloaded artifacts against the reviewed source, and inspect the separate terms attached to every other component.
For the character-reference scenario, record who supplied the photograph and whether the intended transformation and publication are permitted. A pose representation does not erase obligations associated with the source. Avoid presenting generated people as real customers, employees or endorsers, and do not assume that using only skeletal information automatically resolves privacy or likeness concerns.
If a commercial deployment substitutes another checkpoint or depends on another component whose terms are unclear, stop that deployment decision until the terms are resolved. The Apache 2.0 declaration for the reviewed official pair must not be transferred to a different file because it has a similar name or appears beside a download button. This article is not legal advice and does not grant permission for an assembled pipeline.
Design a pose test that can fail usefully
Use the box-holding reference as a deliberately limited test case. Mark the intended person and the essential relationships: which hand supports the box, whether the elbows cross the torso, and where the shoulders face. Keep a second image with an uncomplicated pose as a control. These are hypothetical evaluation inputs, not images we have processed.
Record the reference image dimensions and every crop or resize. Preserve the full input alongside any person crop, because a tighter crop changes the evidence available to the detector. If your eventual workflow contains multiple people, include that situation in the sample; a single isolated figure cannot validate person selection or ordering.
First inspect detection and the pose map without generating an image. Compare visible joints with the reference and mark ambiguous or occluded parts as uncertain. Do not score a plausible guess as a verified anatomical location when the source does not reveal it. Save the map that will actually be supplied to the next model, not a different debug preview.
Only after this stage is acceptable should you test the downstream generator. Keep its prompt, seed, model, conditioning settings and output dimensions fixed while changing one relevant input. Otherwise a nicer output could result from a different seed or checkpoint rather than a better pose estimate.
Apply a four-stage acceptance sheet
This worksheet is an original proposal for the illustrator's workflow. It intentionally separates pose correctness from visual style. Fill it with your own observations and retain rejected examples.
| Stage | Question to answer | Evidence that supports acceptance |
|---|---|---|
| Person selection | Is the intended person represented, without merging the edge-of-frame figure into the pose? | Marked source image and corresponding detection or pose output. |
| Joint placement | Do visible shoulders, elbows and wrists match the required gesture? | Side-by-side reference with uncertain or hidden joints identified rather than guessed. |
| Representation handoff | Does the downstream consumer receive the intended map or coordinate format? | Saved artifact, dimensions, index/coordinate convention and a checked import. |
| Generated result | Does the final character preserve the gesture under the fixed generation setup? | Output compared against the predefined hand, elbow and torso relationships. |
A stage can pass while the next fails. Keep that result rather than compressing everything into one quality score. For example, a correctly detected wrist followed by an incorrectly rendered hand is a different failure from a wrist missing before generation begins. The fixes, and the evidence needed to verify them, are different.
Set an editing budget before the trial. If a person can correct a small number of joints quickly, a semi-manual workflow may meet the brief. If every reference needs extensive reconstruction, the same system may be unsuitable for that workload. Record correction time and rejected inputs, not only successful generations.
Investigate errors at the earliest visible stage
The following are diagnostic hypotheses, not measured failure rates for DWPose. Use the saved intermediate artifacts to decide which explanation fits your case.
| Symptom | First check | Next controlled action |
|---|---|---|
| The intended person is absent | Whether the detector found that person in the actual processed input. | Compare the full frame and a deliberate crop, preserving both results. |
| A hand is missing in the map | Visibility, scale and confidence suppression before drawing. | Inspect the source crop and raw values if the interface exposes them; do not immediately change the generator. |
| Left and right appear exchanged | Joint-index mapping and coordinate conventions at export/import. | Trace one unambiguous joint through the conversion and compare it with the source. |
| The map looks right but the output gesture changes | Conditioning input, supported format and downstream settings. | Repeat with the same generator configuration and a known acceptable pose map. |
| Video poses flicker between frames | Per-frame detections, occlusion and person association. | Inspect adjacent maps before claiming the issue is solved by image-generation settings. |
For video, do not equate repeated still-image inference with validated tracking. Decide whether your application requires stable identity, smooth trajectories or merely independent pose maps. Those requirements need explicit tests beyond a single frame, and no such sequence test was performed for this review.
Compare total correction cost, not a headline frame rate
Time the stages separately: image preparation, person detection, pose estimation, drawing or export, and any downstream generation. Record initialization separately from warm inference. Also record which hardware and runtime provider were actually used. A frame-rate claim without these boundaries cannot tell a technical artist how long a usable reference will take.
Larger input regions, different model variants and a changed detector can alter the workload. Instead of assuming that the largest model is always the right choice, compare candidates on the same essential joints and correction budget. The paper's benchmark measures a defined research task; it does not certify your wrapper's latency or your generated character's hand quality.
If exact pose authorship matters more than automatic extraction, a manually edited pose or a controlled rig may be the more direct starting point. If temporal identity is central, evaluate a workflow that explicitly handles tracking. If the source is too ambiguous to establish the gesture, obtaining a clearer reference may be more useful than repeated parameter changes.
The next decision is narrow: can your chosen DWPose implementation supply the required pose representation with acceptable correction work? Answer that before claiming success for the complete image pipeline. The model directory can help you explore other categories, but no cross-model ranking or universal replacement claim is made here.
Use Cases
Pose-map preprocessing for a controlled image workflow
Use one reference, identify the intended person and visible joint relationships, then inspect detection, raw points, rendered map and downstream image as four separate stages.
Fault isolation before manual correction
A technical artist can compare the earliest failing representation with the reference and decide whether to adjust detection, mapping, the rendered guide or the downstream generator.
Pros & Cons
Pros
- The inspected implementation makes the detector and pose-estimator stages separately identifiable.
- The pose estimator returns coordinates and confidence scores before the drawing wrapper creates the guide image.
- The reviewed official code and exact ONNX checkpoint repository declare Apache 2.0.
Cons
- A correct pose map does not guarantee that a downstream image generator will follow it.
- Low-confidence suppression, remapping and drawing choices can make the visible map differ from raw whole-body output.
- The inspected wrapper contains CUDA-specific behavior and does not prove compatibility or speed for every integration.
Technical Details
Architecture
RTMPose-based whole-body pose estimation
License
Apache 2.0 official DWPose code and ONNX checkpoints
Apache 2.0 covers the reviewed official DWPose code and ONNX detector/pose files. This preprocessor classification does not grant rights for downstream generators, other wrappers, inputs or outputs. License source
Available Platforms
Frequently Asked Questions
Related Models
Quick Info
RTMPose-based whole-body pose estimation