終極 Pose Estimation 突破 | 5 種 YOLO AI 解讀你的每個動作的方法


Pose Estimation(姿態估計)是現代電腦視覺中最令人著迷的一項能力。它不只是辨識畫面中「有一個人」,而是讓 AI 能夠定位人體的關鍵關節,重建出代表動作的「骨架」。透過這些關節點,AI 能理解一個人正在做什麼、如何移動,甚至可以分析動作是否標準。

這項技術已悄悄走入我們的生活:健身 App 的姿勢矯正、運動比賽中的動作分析、長照系統的跌倒偵測、體感互動遊戲等,都依賴姿態估計的力量。

隨著深度學習快速進步,特別是 YOLO 這類高速且精準的模型,姿態估計的準確度與實用性大幅提升。這篇文章將帶你揭開 AI 如何讀懂人體動作的祕密,並用 YOLO 做為例子,帶你深入了解這項核心技術。

Pose Estimation

什麼是 Pose Estimation?

Pose Estimation 姿態估計 是一種電腦視覺技術,其目標是透過識別和定位人體或物體的關鍵點,來推斷出其在二維影像或三維空間中的「姿態」。

姿態估計的基礎是偵測並連接關鍵點。這些關鍵點是物體上具有明確意義的關節或特徵點。

  • 對於人體:關鍵點通常是關節,例如手腕、手肘、肩膀、膝蓋、腳踝、臀部、頭部等。一個簡單的模型可能使用 17 個關鍵點,而更複雜的模型可以使用數十個。
  • 對於物體:例如一張椅子,關鍵點可能是椅腳的四個端點、椅背的頂部等。

Pose Estimation 是 AI 看懂人體動作的核心技術,它不只是偵測人在哪裡,更重要的是理解「人正在做什麼」。
搭配 YOLO 等即時模型,姿態估計可以做到快速、準確、即時的動作辨識,開啟了許多智慧應用的可能性。

核心運作模式

YOLO 在做 Pose Estimation 時,不只是找到人體位置,更會透過多層次的深度分析來理解動作。下面是 YOLO 解讀你動作的五個關鍵方法:

  1. 快速鎖定人體區塊(Real-Time Human Localization)
    YOLO 透過高速 CNN 立即找到畫面中的每一個人,提供精準的 bounding box,讓後續骨架分析能在有效區域內進行。
  2. 精準偵測關鍵點(High-Accuracy Keypoint Detection)
    YOLO Pose 模型可抓出如頭部、肩膀、手肘、膝蓋等 17 個人體關鍵點,是骨架重建的基礎。
  3. 自動繪製人體骨架(Skeleton Reconstruction)
    將所有關節依真實人體結構連線,生成骨架模型,AI 掌握你的姿勢、方向與角度。
  4. 理解姿勢是否標準(Pose Interpretation & Angle Analysis)
    YOLO 能透過關節角度推斷你是在蹲、跳、彎腰或伸展,也能分析是否動作不正確(例如深蹲膝蓋內夾)。
  5. 追蹤多人動作(Multi-Person Motion Tracking)
    YOLO 與追蹤器(如 ByteTrack)結合後,可在多人場景保持 ID 不變,分析每個人的持續動作軌跡。

Pose Estimation 的應用十分廣泛,它能做健身動作矯正與步態分析,也能應用在體感遊戲與虛擬角色控制。在健康照護中,它能協助跌倒偵測與長照監控;在行為分析上,則能辨識舞蹈動作與手勢,讓 AI 更精準理解人類行為。

開發環境

這次我們同樣使用 Ultralytics 的 YOLO 來進行姿態估計。Ultralytics 已提供官方的 Python 套件與命令列工具,安裝與環境建置都非常簡單,只需要幾個步驟就能開始使用。

系統需求 :

項目建議配置
作業系統Windows / macOS / Linux
Python 版本Python 3.8 以上
GPU 支援建議使用 NVIDIA GPU(CUDA 11+)以加速訓練與推論
框架依賴PyTorch(自動安裝)

建立 YOLO 虛擬環境

為了保持開發環境乾淨、避免與其他 Python 專案的套件衝突,建議先建立一個專屬的虛擬環境:

python -m venv yoloenv

接著啟用環境:

# macOS / Linux
source yoloenv/bin/activate

# Windows
yoloenv\Scripts\activate


