YOLO26-pose による人体の姿勢推定(Windows 上)
【概要】
Windows 上で Ultralytics YOLO26-pose を使用し,画像および カメラ映像 から人体の キーポイント(関節位置)を推定する.YOLO26-pose は COCO Keypoints データセットで学習済みであり,1人の人物につき 17 個のキーポイントを出力する.
以前このページで扱っていた trustcoinmining/openpose-plus は,Python 3.7 と TensorFlow 1.15.5 を前提とし,Visual Studio 2017 による C++ ビルドを必要とする.これらは現在の Windows 環境では入手・構築が難しいため,同じ「人体のキーポイント抽出」を,現行の Python で動作する YOLO26-pose により行う手順に置き換えて説明する.
【目次】
【関連する外部ページ】
- Ultralytics の姿勢推定の説明ページ: https://docs.ultralytics.com/tasks/pose
- Ultralytics YOLO26 の説明ページ: https://docs.ultralytics.com/models/yolo26
- ultralytics の GitHub リポジトリ: https://github.com/ultralytics/ultralytics
前準備
Python 3.12 のインストール(Windows 上) [クリックして展開]
以下のいずれかの方法で Python 3.12 をインストールする。Python 3.12 がインストール済みの場合、この手順は不要である。
方法1:winget によるインストール
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
winget install -e --id Python.Python.3.12 --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 AssociateFiles=1 InstallLauncherAllUsers=1"
--scope machine を指定すると、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が反映される。
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)から Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部にある「Add python.exe to PATH」にチェックを入れてから「Customize installation」を選択する。このチェックを入れないと、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで次のコマンドを実行する。
py -3.12 --version
バージョン番号(例:Python 3.12.x)が表示されればインストールできている。
AIエディタ Windsurf のインストール(Windows 上) [クリックして展開]
Python プログラムの編集・実行に使用するエディタとして、ここでは Windsurf のインストール手順を示す。Windsurf がインストール済みの場合、この手順は不要である。
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
winget install --scope machine --id Codeium.Windsurf -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/SP- /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS /DIR=""C:\Program Files\Windsurf"" /MERGETASKS=!runcode,addtopath,associatewithfiles,!desktopicon"
powershell -Command "$env:Path=[System.Environment]::GetEnvironmentVariable('Path','Machine')+';'+[System.Environment]::GetEnvironmentVariable('Path','User'); windsurf --install-extension MS-CEINTL.vscode-language-pack-ja --force; windsurf --install-extension ms-python.python --force; windsurf --install-extension Codeium.windsurfPyright --force"
--scope machine を指定すると、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が反映される。
【関連する外部ページ】
Windsurf の公式ページ: https://windsurf.com/
ultralytics のインストール
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。次のコマンドを実行する。
pip install -U --no-user pip setuptools
pip install -U --no-user ultralytics opencv-python
上のコマンドにより、PyTorch(torch, torchvision)を含む依存パッケージが同時にインストールされる。CPU 版の PyTorch が入るため、NVIDIA GPU で実行する場合は、次のコマンドで CUDA 対応版の PyTorch に入れ替える(CUDA 12.4 対応版の例)。
pip install -U --no-user --index-url https://download.pytorch.org/whl/cu124 torch torchvision
インストールの確認を行う。コマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。次のコマンドを実行する。
py -3.12 -c "import ultralytics; print(ultralytics.__version__)"
py -3.12 -c "import torch; print(torch.__version__, torch.cuda.is_available())"
バージョン番号が表示されればインストールできている。torch.cuda.is_available() が True であれば GPU が使用される。False の場合は CPU で実行される。
YOLO26-pose のモデル
YOLO26 の姿勢推定モデルは、ファイル名の末尾が -pose である。モデルファイルは初回実行時に自動でダウンロードされる。モデルは大きさの順に yolo26n-pose.pt(最小・最速)、yolo26s-pose.pt、yolo26m-pose.pt、yolo26l-pose.pt、yolo26x-pose.pt(最大・最高精度)がある。
17 個のキーポイント
COCO Keypoints で学習した YOLO26-pose は、1人につき次の 17 点を出力する。インデックスの順は、0: 鼻、1: 左目、2: 右目、3: 左耳、4: 右耳、5: 左肩、6: 右肩、7: 左肘、8: 右肘、9: 左手首、10: 右手首、11: 左腰、12: 右腰、13: 左膝、14: 右膝、15: 左足首、16: 右足首である。
このページで説明のために使用する画像
人物が写った画像 bus.jpg, zidane.jpg をダウンロードする。
管理者権限でコマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。次のコマンドを実行する。
mkdir c:\image
cd c:\image
curl -L https://ultralytics.com/images/bus.jpg -o bus.jpg
curl -L https://ultralytics.com/images/zidane.jpg -o zidane.jpg
コマンドによる姿勢推定
ultralytics のインストールにより yolo コマンドが使用できる。
コマンドプロンプトを起動する
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。次のコマンドを実行する。
yolo pose predict model=yolo26n-pose.pt source=c:\image\bus.jpg save=True
結果画像は runs\pose\predict の下に保存される。保存先はコマンド実行時のメッセージに表示される。source にはフォルダ、動画ファイル、画像の URL も指定できる。
Python プログラムによる姿勢推定
次の Python プログラムは、画像を読み込み、YOLO26-pose でキーポイントを推定し、結果を画面表示する。あわせて、検出された人物ごとのキーポイント座標を表示する。
Windsurf などのエディタで pose1.py の名前で保存し、実行する。
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n-pose.pt")
img = cv2.imread("c:/image/bus.jpg")
results = model(img)
for r in results:
# 検出された人物ごとのキーポイント座標(画素単位, 17点 × (x, y))
print(r.keypoints.xy)
# 信頼度付きのキーポイント(x, y, conf)
print(r.keypoints.data)
cv2.imshow("YOLO26-pose", r.plot())
cv2.waitKey(0)
cv2.destroyAllWindows()
r.plot() は、推定結果(バウンディングボックス、キーポイント、骨格の線)を描画した画像を返す。r.keypoints.xy は画素単位の座標、r.keypoints.xyn は画像サイズで正規化した座標である。
実行は、コマンドプロンプトを起動して行う
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。次のコマンドを実行する。
py -3.12 pose1.py
カメラ映像での姿勢推定
パソコンに接続したカメラの映像に対して、連続的に姿勢推定を行うプログラムである。q キーで終了する。
Windsurf などのエディタで pose2.py の名前で保存し、実行する。
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n-pose.pt")
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
results = model(frame, verbose=False)
cv2.imshow("YOLO26-pose", results[0].plot())
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
実行は、コマンドプロンプトを起動して行う
(手順:Windowsキーまたはスタートメニュー → cmd と入力)。次のコマンドを実行する。
py -3.12 pose2.py
処理が遅い場合は、model = YOLO("yolo26n-pose.pt") の最小モデルを使用し、model(frame, imgsz=320) のように入力サイズを小さくする。精度を優先する場合は yolo26m-pose.pt などの大きいモデルを使用する。