Skip to content
AF

COCO 17 keypoints: the index order MoveNet, YOLO pose and RTMPose share

17 keypoints · from MMPose coco.py dataset meta info (branch main) · read 2026-10-17

COCO 17 has 17 keypoints, numbered from 0 nose to 16 right_ankle, as keypoint_info in MMPose's configs/_base_/datasets/coco.py defines them. The sources tie it to MoveNet (TF.js pose-detection), PoseNet (TF.js pose-detection), Ultralytics YOLO26 default pose models and RTMPose 17-keypoint body models (MMPose). All 17 names match a point in another scheme once lowercased with separators removed. Read from the sources on 2026-10-17.

Models that output it

  • MoveNet (TF.js pose-detection) · MoveNet Lightning, Thunder and MultiPoseEvidence: TF.js pose-detection README says “COCO Keypoints: Used in MoveNet and PoseNet” (source).
  • PoseNet (TF.js pose-detection)Evidence: TF.js pose-detection README says “COCO Keypoints: Used in MoveNet and PoseNet” (source).
  • Ultralytics YOLO26 default pose models · Ultralytics YOLO pose modelsEvidence: Ultralytics pose task docs (pose.md) says “The default YOLO26 Pose models predict the 17 COCO keypoints” (source).
  • RTMPose 17-keypoint body models (MMPose) · RTMPose models (MMPose)Evidence: RTMPose README says “17 Keypoints: Keypoints are defined as COCO. For details please refer to the meta info.” (source).

All 17 keypoints

Names are copied exactly from keypoint_info in MMPose's configs/_base_/datasets/coco.py. The index is the position the source assigns. The last column says whether another scheme on this site spells the same name, by the crosswalk rule.

IndexNameAlso spelledMMPose swapSame name in
0noseNose (Ultralytics pose task docs (pose.md))BlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, OpenPose BODY_25, OpenPose COCO 18, Apple Vision 2D
1left_eyeLeft Eye (Ultralytics pose task docs (pose.md))right_eyeBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D
2right_eyeRight Eye (Ultralytics pose task docs (pose.md))left_eyeBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D
3left_earLeft Ear (Ultralytics pose task docs (pose.md))right_earBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D
4right_earRight Ear (Ultralytics pose task docs (pose.md))left_earBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D
5left_shoulderLeft Shoulder (Ultralytics pose task docs (pose.md))right_shoulderBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
6right_shoulderRight Shoulder (Ultralytics pose task docs (pose.md))left_shoulderBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
7left_elbowLeft Elbow (Ultralytics pose task docs (pose.md))right_elbowBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
8right_elbowRight Elbow (Ultralytics pose task docs (pose.md))left_elbowBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
9left_wristLeft Wrist (Ultralytics pose task docs (pose.md))right_wristBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
10right_wristRight Wrist (Ultralytics pose task docs (pose.md))left_wristBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
11left_hipLeft Hip (Ultralytics pose task docs (pose.md))right_hipBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
12right_hipRight Hip (Ultralytics pose task docs (pose.md))left_hipBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
13left_kneeLeft Knee (Ultralytics pose task docs (pose.md))right_kneeBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
14right_kneeRight Knee (Ultralytics pose task docs (pose.md))left_kneeBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
15left_ankleLeft Ankle (Ultralytics pose task docs (pose.md))right_ankleBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D
16right_ankleRight Ankle (Ultralytics pose task docs (pose.md))left_ankleBlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, Apple Vision 2D, Apple Vision 3D

What the sources say about the output

Copied from the sources, whitespace collapsed.

  • Don't change the order. The order needs to be consistent with the model keypoint result list. (TF.js pose-detection constants.ts)
  • kpt_shape: [17, 3] — number of keypoints, number of dims (2 for x,y or 3 for x,y,visible) (Ultralytics coco-pose.yaml)
  • result.keypoints.data (torch.float32, shape (N,K,2/3)): x,y plus optional visibility/confidence. (Ultralytics pose task docs (pose.md))
  • result.keypoints.xy (torch.float32, shape (N,K,2)): Pixel keypoints. (Ultralytics pose task docs (pose.md))
  • result.keypoints.xyn (torch.float32, shape (N,K,2)): Normalized keypoints. (Ultralytics pose task docs (pose.md))
  • PoseNet and MoveNet both return 17 keypoints. (TF.js pose-detection README)

How this list was checked

  • MMPose keypoint_info ids run 0 to N-1
  • TF.js COCO_KEYPOINTS spells the same names in the same order
  • Ultralytics coco-pose.yaml kpt_names spells the same names in the same order
  • the Ultralytics docs' keypoint index map lists the same points in the same order (title case)
  • the TF.js README's COCO keypoint list agrees at every index
  • Ultralytics kpt_shape declares the same keypoint count
  • 17 of 17 names are shared with another scheme; the rest are listed as unmapped.

MMPose’s meta info cites the dataset as “Microsoft coco: Common objects in context” (2014) with the homepage cocodataset.org/.

Other schemes

Questions

What are the 17 COCO keypoints in index order?

Keypoint_info in MMPose's configs/_base_/datasets/coco.py numbers them 0 nose, 1 left_eye, 2 right_eye, 3 left_ear, 4 right_ear, 5 left_shoulder, 6 right_shoulder, 7 left_elbow, 8 right_elbow, 9 left_wrist, 10 right_wrist, 11 left_hip, 12 right_hip, 13 left_knee, 14 right_knee, 15 left_ankle, 16 right_ankle.

Which pose models output COCO keypoints?

MoveNet (TF.js pose-detection): TF.js pose-detection README says “COCO Keypoints: Used in MoveNet and PoseNet”; PoseNet (TF.js pose-detection): TF.js pose-detection README says “COCO Keypoints: Used in MoveNet and PoseNet”; Ultralytics YOLO26 default pose models: Ultralytics pose task docs (pose.md) says “The default YOLO26 Pose models predict the 17 COCO keypoints”; RTMPose 17-keypoint body models (MMPose): RTMPose README says “17 Keypoints: Keypoints are defined as COCO. For details please refer to the meta info.” Only models a fetched source ties to this scheme are listed.

How do COCO keypoints map to other pose keypoint schemes?

By name only. 17 of the 17 share an identical name, once lowercased with separators removed, with a point in BlazePose 33, ML Kit 33, Halpe26, COCO-WholeBody 133, OpenPose BODY_25, OpenPose COCO 18, Apple Vision 2D and Apple Vision 3D, so every one has a crosswalk row. A shared row means the names match, not that two models place the point in the same spot.

What coordinates come with COCO keypoints?

In the sources' words: “kpt_shape: [17, 3] — number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)” (Ultralytics coco-pose.yaml); “result.keypoints.data (torch.float32, shape (N,K,2/3)): x,y plus optional visibility/confidence.” (Ultralytics pose task docs (pose.md)); “result.keypoints.xy (torch.float32, shape (N,K,2)): Pixel keypoints.” (Ultralytics pose task docs (pose.md)); “result.keypoints.xyn (torch.float32, shape (N,K,2)): Normalized keypoints.” (Ultralytics pose task docs (pose.md)).

Sources

Generated by scripts/fetch-pose-keypoints.mjs and compiled by AIFitnessAPI. The sources remain the authority.