Box no tell Ugg what body do
Box round person say "person here." Box no say person dance, fight, lift mug, fall. The doing live in the BODY — where arm, leg, head sit. So Ugg do pose estimation: look at picture, guess where all body joints and limbs are — then read the dance, capture motion, animate cave-avatar. First big fire sold to tribe: Kinect (Xbox, 2010) read body from depth-picture with random forests.
Four ways Ugg draw a body
Small detail to big:
Skeleton (keypoints) — fixed list of dots, each a spot (or with confidence-grunt). COCO use 17 dots (nose, eyes, ears, shoulders, elbows, wrists, hips, knees, ankles). Output numbers. Simplest, most common.
DensePose — not just dots: paint EVERY body-pixel with where it live on one standard body-skin (wrap flat map round a 3D body). Good for try-clothes magic.
Body mesh (SMPL) — full 3D shell. SMPL = template of stone-dots (vertices) + two knobs: shape (tall/short, wide/thin) and pose ( joints twist-numbers). Give , it build the exact posed body — same every time, smooth to nudge.
Foundation model (Sapiens) — Meta 2024. One giant eye-brain (ViT backbone) fed 300M+ people-pictures, then small heads read pose, cut-out, depth, and surface-slope all at once.
Why "just guess the numbers" break
Lazy way: picture CNN one 2048 feature-stick line-layer numbers, train L2 on . Ugg warn: this BREAK, four reasons:
1. L2 in pixel-land brutal — 5-pixel miss on tiny picture punished same as on huge picture. Bumpy loss-ground. 2. No spatial thinking — CNN squash whole picture to one stick first; the 2D shape smashed, but pose IS a place-problem. 3. No maybe — one point out; arm could be front OR back, so model average the two nonsense middle. 4. No hide-handle — joint behind rock forces a made-up lie.
Fix: do not guess numbers — draw heatmaps.
The heatmap fire
For each joint draw a heatmap where = chance joint sit at pixel . Truth-map = soft Gaussian glow round the real spot:
Hot at true joint, fade as you walk away; = glow width. Loss match Ugg map to glow pixel by pixel:
Read joint = brightest pixel: . Argmax land on whole pixels only — sharpen with parabola-fit on top pixel + 2 neighbours (peak at ) or smooth softargmax for sub-pixel. Now Ugg keep the 2D shape, show many-peak maybe, get gradient everywhere, and hidden joint just glow dim (low confidence). This flip — numbers to dense map — made pose work.
Ugg sharpen map over many fires (CPM)
Convolutional Pose Machine (CPM) refine belief-maps over stages. Stage 1: picture CNN map. Stage : (picture-features + old map) CNN better map. Each later stage see wider (bigger receptive field), so it use far-apart logic: "head here neck just below shoulders likely there." Feed each stage the truth-glow too — intermediate supervision — so gradient no vanish down the deep chain. typical.
Ugg score the hunt (PCK)
PCK (Percentage of Correct Keypoints) — joint "correct" if close to truth:
NORMALISE by body size, else 5-pixel miss on giant person vs far-tiny person mean different thing. PCKh@0.5: threshold head-bone length (MPII). PCK@0.2: torso width (FLIC). Higher better, near 100% is target. Head-bone chosen because torso squash short when person sit; head stay steady.
Many people, two hunt-styles
Troubles: unknown how many (1 or 50), people tangle and hide each other, and runtime should not blow up with the crowd.
OpenPose (bottom-up) — picture CNN two branches. Branch 1: keypoint heatmaps, ALL joints of ALL people at once (a soup: 7 shoulders, 6 elbows, 9 wrists...). Branch 2: Part Affinity Fields (PAF) — per limb-type a 2D arrow-field; along the limb each pixel hold a unit arrow pointing down the limb, zero elsewhere. To join joint to , walk the line and add up arrow-agree:
Big sum = real limb links them. Then Hungarian matching pair joints into clean skeletons. Channels out (K maps + 2 per limb): 18 joints + 19 limbs . Runtime near-flat with crowd — joint-finding is fixed cost, only matching grow.
Mask R-CNN keypoints (top-down) — first find each person box (Faster R-CNN), then run single-person pose on each crop via a keypoint-head giving a heatmap per joint. Runtime grow with people, .
Trade-off: top-down = sharper per person but brittle (miss box = miss pose), good for few-people precision (golf swing on a launch monitor). Bottom-up = looser per person, robust to misses, near-flat runtime good for crowd real-time (30 fps on phone).
Flat picture to fat 3D (SMPL + HMR)
SMPL turn into a mesh by linear blend skinning — each stone-dot pulled by nearby joints with learned weights:
Human Mesh Recovery (HMR) — CNN (ResNet-50) read one flat photo guess SMPL build mesh throw 3D joints back to flat and match truth dots:
Extra adversary-judge grunt "real human pose, or impossible?" keep the body believable.
Ugg warn: no do this!
- OpenPose channels , NOT . 18 joints + 19 limbs = 56, not 36.
- Always divide PCK by body size (head-bone or torso), never raw pixels.
- is pose, is shape — no swap them.
- Top-down NOT always sharper — in crowd with hide, bottom-up win.
- PAF score is an INTEGRAL (average many points on the line), not one dot-product.
- Argmax on a noisy map can lie — use a confidence threshold.
- HMR: SMPL live in 3D metres, camera project to 2D pixels — no mix the frames.
Ugg remember
- Box no tell the doing; pose = joints + limbs. Four draws, small to big: skeleton (K dots) DensePose SMPL 3D mesh Sapiens foundation.
- Guess-numbers BREAK (bad loss, no space-think, no maybe, no hide-handle). Fix = heatmaps: Gaussian glow target, pixel-MSE loss, argmax read.
- CPM refine belief-maps over stages, wider view each stage, intermediate supervision stop the vanishing gradient.
- OpenPose bottom-up: heatmaps + PAF line-integral + Hungarian, channels, flat runtime. Top-down detect-then-pose: sharper, brittle, .
- SMPL: , , vertices via linear blend skinning. HMR regress them from one photo with a 2D reprojection loss.