この記事のポイント
- OpenPoseは、人体の姿勢を高精度に推定できるオープンソースのライブラリ
- リアルタイムでの処理が可能で複数人物に対応
- 研究用途と商用利用で異なるライセンスを提供
- ComfyUIなどの画像生成ツールと組み合わせて活用可能
- スポーツ解析やヘルスケアなど幅広い分野での応用が期待
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
近年のAI技術の進展により、人体の姿勢推定技術も大きな進化を遂げています。その中でもOpenPoseは、その高精度な分析能力と実用性から、研究者や開発者の間で特に注目を集めています。
本記事では、OpenPoseの基本的な機能から、実際の導入方法、さらにはComfyUIでの具体的な活用方法まで、実践的な情報を詳しく解説していきます。
商用利用とアカデミック利用それぞれのライセンスの違いや、スポーツ解析、ヘルスケア、エンターテインメントなど、様々な分野での応用可能性についても触れていきます。
この記事を通じて、OpenPoseの持つ可能性と実践的な活用方法について、深く理解していただければ幸いです。
目次
OpenPoseとは
OpenPoseは、画像や動画から人間の姿勢を高精度に推定できるオープンソースライブラリです。
2018年にカーネギーメロン大学のPerceptual Computing Labで開発され、現在ではAI画像生成分野においても重要な技術として注目を集めています。
特にStable DiffusionのControlNetと組み合わせることで、AIイラスト生成における自由度の高いポーズ制御を実現しています。
従来の画像生成AIでは、プロンプトのみでポーズを指定する必要があり、意図した通りのポーズを生成することは困難でした。OpenPoseはこの課題を解決し、人物の姿勢を正確に検出・制御することで、より意図に沿った画像生成を可能にします。
公式READMEより引用
OpenPoseの主要機能
OpenPoseは、画像認識技術の分野で特に注目を集めるツールです。
その理由は、高精度な姿勢推定だけでなく、リアルタイム処理能力や複数人物の同時検出といった、実用性の高い機能を備えている点にあります。
以下に、OpenPoseの主な機能と特徴を詳しく説明します。
高精度な姿勢推定
OpenPoseは、画像や動画から人体の関節ポイント(キーポイント)を高精度で推定することが可能です。
これにより、全身のポーズだけでなく、手や顔の細かい動きまで詳細に解析できます。特にスポーツ解析や医療分野での応用が期待されています。
リアルタイム処理能力
OpenPoseは、高速なアルゴリズムによりリアルタイムでの処理が可能です。これにより、ライブ映像やインタラクティブなアプリケーションに組み込むことが容易になっています。
例えば、ゲームやパフォーマンスモニタリングといった用途で利用されています。
マルチパーソンの同時検出
OpenPoseは、1枚の画像やフレーム内で複数の人物を同時に検出し、それぞれの姿勢を独立して解析することができます。
この機能は、混雑した環境での行動分析やスポーツチーム全体の動きの解析など、さまざまな用途で活用されています。
多様な出力情報
OpenPoseは、以下のような多様な出力情報を提供できます:
- 全身の骨格情報(キーポイントの位置と接続)
- 手の詳細な動き(指の関節位置)
- 顔の表情や向き(フェイシャルキーポイント)
これにより、用途に応じて必要なデータを柔軟に取得できます。
拡張性とカスタマイズ性
OpenPoseはオープンソースとして提供されており、研究者や開発者が独自のアルゴリズムや機能を追加しやすい環境を提供しています。これにより、特定の用途に特化したカスタマイズが可能です。
多くのプラットフォームで動作
OpenPoseは、Windows、Linux、MacOSなど、多くのプラットフォームで動作するよう設計されています。また、CPUとGPUの両方を活用することで、異なるハードウェア環境でも柔軟に動作します。
これらの機能により、OpenPoseは学術的な研究だけでなく、エンターテイメント、スポーツ解析、ヘルスケア、セキュリティ分野など、幅広い分野での応用が進んでいます。高精度で使いやすい姿勢推定ツールとして、今後もその活用範囲がさらに広がることが期待されます。
OpenPoseの種類について
OpenPoseは、人体のポーズ推定を行う技術ですが、大きく2つの形態が存在し、それぞれが異なる開発者とライセンス条件のもとで提供されています。
技術的に関連していますが、提供形態や使用目的において異なる特性を持っています。
項目 | OpenPose (CMU) | ControlNet |
---|---|---|
ライセンスの種類 | Academic or Non-Profit Organization NonCommercial Research Use Only | Apache-2.0ライセンス |
商用利用 | 原則禁止(CMUとの別途契約が必要) | 許可されている |
利用可能範囲 | 非営利・学術目的に限定 | 商業利用を含む自由な利用が可能 |
追加契約の必要性 | 商用利用の場合はCMUとの契約が必要 | 不要 |
ライセンス条件 | 非商用研究目的でのみ使用可能 | ライセンス表記と改変の明示が必要 |
主な用途 | リアルタイムのポーズ推定 | 画像生成モデルの補助情報提供 |
以下では、それぞれの利用について詳しく説明します。
1.CMU版OpenPose
カーネギーメロン大学(Carnegie Mellon University)が開発したオリジナルのOpenPoseです。
これは、主にリアルタイムでのマルチパーソンのポーズ推定に特化しており、学術的な利用に広く用いられています。また、本来のOpenPoseとはこちらを指します。
CMU版の公式ライブラリはこちら
Github
2.ControlNet版OpenPose
ControlNetは、Stable Diffusionなどの生成モデルに姿勢情報を提供する補助的な技術であり、姿勢推定データを生成します。これは、画像生成モデルの拡張用途で利用されています。
ControlNet版はこちら
ControlNet-v1-1_fp16_safetensors(Hugging Face)
OpenPoseの商用利用について
CMU版OpenPoseのライセンスと商用利用
OpenPoseは、カーネギーメロン大学(CMU)が提供するポーズ推定技術で、以下のライセンス条件に基づいています:
-
ライセンス種類
Academic or Non-Profit Organization NonCommercial Research Use Only
このライセンスは、非営利団体や学術機関の非商用研究目的での使用に限定されており、商用利用は原則として許可されていません。
-
商用利用の条件
商用利用を希望する場合は、CMUと別途契約を結ぶ必要があります。商用プロジェクトでの利用や、製品・サービスの一部としての活用は、ライセンス違反となる可能性があります。
ControlNetのライセンスと商用利用
ControlNetは、Stable Diffusionなどの画像生成モデルに構造情報を追加する補助的な技術で、以下のライセンス条件に基づいています:
-
ライセンス種類
Apache-2.0 License
このライセンスでは、商用利用、改変、再配布が自由に許可されています。商用製品やサービスにControlNetを統合して使用することも可能です。
-
商用利用の条件
Apache-2.0ライセンスに基づくため、以下の条件を守れば商用利用が可能です。- ライセンス表記を行うこと(著作権表示を維持)
- ソースコードを改変した場合、その変更点を明示すること。
OpenPoseの導入方法
ローカルでの導入
ローカルでOpenPoseを使用する場合、公式がサポートしている導入方法は、以下の2つです。それぞれの特徴を解説します。
1. Windows Portable Demo
- 用途: 簡単にOpenPoseを試してみたい場合。
- メリット: コンパイル不要、セットアップが迅速。
- デメリット: ソースコード変更やカスタマイズ不可。
2. Compiling and Running OpenPose from Source
- 用途: コードのカスタマイズやライブラリ統合が必要な場合。
- メリット: ソースコードの編集が自由。
- デメリット: 環境構築が手間。
詳しくは、下記のURLに飛ぶと表示される、公式リポジトリの「OpenPose Doc - Installation」をご参照ください。
Stable Diffusion Web UIでの導入
今回は、Stable Diffusion Web UIの中でもForgeを用いて解説します。
ControlNetは、Stable Diffusion Web UI Forgeの拡張機能として導入します。Forge自体はControlNetの基本構成を備えており、必要なモデルを追加でインストールするだけで使用可能です。
手順
-
Stable Diffusion Web UI Forgeを準備:
-
Forgeのインストールについては、以下の記事を参照してください。
-
-
ControlNetモデルのダウンロード:
-
ControlNetのインストールについては、以下の記事で詳しく解説しています。
-
ComfyUIでの導入
ComfyUIでOpenPoseを導入する際は、適切なワークフローを選択する必要があります。以下のサイトから、ComfyUIでOpenPoseを導入するのに適したワークフローをダウンロードする事ができます。
上記のURLにアクセスすると、以下のような画面が表示されるので、赤枠で囲っている「Download」をクリックして、jsonファイルをダウンロードし、ComfyUIにインポートして下さい。
ワークフローのダウンロード
また、ComfyUIの使い方に関しては、下記の記事で詳しく解説しています。
OpenPoseの使い方
今回は、ComfyUIでの使い方をご紹介します。ワークフローは、先ほど紹介したものを使用します。
ワークフローをインポートしてみると、以下のようになっています。
ComfyUIのOpenPose用ワークフロー
それでは、各ステップに沿って作業してみましょう。
1.ControlNetモデルの選択
まずは、下記のように「Load ControllNet Model」のノードをクリックします。
「Load ControllNet Model」のノード
次に、下記画像内の赤枠で囲んだモデルを選択して下さい。
モデルの選択
2.使用したい画像の選択
次に、生成させたいポーズをした棒人間(スケルトン)の画像をアップロードします。
例えば、以下のような画像のことです。
スケルトンの例 (参考:https://civitai.com/models/151888/standing-beauty-6-pose)
これらは、CivitAiなどネット上にたくさん転がっているので、お好きなものをダウンロードして使用して下さい。
なお、後述するように、任意の画像から棒人間を抽出したり、自由に棒人間を編集する事も出来ます。
「Load Image」クリックし、画像をアップロードして下さい。
画像のアップロード
3.CheckPointとVAEの選択
下記のように、「Load Checkpoint」と「Load VAE」をクリックし、使用したいお好きなモデルを選択して下さい。
CheckPointとVAEの選択
4.CLIP TEXT Encodeへの入力
下部のCLIP TEXT Encode(Positive)にはポジティブプロンプトを、CLIP TEXT Encode(Negative)にはネガティブプロンプトを入力してください。
プロンプトの入力
5.各種パラメータの設定
下記画像の赤枠で囲んだ箇所のパラメータを設定する必要があります。
各種パラメータの設定
基本的にはデフォルトのままで大丈夫ですが、いくつか修正する可能性のあるパラメータを下記に記載します。
・steps:サンプリングのステップ数を指定します。増加させると、画像の精度が向上する可能性がありますが、処理時間が増加します。
・CFG:画像生成のガイド強度を調整します。高すぎると画像が極端になる場合があるので適宜調整してください。
・sampler name:サンプリングアルゴリズムを選択します(例: Euler, Euler A, DDIM など)。異なるアルゴリズムを試すことで出力が変化します。
・strength:ControlNetが元画像やプロンプトに対してどの程度影響を与えるかを調整します。
6.実際に生成してみた
先ほど紹介した棒人間画像を使用し、以下のプロンプトで生成してみました。
ポジティブプロンプト
A dynamic and elegant pose of a young athletic woman, standing on one leg with one arm raised, slim figure, wearing stylish sportswear, vivid lighting, studio background, smooth skin, vibrant colors, detailed anatomy, photorealistic, high-quality render
ネガティブプロンプト
Low quality, bad anatomy, distorted limbs, extra fingers, extra limbs, missing body parts, blurry image, overexposed, underexposed, unnatural lighting, unrealistic proportions, artifacts, low detail
すると、以下の画像が生成されました。
OpenPose生成結果
下記のように比較してみると、ポーズが反映されている事が分かります。
OpenPose比較
OpenPoseの棒人間(スケルトン)の抽出方法
先ほどまでの方法では、ネット上に上がっているポーズしか生成できません。そこで、用意した画像から棒人間を抽出する方法をご紹介します。
まずは、下記にアクセスして下さい。https://github.com/alessandrozonta/ComfyUI-OpenPose/blob/main/example/openpose.json
すると、以下のような画面が出てくるので、赤枠で囲んだダウンロードボタンをクリックして下さい。なお、ここでダウンロードするのは、ワークフローのjsonファイルです。
jsonファイルダウンロード 参考:ComfyUI-OpenPose
次に、ダウンロードしたjsonファイル(ワークフロー)をComfyUIにインポートして下さい。
すると、以下のような画面が表示されます。まだインストールしていないノードは、ComfyUI Managerの「Install Missing Custom Nodes」からインストールして下さい。
インポートしたワークフロー
足りないノードをインストールし終え、ComfyUIをRestartすると、以下のようにワークフローが表示されます。
ワークフロー完全版
まずは、下記の「Load Image」でお好きな画像をアップロードして下さい。
Load Image
今回は、以下の画像を使用します。
Load Image用画像
次に、下記赤枠部分にて、OpenPoseのデータセットを選択します。お好きな方を選択して下さい。
OpenPose Get Poses
今回は、「BODY_25」を選択しました。最終的には、以下のような状態になりました。
最終的なワークフローの状態
そしてワークフローを実行すると、以下のようになりました。
ワークフローの実行後
3枚の画像を並べてみると、以下のようになります。
3枚を並べた画像
上記のように、任意の画像から好きな棒人間を生成することが出来ました。後は先ほどと同様に、棒人間の画像をアップロードして使用すれば、そのポーズをした画像を生成することが出来ます。
以下の写真は、上記で作成した棒人間をもとに生成した画像を比較したものです。
作成した棒人間を使って生成した画像
OpenPose Editorの使い方
OpenPose Editorというツールを使えば、棒人間のポーズを自在に設定できるようになります。
今回は、ComfyUIでOpenPose Editorを使用する方法を解説します。
まずは、ComfyUI Managerを開き、「Install via Git URL」をクリックして下さい。
Install via Git URL
すると、入力バーが出てくるので、下記を貼り付けて下さい。
https://github.com/space-nuko/ComfyUI-OpenPose-Editor.git
以下のようになれば大丈夫です、「OK」をクリックして下さい。
URLの貼り付け
インストールを終えたら、ノードを確認してみます。右クリックをして、「Add Node」→「image」→「OpenPose Editor」の順にクリックする事で、OpenPose Editorのノードを出すことが出来ます。
Editorノードの確認
以下のようなノードを確認出来ます。
Editorノードの登場
次に、棒人間を作成してみます。「open editor」をクリックして下さい。
OpenEditorのクリック
すると、以下のようなエディターが起動します。
エディタの起動
なお、下記のようにサイズが大きすぎる表示をされた場合は、「Ctrl + -」で画面を縮小して下さい。
エディタの大きすぎる表示
後は、エディタで好きなポーズを設定し、右上の×をクリックすれば大丈夫です。
今回は、以下のように設定してみました。2人が肩を組んでいるイメージです。
エディタでの作成例
なお「×」をクリックした後は、以下のようにワークフロー上で見ると先の修正が正しく反映されていないように見えますが、気にしなくて大丈夫です。
ワークフローで正しく反映されない
それでは、OpenPoseの使い方で紹介したワークフローを修正してみましょう。「Load Image」というノードで棒人間を設定していましたが、その部分を先ほどのエディタのノードで置き換えます。「OpenPose Editor」のノードを下記の画像のように、「Apply ControlNet」のimageに接続して下さい。
ワークフローの修正
後はお好きなようにモデルの選択、パラメータの設定をしてワークフローを実行するだけです。
最終的には、以下のような画像が生成されました。
エディタによる画像生成
先ほどエディタで作成したような、2人が肩を組んでいるイメージが反映されている事が分かります。
OpenPoseの応用事例
OpenPoseはその高い精度と汎用性から、さまざまな分野での活用が期待されています。以下に代表的な応用事例を3つ挙げます。
スポーツ解析
スポーツのパフォーマンス向上やフォーム改善のために、選手の動作を詳細に解析する目的で活用される可能性があります。
特に、姿勢データをリアルタイムで収集できる点が、トレーニング中のフォーム矯正や動作効率の評価に役立つとされています。
さらに、チームスポーツにおける選手間の連携分析にも有効と考えられています。
ヘルスケアとリハビリテーション
患者の身体の動きを記録・分析することで、リハビリテーションや運動療法の効果をモニタリングするツールとしての利用が進む可能性があります。
関節の可動域や歩行分析を行い、医師や理学療法士が治療プランを調整する手助けとなるほか、高齢者の転倒リスク予測にも利用されることが期待されています。
エンターテイメントとゲーム
リアルタイムでのモーションキャプチャとして、ゲーム開発や映像制作において活用される可能性があります。OpenPoseを使うことで、高価な専用機材を使用せずにキャラクターの動きを簡単に生成できるため、効率的な制作が期待されています。
また、VR(仮想現実)やAR(拡張現実)コンテンツでのユーザー動作トラッキングにも応用され、インタラクティブな体験を提供する可能性があります。
まとめ
本記事では、OpenPoseについて解説しました。OpenPoseは、人物の姿勢をリアルタイムで認識する強力なツールで、高精度な姿勢推定を実現します。
複数の人物を同時に解析できるため、研究や産業分野において非常に有用です。また、エンターテイメント業界や医療分野など、さまざまな分野での利用が期待されています。OpenPoseを活用することで、新たな価値を生み出す可能性が広がっています。
本記事が、「OpenPose」という革新的な技術に関して、あなたの参考になれば幸いです。