Skip to content

Commit

Permalink
[Docs] Add pose estimation example
Browse files Browse the repository at this point in the history
  • Loading branch information
CVHub520 committed Aug 4, 2024
1 parent b49bd61 commit 9874bee
Show file tree
Hide file tree
Showing 7 changed files with 384 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions examples/pose_estimation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Pose Estimation Example

## Introduction

**Pose estimation** is a task that involves identifying the location of specific points in an image, usually referred to as keypoints. The keypoints can represent various parts of the object such as joints, landmarks, or other distinctive features.

<img src=".data/post_estimation-example.png" width="100%" />

## Usage

This guide will walk you through the process of performing [YOLO-Pose](https://docs.ultralytics.com/tasks/pose/) calibration tasks on X-AnyLabeling:

- Start by adding the image files.
- Then, tap the `rectangle` button on the left menu or press the `R` key to quickly create a rectangle shape and type in the matching `label` and `group_id` in the dialog.
- Next: Click the `Point` button on the left menu bar to draw keypoints on the object. Assign the same `group_id` to the keypoints as the corresponding rectangle to link them together. Keep in mind:
- If a keypoint is not visible, you may omit it.
- If a keypoint is obscured, check the `useDifficult` field.

For each object, all associated keypoints and the corresponding rectangle should have the same `group_id`, which must be unique within the current image.

<img src=".data/annotated_pose_task.png" width="100%" />

> [!TIP]
> You can press the `s` key to show or the `w` key to hide the selected shape.
## Export

To export your pose estimation annotations, proceed with the following steps:
1. Click on the `Export` button located in the menu bar at the top.
2. Select the `Export YOLO-Pose Annotations` option.
3. Upload your custom label file, e.g., [pose_classes.yaml](./pose_classes.yaml), to ensure the correct mapping of object classes.

These steps will facilitate the proper export of your pose estimation annotations for further use or analysis.

To understand the dataset format for YOLO-Pose, refer to the [official documentation](https://docs.ultralytics.com/datasets/pose/#ultralytics-yolo-format) and consult the sample output file [here](./labels/human-pose.txt).
1 change: 1 addition & 0 deletions examples/pose_estimation/labels/human-pose.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0 0.523915 0.593226 0.23752 0.48571 0.526 0.398667 2 0.54 0.389333 2 0.516 0.389333 2 0.576 0.390667 2 0 0 0 0.606 0.449333 2 0.484 0.436 2 0.608 0.525333 2 0.452 0.508 2 0.604 0.592 2 0.438 0.578667 2 0.562 0.576 2 0.482 0.569333 2 0.554 0.685333 2 0.432 0.684 2 0.528 0.792 2 0.476 0.781333 2
20 changes: 20 additions & 0 deletions examples/pose_estimation/pose_classes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
has_visible: true
classes:
person:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
Binary file added examples/pose_estimation/sources/human-pose.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
328 changes: 328 additions & 0 deletions examples/pose_estimation/sources/human-pose.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,328 @@
{
"version": "2.4.0",
"flags": {},
"shapes": [
{
"label": "person",
"score": 0.9361733198165894,
"points": [
[
202.57744789123535,
262.77809143066406
],
[
321.3376522064209,
262.77809143066406
],
[
321.3376522064209,
627.0604133605957
],
[
202.57744789123535,
627.0604133605957
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "rectangle",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "nose",
"score": 0.9991881847381592,
"points": [
[
263.0,
299.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_eye",
"score": 0.9990671873092651,
"points": [
[
270.0,
292.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_eye",
"score": 0.9691519737243652,
"points": [
[
258.0,
292.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_ear",
"score": 0.9922831654548645,
"points": [
[
288.0,
293.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_shoulder",
"score": 0.9995309710502625,
"points": [
[
303.0,
337.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_shoulder",
"score": 0.9992316365242004,
"points": [
[
242.0,
327.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_elbow",
"score": 0.9979743361473083,
"points": [
[
304.0,
394.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_elbow",
"score": 0.9959675073623657,
"points": [
[
226.0,
381.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_wrist",
"score": 0.9981911778450012,
"points": [
[
302.0,
444.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_wrist",
"score": 0.9970198273658752,
"points": [
[
219.0,
434.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_hip",
"score": 0.9998468160629272,
"points": [
[
281.0,
432.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_hip",
"score": 0.9997798204421997,
"points": [
[
241.0,
427.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_knee",
"score": 0.9997265934944153,
"points": [
[
277.0,
514.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_knee",
"score": 0.9995321035385132,
"points": [
[
216.0,
513.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "left_ankle",
"score": 0.9951300621032715,
"points": [
[
264.0,
594.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
},
{
"label": "right_ankle",
"score": 0.9930390119552612,
"points": [
[
238.0,
586.0
]
],
"group_id": 0,
"description": null,
"difficult": false,
"shape_type": "point",
"flags": {},
"attributes": {},
"kie_linking": [],
"visible": false
}
],
"imagePath": "human-pose.jpeg",
"imageData": null,
"imageHeight": 750,
"imageWidth": 500
}

0 comments on commit 9874bee

Please sign in to comment.