當你看到命令列前方出現 (yoloenv) 時,就表示虛擬環境已經啟用成功。

安裝 YOLO 套件

Ultralytics 提供官方的 YOLO 工具包,其中已包含該模型模型與命令列介面。只需一行指令即可安裝:

pip install ultralytics

安裝完成後,你可以使用以下指令檢查是否成功:

yolo version

若顯示版本號為如 8.3.x,就代表安裝完成 。

Code

使用 YOLO Pose 偵測人體關鍵點並在影像上呈現骨架姿勢。

# ===============================
# YOLO Pose Complete Python Example
# ===============================

import os
from ultralytics import YOLO

# Set up project folder
project_dir = "/Users/kdm4/Desktop/yoloenv/main/pose_outputs"  # Customize the save folder
os.makedirs(project_dir, exist_ok=True)

# Load YOLO Pose model
# yolo11n-pose.pt = Nano version, lightweight and fast for demo purposes
model = YOLO("yolo11n-pose.pt")

# Test image (Ultralytics official sample image)
image_source = "https://ultralytics.com/images/bus.jpg"

# Run pose inference
results = model(
    image_source,
    save=True,           # Automatically save the output
    project=project_dir, # Specify the save directory
    name="pose_demo",    # Subfolder name
)

# Display results (opens a window with the image)
results[0].show()

# Print detected keypoints
print("\nDetected keypoints:")
for i, kp in enumerate(results[0].keypoints.xy):
    print(f"Person {i+1}:")
    print(kp)  # Each keypoint's (x, y) coordinates

# Show save directory
print(f"\nResults saved to: {results[0].save_dir}")

程碼說明

1. 載入模組 :
使用 os 建立資料夾,YOLO 載入 YOLO Pose 模型。

2. 建立輸出資料夾 :
指定結果存放路徑,若資料夾不存在會自動建立。

3. 載入 YOLO Pose 模型 :
使用輕量化的 yolo11n-pose.pt,速度快、適合示範。

4. 選擇輸入影像 :
可支援本地路徑與線上圖片,示範使用官方測試影像。

5. 執行 Pose Estimation : 模型會自動偵測人物、標出 17 個人體關節、繪製骨架,並將結果存到指定資料夾。

6. 顯示結果影像 : 直接跳出視窗,看到骨架標示整合後的推論結果。

7. 輸出關鍵點座標 :列出每個人的 17 個 (x, y) 位置,可作為後續動作分析資料。

8. 顯示檔案輸出位置 : 告訴你結果儲存在何處,方便進一步使用或展示。

輸出

  • 顯示關節座標,讓你看到每個人所有的 keypoints (x, y),如 :
Person 1:
tensor([[142.3646, 441.8607],
        [147.9898, 431.4179],
        [130.5442, 433.3709],
        [152.2967, 437.5226],
        [107.1835, 440.6562],
        [157.4519, 493.1139],
        [ 94.2638, 499.2470],
        [176.4613, 550.9835],
        [110.6624, 567.5746],
        [174.2182, 532.3489],
        [162.0031, 534.3918],
        [148.8314, 645.1359],
        [ 99.6655, 649.4141],
        [178.8722, 749.2933],
        [ 94.7996, 756.5117],
        [185.9790, 849.7502],
        [ 73.9456, 858.1395]])
  • 顯示結果
Pose Estimation
測試圖片來源:Ultralytics 官方示範影像檔 bus.jpg

結論

Pose Estimation 的 Python Demo 成功執行後,我們可以清楚看到 YOLO Pose 模型的強大能力。透過簡單的程式碼,不僅能快速偵測影像中的人物,還能精準標出每個關鍵關節,建立完整的骨架模型。這證明了整個環境建置和模型載入流程都是正確無誤的。

在執行過程中,程式會在終端機輸出關鍵資訊,例如模型載入狀態、偵測到的人數以及每個關鍵點的座標。這些即時 log 不僅方便開發者確認模型是否運作正常,也讓我們可以直接觀察骨架重建和姿態估測的效果,為後續的動作分析或應用奠定基礎。

此外,程式自動將結果存檔到指定資料夾,包含標註骨架的影像以及關鍵點資料檔。這使得後續可以輕鬆進行動作追蹤、行為辨識或其他分析任務。整體而言,這個 Demo 不僅展示了 YOLO Pose 的功能,也提供了一個完整、可操作的流程範例,讓開發者能快速上手並應用於不同場景。