OpenPoseとはなにか
OpenPoseは「ポーズ」という名前の通り、画像や動画などから人間の体の動きを認識できる技術です。この仕組みを使って、抽出したポーズと同じポーズの新しい画像を生成することが可能です。
Stable Diffusion
Stable Diffusionという有名な画像生成AIがあります。使用方法はいくつかありますが、パソコン内にインストールし環境構築をすれば、Chromeなどのブラウザ上で様々な画像生成が可能なAIです。
拡張機能のControlNet内にある機能の一つ
Stable Diffusionはカスタマイズ性が高く、拡張機能の一つにより細かな条件での画像生成を実現するControlNetというものがあります。そのControlNet内の機能の一つにあたるのがOpenPoseです。
棒人間を使って画像を生成する
OpenPoseは読み込んだ画像や動画の人物のポーズから、棒人間のような形でポーズを抽出します。そのポーズデータを元に、プロンプトを入力することで新たな画像生成ができる、という仕組みです。
Stable Diffusion/ControlNet/OpenPoseのインストール方法
OpenPoseを利用するステップとしては
①Stable Diffusionのインストール
②ControlNetのインストール
③OpenPoseのインストール
の3ステップあります。0からの環境構築はややステップが多く、スムーズに進めば上記の手順通りですが、いくつかつまずくポイントがあるので注意してください。本記事の執筆にあたり実際にやってみてつまずいた箇所もご紹介します。
パソコンのスペックが十分か確認
まず、Macの場合はM1チップが入っていないとStable Diffusionを利用できません。2020年以前のモデルでは使用不可です。左上のリンゴマークを開き「このMacについて」からM1チップが入っているか確認してください。
Windowsの場合、グラフィックボード(GPU)が必要です。ゲーミングPCやクリエーター用のPCでない場合、GPUが搭載されていないケースも多いため、注意してください。
また、動作環境としてメモリが十分に確保されているかも確認してください。筆者の場合、メモリは16GBでしたが問題なく作動しました。
Stable Diffusionのインストール
まず、Stable DiffusionをPCにインストールする必要があります。今回は、Stable Diffusion WebUI(AUTOMATIC1111)というバージョンを用います。
MacとWindowsでは手順が違いますが、今回はWindows版の手順を紹介します。
インストールに必要なもの
- Pythonのインストール
- Gitのインストール
- Stable Diffusion WebUI(AUTOMATIC1111)のインストール
Windowsのバージョン確認

32ビットか64ビットかを確認してください。システム→詳細設定で、システムの種類のところに記載されています。今回は64ビットです。
Pythonのダウンロード
https://www.python.org/downloads/release/python-3106/にアクセスして、Python 3.10.6をダウンロードします。画面を下までスクロールして、Windows installer (64-bit)を選択します。

ダウンロードしたらインストーラーの「python-3 3.10.6-amd64」を開きます。

インストーラーを開いたら、一番下の「Add Python 3.10 to PATH」に必ずチェックを入れてください。このチェックを忘れて、Stable Diffusionがうまく起動できないケースがよくあるようです。
Install Nowをクリックしてください。

Setup was successfulの画面が表示されたら、インストール完了です。

Gitのインストール
https://git-scm.com/downloads/winにアクセスして、Gitをインストールします。
Standalone Installerの64-bit Git for Windows Setup.を選択します。

ダウンロードしたらインストーラーの「Git-2.47. 1.2-64-bit」を開きます。

インストーラーを開いたら、各ステップをデフォルト選択肢のままで進めていきます。


Completing the Setup Wizardの画面までいったら完了です。

Stable Diffusion Web UIのインストール
任意のフォルダ上(今回はダウンロード配下)で右クリック→Open Git Bash hereを選択します。

ターミナルが開かれるので、以下のコマンドを入力して、Enterを押してください。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

そのままダウンロードが始まります。問題なくダウンロードできたら、以下の画面になります。

先程のダウンロード配下のフォルダに、stable-diffusion-webuiというフォルダが作成されているはずです。
stable-diffusion-webuiのフォルダ内に、アルファベット順で下の方にwebui-user(種類:Windowsパッチ ファイル)がありますので、ダブルクリックします。

ここで、問題がなければ、ダウンロードが開始されます。以下の画面のように、ダウンロードファイル容量や、ダウンロード時間が表示されていれば、そのまま待てば問題ありません。

ダウンロードが完了すると、http://127.0.0.1:7860が自動的に開きます。もし自動的に開かない場合でも、Chromeなどのブラウザで、上記アドレスを入力すれば開けます。
以下の画面が出ていれば、インストールは成功です。

Stable Diffusionのインストールがうまくいかない場合
Stable Diffusion Web UIのダウンロード時に、couldn't launch python 9009 のエラーが出ることがよくあるようです。(筆者もなりました。)

その場合、いくつか方法があります。
Pythonの再インストール
Pythonのダウンロード時に「Add Python 3.10 to PATH」のチェックを入れ忘れている場合があります。一度Pythonをアンインストールしてから、チェックを入れて再度インストールしてください。
Pythonのバージョンの確認
Windowsの左下の入力バーに「cmd」と入力してコマンドプロンプトを開き、「python -V」と入力すると、Pythonのバージョンを確認できます。

このとき、Add Python 3.10.6と出ていれば問題ありませんが、筆者の場合は、「Python」とのみ表示されていて、最新バージョンが何故か反映されていませんでした。
その場合、Windowsの設定を開く→アプリと機能→アプリ実行エイリアスをクリックしてください。

アプリ インストーラーの「python.exe」「python3.exe」ともにチェックを「オフ」にしてください。その後、再度cmdでpython-Vと入力すると、最新バージョンが反映されていました。

