YOLO26-pose による人体の姿勢推定(Ultralytics,PyTorch を使用)(Ubuntu 上)

【概要】

YOLO26-pose は,Ultralytics が公開している YOLO26 の姿勢推定(pose estimation)モデルである.画像中の人物ごとに,鼻,目,耳,肩,肘,手首,腰,膝,足首など,COCO 形式の17個のキーポイントを検出する.NMS(Non-Maximum Suppression)フリーのエンドツーエンド構成により,後処理を必要とせず高速に推論できる.

【目次】

【関連する外部ページ】

Ultralytics の公式ドキュメント: https://docs.ultralytics.com/tasks/pose

Ultralytics の GitHub のページ: https://github.com/ultralytics/ultralytics

【サイト内の関連情報】

OpenPose(人体,手,足,表情の姿勢推定)のビルドとインストール: 別ページ »で説明

第1章 前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.

Ubuntu のインストールはこちらの別ページで説明する.

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新(依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で再起動が必要な場合のみ実行する
# sudo shutdown -r now

NVIDIA ドライバ,NVIDIA CUDA ツールキット 12.8,NVIDIA cuDNN のインストール(Ubuntu 上)

Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 12.8,NVIDIA cuDNN のインストール: 別ページ »で説明

Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)

Python のインストールは行わない(Ubuntu のシステム Python(Python 3.12)を用いる.)

Python, pip のコマンドでの起動のまとめ.

Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.

Python3 開発用ファイル,pip, setuptools, venv のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential

PyTorch のインストール(Ubuntu 上)

Ubuntu での PyTorch のインストール: 別ページ »で説明

第2章 Ultralytics のインストール(Ubuntu 上)

Ultralytics パッケージには,YOLO26 の学習・推論・エクスポートに必要な機能がまとめられている.インストールするには,端末で,次のコマンドを実行する.

GPU を使わない場合には,PyTorch を CPU 版でインストールする.CUDA 対応 GPU がある場合は,NVIDIA CUDA ツールキット 12.8 に対応した PyTorch をあらかじめインストールしておく(前準備の章を参照).
sudo pip3 install -U --no-user ultralytics

第3章 YOLO26-pose による姿勢推定(Ubuntu 上)

  1. 画像に対する姿勢推定の実行

    公式ページ (https://docs.ultralytics.com/tasks/pose) に記載の,姿勢推定のプログラムを実行する.

    このプログラムは yolo26n-pose(YOLO26-pose の中で最も軽量なモデル)の学習済みモデルを使用している.モデルファイルは初回実行時に自動的にダウンロードされる.
    • 検出するキーポイント: 鼻,左右の目,左右の耳,左右の肩,左右の肘,左右の手首,左右の腰,左右の膝,左右の足首(合計17点,COCO 形式)
    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")
    results = model("https://ultralytics.com/images/bus.jpg")
    
    for result in results:
        # 各キーポイントの x, y 座標
        print(result.keypoints.xy)
        result.show()
        result.save(filename="result.jpg")
    
  2. パソコンに接続されたビデオカメラで動作してみる

    OpenCV による動画表示を行う.

    import cv2
    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")
    
    v = cv2.VideoCapture(0)
    while(v.isOpened()):
        r, f = v.read()
        if ( r == False ):
            break
        results = model(f, verbose=False)
        rimg = results[0].plot()
        cv2.imshow("", rimg)
        # Press Q to exit
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    v.release()
    cv2.destroyAllWindows()