YOLO11 による2次元人体姿勢推定 Colab プログラムによる実験・研究スキルの基礎
【概要】YOLO11-poseモデルを用いて画像から人体の17個のキーポイントを検出する姿勢推定プログラムである。Google Colaboratory上で動作し、公式サンプル画像での自動デモとユーザがアップロードした画像の処理が可能である。検出結果は座標、信頼度とともに視覚化され、スポーツ分析、フィットネス、医療分野での姿勢評価等に活用できる。
Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/11JLs4DFQ85-Ce0BENQo-RU7tTDnkfu8d?usp=sharin
【目次】
プログラム利用ガイド
1. このプログラムの利用シーン
画像内の人物の関節位置を自動的に検出するためのプログラムである。スポーツ分析、フィットネスアプリケーション、医療分野での姿勢評価、人間とコンピュータの相互作用といった場面で活用できる。Google Colaboratory上で実行するため、ローカル環境への特別なインストールは不要である。
2. 主な機能
- 自動デモンストレーション: プログラム起動時に、公式サンプル画像を用いた姿勢推定のデモが自動的に実行される。
- 画像アップロード機能: ユーザが任意の画像ファイルをアップロードし、その画像内の人物の姿勢を推定できる。
- キーポイント検出: 人体の17個の主要な関節位置(鼻、目、耳、肩、肘、手首、腰、膝、足首)を検出する。
- 詳細情報の出力: 検出された各キーポイントについて、部位名、座標(X、Y)、信頼度スコアを表示する。
- 視覚化表示: 検出結果を画像上に重ね合わせて表示する。キーポイントは点で表示され、関節間は骨格線で結ばれる。
- 結果の保存: 処理済みの画像を自動的にファイルとして保存する。
3. 基本的な使い方
- プログラムの実行:
必要なライブラリのインストールとモデルのダウンロードが自動的に行われる。
- デモの確認:
プログラムは自動的に公式サンプル画像(バスの写真)を処理し、結果を表示する。画像内の人物に対して検出されたキーポイントの詳細情報(部位名、座標、信頼度)がテキストで出力され、視覚化された画像が表示される。
- 画像のアップロード:
デモ実行後、「ファイルを選択」ボタンが表示される。自分の画像ファイル(JPG、PNG形式)を選択してアップロードする。
- 結果の確認:
アップロードした画像の処理が完了すると、検出されたキーポイントの情報がテキストで表示され、視覚化された結果画像が表示される。処理済み画像は/content/outputディレクトリに自動保存される。
Colabのページ(ソースコードと説明): https://colab.research.google.com/drive/11JLs4DFQ85-Ce0BENQo-RU7tTDnkfu8d?usp=sharin
4. 便利な機能
- 信頼度フィルタリング: プログラムは信頼度が0.5以上のキーポイントのみを出力する。これにより、誤検出や不確実な検出を除外できる。
- 自動デバイス選択: GPUが利用可能な環境では自動的にGPUを使用し、処理速度を向上させる。GPUが利用できない場合はCPUで処理を実行する。
- 複数人物への対応: 画像内に複数の人物が写っている場合、それぞれの人物に対してキーポイント検出を実行する。
- 日本語での結果表示: matplotlib日本語化ライブラリにより、グラフや図のラベルが日本語で表示される。
- 処理状況の表示: プログラム実行中、各ステップの進行状況や使用デバイス情報が表示される。
プログラムコードの説明
1. 概要
このプログラムは、YOLO11-pose(Nano)モデルを用いて、画像から人体の17個のキーポイント(関節位置)を検出する姿勢推定システムである。公式サンプル画像とユーザがアップロードした画像の両方を処理し、検出されたキーポイントの座標と信頼度を出力する。Google Colaboratory環境で動作し、処理結果を視覚化して表示する。
2. 主要技術
YOLO11 Pose Estimation
Ultralyticsが開発したYOLO(You Only Look Once)シリーズの最新版であるYOLO11において、姿勢推定タスクに特化したモデルである[1]。COCO Keypointsデータセットで事前学習されており、単一のネットワークで物体検出と姿勢推定を実行する。
COCO Keypoints Dataset
Microsoft COCOデータセットの一部であり、人体の17個のキーポイント(鼻、目、耳、肩、肘、手首、腰、膝、足首)をアノテーションしたデータセットである[2]。各キーポイントはx座標、y座標、可視性フラグの3つの値で表現される。20万枚以上の画像に25万人以上の人物インスタンスがアノテーションされている。
3. 技術的特徴
- 改良されたアーキテクチャ
YOLO11は前世代のYOLOv8mと比較して、パラメータ数を22%削減しながら、COCOデータセット上で高いmAP(mean Average Precision)を達成する。バックボーンとネックアーキテクチャの改良により、特徴抽出能力が向上している。
- 17個のキーポイント検出
人体の主要な関節位置を示す17個のキーポイントを検出する。各キーポイントには座標(x, y)と信頼度スコアが付与され、信頼度閾値によるフィルタリングが可能である。
- リアルタイム処理
単一ステージの検出器として設計されており、画像を一度処理するだけでバウンディングボックスとキーポイントを同時に予測する。これにより推論速度が向上し、リアルタイム処理が可能となる。
- 柔軟な推論環境
エッジデバイス、クラウドプラットフォーム、NVIDIA GPUをサポートするシステムなど、多様な環境で実行可能である。本プログラムではCUDAの可用性を自動的に検出し、GPUが利用可能な場合はGPU上で推論を実行する。
4. 実装の特色
プログラムはGoogle Colaboratory環境での実行を前提としており、以下の機能を備える。
- 公式サンプル画像(Ultralytics提供のbus.jpg)での自動デモンストレーション
- ユーザによる任意の画像のアップロードと処理
- 検出されたキーポイントの詳細情報(ID、部位名、座標、信頼度)のテキスト出力
- 処理結果の視覚化表示(骨格線による関節の接続を含む)
- 処理済み画像の自動保存機能(/content/outputディレクトリ)
- 信頼度閾値(0.5)によるキーポイントフィルタリング
5. 参考文献
[1] Jocher, G., & Qiu, J. (2024). Ultralytics YOLO11 (Version 11.0.0) [Computer software]. GitHub. https://github.com/ultralytics/ultralytics
[2] Lin, T.-Y., Maire, M., Belongie, S., Hays, J., Perona, P., Ramanan, D., Dollár, P., & Zitnick, C. L. (2014). Microsoft COCO: Common Objects in Context. In D. Fleet, T. Pajdla, B. Schiele, & T. Tuytelaars (Eds.), Computer Vision – ECCV 2014 (pp. 740–755). Springer. https://doi.org/10.1007/978-3-319-10602-1_48
実験・研究スキルの基礎:Google Colabで学ぶ姿勢推定実験
1. 実験・研究のスキル構成要素
実験や研究を行うには、以下の5つの構成要素を理解する必要がある。
1.1 実験用データ
このプログラムでは人物が写っている画像ファイルが実験用データである。
1.2 実験計画
何を明らかにするために実験を行うのかを定める。
計画例:
- 信頼度閾値がキーポイント検出数に与える影響を確認する
- 画像内の人物数とキーポイント検出精度の関係を調べる
- 姿勢の異なる人物(立位、座位、横向きなど)での検出精度を比較する
- 遮蔽や重なりがある場合のキーポイント検出状況を確認する
- 特定のキーポイント(顔、上半身、下半身)の検出信頼度の傾向を分析する
1.3 プログラム
実験を実施するためのツールである。このプログラムはUltralyticsのYOLO11-poseモデルとGoogle Colaboratoryのファイルアップロード機能を使用している。
- プログラムの機能を理解して活用することが基本である
- 基本となるプログラムを出発点として、将来、様々な機能を自分で追加することができる
1.4 プログラムの機能
このプログラムは画像から人体の17個のキーポイントを検出する。
入力データ:
- 画像ファイル(JPG、PNG形式)
- 信頼度閾値:プログラム内で0.5に固定されている
出力情報:
- 検出されたキーポイントの詳細情報(ID、部位名、座標、信頼度)
- 視覚化された結果画像(キーポイントと骨格線を重畳表示)
- 処理済み画像の保存(/content/outputディレクトリ)
検出される17個のキーポイント:
- 顔部:鼻、左目、右目、左耳、右耳
- 上半身:左肩、右肩、左肘、右肘、左手首、右手首
- 下半身:左腰、右腰、左膝、右膝、左足首、右足首
1.5 検証(結果の確認と考察)
プログラムの実行結果を観察し、姿勢推定の特性を考察する。
基本認識:
- 画像の条件を変えると結果が変わる。その変化を観察することが実験である
- 良い結果と悪い結果は目的によって異なる
観察のポイント:
- 検出されたキーポイントの数は17個全てか、それとも一部のみか
- 各キーポイントの信頼度スコアはどの程度か
- 遮蔽されている関節のキーポイントは検出されているか
- 姿勢が大きく異なる人物(横向き、しゃがんでいる等)でも検出できるか
- 複数人物が重なっている場合、それぞれのキーポイントは正しく区別されているか
- 骨格線の接続は自然に見えるか
2. 間違いの原因と対処方法
2.1 プログラムのミス(人為的エラー)
プログラムがエラーで停止する
- 原因:構文エラー、必要なライブラリがインストールされていない
- 対処方法:エラーメッセージを確認し、提供されたコードと比較する
画像のアップロードができない
- 原因:ファイル形式が対応していない、またはファイルサイズが大きすぎる
- 対処方法:JPGまたはPNG形式の画像を使用する。サイズが大きい場合は事前に縮小する
モデルのダウンロードに時間がかかる
- 原因:初回実行時にYOLO11-poseモデルをダウンロードしている
- 対処方法:これは正常な動作である。ダウンロードが完了するまで待つ
結果画像が表示されない
- 原因:matplotlibの設定問題、またはメモリ不足
- 対処方法:ランタイムを再起動して最初から実行する
2.2 期待と異なる結果が出る場合
キーポイントが全く検出されない
- 原因:画像に人物が写っていない、または人物が小さすぎる
- 対処方法:人物が明確に写っている画像を使用する。人物が画像全体の一定割合以上を占めることが望ましい
一部のキーポイントのみ検出される
- 原因:関節が衣服や他の物体で遮蔽されている、または画像の端で切れている
- 対処方法:これは正常な動作である。遮蔽や欠損がキーポイント検出に与える影響を観察する機会である
信頼度が低いキーポイントが多い
- 原因:画像の解像度が低い、照明条件が悪い、姿勢が複雑である
- 対処方法:信頼度の低いキーポイントの位置や姿勢の特徴を記録し、どのような条件で信頼度が下がるか分析する
複数人物のキーポイントが混在する
- 原因:人物が重なっている、または近接している
- 対処方法:結果を詳細に観察し、どの程度の重なりまで正確に分離できるか確認する。これは姿勢推定モデルの限界を理解する機会である
骨格線の接続が不自然
- 原因:キーポイントの位置推定に誤差がある、または遮蔽により一部のキーポイントの位置が不正確
- 対処方法:どのキーポイントの推定精度が低いかを特定し、その原因(遮蔽、姿勢、照明等)を考察する
3. 実験レポートのサンプル
姿勢による検出精度の比較
実験目的:
人物の姿勢(正面立位、側面立位、座位、しゃがみ姿勢)がキーポイント検出の精度と信頼度に与える影響を明らかにする。
実験計画:
同一人物が異なる姿勢をとった4枚の画像を用意し、各姿勢でのキーポイント検出状況を比較する。
実験方法:
プログラムを実行し、各画像について以下の項目を記録する。
- 検出されたキーポイント数(最大17個)
- 各部位(顔部、上半身、下半身)の平均信頼度
- 信頼度0.5未満のキーポイント数
- 検出されなかったキーポイント(該当する場合)
実験結果:
| 姿勢 | 検出キーポイント数 | 顔部平均信頼度 | 上半身平均信頼度 | 下半身平均信頼度 | 低信頼度キーポイント数 |
|---|---|---|---|---|---|
| 正面立位 | XX/17 | 0.XX | 0.XX | 0.XX | X |
| 側面立位 | XX/17 | 0.XX | 0.XX | 0.XX | X |
| 座位 | XX/17 | 0.XX | 0.XX | 0.XX | X |
| しゃがみ姿勢 | XX/17 | 0.XX | 0.XX | 0.XX | X |
考察:
- (例文)正面立位ではすべてのキーポイントが検出され、信頼度も全体的に高かった。この姿勢が最も検出に適していると考えられる
- (例文)側面立位では片側の腕や脚が遮蔽されるため、検出キーポイント数が減少した。遮蔽された側のキーポイントは検出されないか、信頼度が著しく低下した
- (例文)座位では下半身のキーポイント(膝、足首)の信頼度が低下した。椅子による遮蔽と関節の角度変化が影響していると推測される
- (例文)しゃがみ姿勢では全体的に信頼度が低下し、特に腰と膝のキーポイントで顕著であった。標準的な立位姿勢とは大きく異なる骨格配置が検出精度に影響を与えたと考えられる
- (例文)顔部のキーポイントは姿勢によらず比較的安定して検出されたが、体幹部と四肢のキーポイントは姿勢の影響を受けやすいことが確認できた
結論:
(例文)本実験により、姿勢推定モデルは正面立位で最も高い精度を示し、姿勢が標準的な立位から離れるほど検出精度が低下することが確認できた。実用的な応用では、対象となる姿勢の種類に応じて検出精度の変動を考慮する必要がある。また、遮蔽や関節角度の大きな変化が検出精度に与える影響は大きく、これらの条件下では信頼度の低いキーポイントが増加することが明らかになった。