わからない時はエラー内容で検索してみる
他にも、Pythonを参照するフォルダの優先度が違うケースがあり、Windows上の設定で優先度を変更する必要があるようです。(筆者も同様の作業をしましたが改善されず、上記のPythonのバージョンに問題があることにたどり着きました)
インターネット上に、同じように悪戦苦闘している人や、解決方法を載せてくれている方もたくさんいるので、エラーの内容などで検索してみてください。
ControlNetのインストール
さて、ここからはStable Diffusion WebUIの拡張機能をインストールします。
Stable Diffusion WebUIの上のバーにある一番右のExtensionsタブを開きます。

一つ下の段のタブのInstall from URLを開きます。
URL for extension’s git repositoryの欄にhttps://github.com/Mikubill/sd-webui-controlnet.gitを入力し、Installを押します。

インストールしたら、Installedタブを開き、「sd-webui-controlnet」がインストールされているのを確認します。その後、Apply and restart UIをクリックして、変更を反映させてください。

一番上のtxt2imgタブを開き、少しスクロールしたところにControlNetが反映されているか確認してください。

OpenPoseのダウンロード
ControlNetには様々な機能があり、一括でダウンロードする方法もありますが、今回はOpenPoseだけをダウンロードしてみます。
以下のアドレスにアクセスしてください。
https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main?_fsi=9UFUaJ4h
下の方にスクロールすると、「control_v11p_sd15_openpose_fp16.safetensors」があるので、右側のダウンロードボタンを押します。

ダウンロードしたファイルを、stable-diffusion-webuiフォルダ配下のmodels配下の ControlNetの中に格納してください。

これで、やっと準備完了です! 実際にOponPoseで棒人間を使って画像を生成していきます。
OponPoseを実際に使ってみる
元の画像のポーズから、同じポーズで別の画像を生成
- Stable Diffusion WebUIを開き、txt2imgタブを開きます。
- ControlNetの◀ボタンを押して展開します。
- Single Imageタブに、画像をアップロードします。
- 下のEnableにチェックを入れます。
- 下のControl Typeで、OpenPoseのボタンを選択します。
- 下のPreprocessorのプルダウンからopenpose_fullを選択します。
- 右の Modelの欄のさらに右の更新ボタンを押します。
- [Modelのプルダウンからcontrol_v11p_sd15_openpose_fp16を選択します。
- 左の赤い星のボタンを押すと、下の図のように棒人間が出力されます。

人物の写真から、棒人間でどういうポーズをとっているかを判定してくれます。
この棒人間のポーズを元に、画像を生成してみましょう。
画面の一番上にスクロールし、プロンプトを英語で入力します。今回はアニメタッチで、バレーボールをしている少女が腕組をしているポーズを生成します。
"An anime-style illustration of a female volleyball player standing proudly with arms crossed. She has medium-length brown hair tied in a ponytail, wearing a blue and white uniform with the number 7 on her chest. The background features a brightly lit indoor volleyball court with dramatic lighting highlighting her figure."

右のGenerateを押すと、画像が生成されます。

棒人間と同じポーズの画像が生成されました。背景に余計な要素がありますが、背景を消して要素だけ自動で切り出してくれるお手軽に使える画像生成AIなどを使えば、簡単に編集できます。
元の画像のポーズから、棒人間を編集する
次に、先ほど読み込んだ画像の棒人間のポーズを編集してみましょう。
棒人間画像の「Preprocessor Preview」の画像の右下の「Edit」をクリックします。

棒人間のポーズを自分で操作する画面になります。

ドラッグ&ドロップで、ポーズを変更してみましょう。

ポーズが完成したら、左上の「ControlNetにポーズを送信」をクリックすると、変更が反映されます。ここからは、先程と同じようにプロンプトを入れて画像を生成できます。
OpenPoseの特徴・料金・実用性
OpenPoseで他にできること
OpenPoseでは、棒人間の抽出に関連した便利な機能があります。
- 画像だけでなく動画からも検出可能
- 顔や指の関節など細かいところまで検出可能
- 被写体が複数人でも検出可能
- 画像では写ってない部分でも推測可能
上手に使いこなせれば、プロンプトでは指示しきれないようなポーズの指定もできるようになるでしょう。
OpenPoseの料金
研究目的などは基本的には無料で使えますが、商用利用の場合は有料です。約250万円/年のライセンス料がかかります。
OpenPoseの実用性
筆者が使ってみた感想も踏まえると、そもそも、AIによる画像生成のスキルが必要と感じました。棒人間のポーズを抽出したり編集したりするのは簡単にできますが、ポーズ以外の要素で、生成したい画像をイメージ通りに上手に作るためには、プロンプト/ネガティブプロンプト/生成パラメータなどをうまく指定する必要があります。
いきなりOpenPoseを使うのではなく、まずはStable Diffusionでの画像生成が一定できるようになった後、応用的にOpenPoseを使っていく、という順番が正しいように感じます。
まとめ:Stable Diffusionを使える人はOpenPoseでさらに自由度を高めよう
棒人間から画像を生成できるOpenPoseは、すでにStable Diffusionを使いこなしている人にとっては、マウス操作だけで簡単にポーズを指定できるので非常に有益なツールです。一方で、Stable Diffusionをはじめ、AIによる画像生成そのものをあまりしたことがない人がいきなり触れるには、環境構築のステップの多さや、ポーズ以外の要素をプロンプトで詳細に指定するのが障壁になるかもしれません。興味を持っている方は、この記事を参考にStable DiffusionをインストールしてOpenPoseをまずは触ってみて、そこからAI画像生成について理解を深めてください!