MMPoseの環境を構築して姿勢推定してみる

投稿日:2025/07/30

はじめに

最近業務で人の姿勢推定を行う機会がありました。その時に使用したMMPoseが簡単に姿勢推定に利用できたので、ここではその構築方法と推論の手順を紹介します。

MMPoseとは

OpenMMLabが公開している姿勢推定のオープンソースライブラリです。PyTorchベースで作られており、人や動物の骨格検出するモデルの構築・学習・推論が可能です。

使用環境

この記事では以下の環境で動作を確認しました。

  • OS: Ubuntu 24.04
  • Docker: 28.3.3
  • NVIDIA Driver: 570.169
  • nvidia-container-toolkit: 1.17.8-1
  • nvidia-container-runtime: 3.14.0-1

環境構築(ソースからビルドする方法)

最新のMMPose(今回はv1.3.2)をGitHubから取得し、Dockerで環境構築します。
レポジトリはこちら

1. GitHubからMMPoseを取得

まずはリポジトリをクローンします。

Bash
git clone https://github.com/open-mmlab/mmpose.git
cd mmpose

2. Dockerfileを修正

mmpose/docker/DockerfileのPyTorchやCUDAなどのバージョンが低くGPUで動作しなかったため、以下のようにバージョンを上げました。

Dockerfile
# ARG PYTORCH="1.8.1"
# ARG CUDA="10.2"
# ARG CUDNN="7"
ARG PYTORCH="1.9.0"
ARG CUDA="11.1"
ARG CUDNN="8"

また、Dockerfile内のgit clonepip install部分は今回マウントするためコメントアウトします。
/mmposeが存在しないとエラーになるため、事前にmkdir mmposeを追加しています。

Dockerfile
# Install MMPose
RUN conda clean --all \
    && mkdir mmpose
# RUN git clone https://github.com/open-mmlab/mmpose.git /mmpose
WORKDIR /mmpose
# RUN git checkout main
ENV FORCE_CUDA="1"
# RUN pip install -r requirements/build.txt
# RUN pip install --no-cache-dir -e .

3. Imageの作成

mmposeのディレクトリ内で以下のコマンドを実行しdocker imageを作成します。

Bash
docker build -t mmpose_torch1.9_img docker/

4. コンテナの作成

imageができたらコンテナを作成します。
MMPoseをクローンしたディレクトリを/mmposeでマウントするように指定しました。

Bash
docker run --gpus all --shm-size=8g -it --name mmpose_torch1.9 \
-v 【MMPoseをクローンしたディレクトリを指定】:/mmpose \
mmpose_torch1.9_img

5. パッケージをインストール

コンテナに入ってDockerfileでコメントアウトしていたpip installの部分を実行します。

Bash
pip install -r requirements/build.txt
pip install --no-cache-dir -e .

追加でdemoを動かすにはmmdetも必要なのでこれもインストールします。

Bash
pip install mmdet

これで環境構築は完了です。

姿勢推定

サンプルデータで推論

作成した環境で姿勢推定してみましょう。
/mmpose/tests/dataにデモで使えるデータがあるのでこちらで動かしてみます。今回は/mmposetests/data/coco/000000196141.jpgの画像を使ってみます。

動かし方は公式のドキュメントを見ると色々ありますが、inferencer_demo.pyを使うのが一番簡単そうなのでこちらを使ってみます。

コンテナ内で以下のコマンドを実行します。

Bash
python demo/inferencer_demo.py \
 tests/data/coco/000000196141.jpg --pose2d human \
 --vis-out-dir work_dirs/test/

demo/inferencer_demo.pyに画像をpathで指定しています。出力先はwork_dirs/test/の下を指定しました。

出力結果

work_dirs/testに000000196141.jpgという画像ファイルが出力されました。
小さく写っている人物も正しく姿勢推定がされているのが確認できます。

おわりに

MMPoseを使って人の姿勢推定の流れを紹介してみました。MMPoseは他にも動物の姿勢推定や手の形の推定などさまざまな姿勢推定モデルが用意されています。
業務や研究の中で姿勢推定を活用したい場面があればMMPoseを試してみるのも良いでしょう。