2023/05/19(金) [n年前の日記]
#1 [cg_tools] OpenPose動画を作りたい。その2
_昨日
の続き。OpenPoseの静止画像を作成することはできたので、今度は動画を生成したい。
環境は、Windows10 x64 22H2。CPU : AMD Ryzen 5 5600X。GPU : NVIDIA GeForce GTX 1060 6GB。
OpenPoseDemo.exe は、CPU使用版。
環境は、Windows10 x64 22H2。CPU : AMD Ryzen 5 5600X。GPU : NVIDIA GeForce GTX 1060 6GB。
OpenPoseDemo.exe は、CPU使用版。
◎ サンプル動画を入手 :
OpenPose のバイナリと一緒に、examples\media\video.avi というサンプル動画も入っているけれど。今回は、ソレとは別の動画を渡して処理してみたい。
今回は、以下の動画を使わせてもらうことにした。25fpsの動画。1920x1080版をDL。
_Video Of Person Running In The Park Free Stock Video Footage, Royalty-Free 4K & HD Video Clip
ちなみに、以下のサイトで検索して探したのだけど…。何故にどの動画もスローモーションなのか…。
_Running Videos, Download The BEST Free 4k Stock Video Footage & Running HD Video Clips
今回は、以下の動画を使わせてもらうことにした。25fpsの動画。1920x1080版をDL。
_Video Of Person Running In The Park Free Stock Video Footage, Royalty-Free 4K & HD Video Clip
ちなみに、以下のサイトで検索して探したのだけど…。何故にどの動画もスローモーションなのか…。
_Running Videos, Download The BEST Free 4k Stock Video Footage & Running HD Video Clips
◎ 512x512に加工 :
後々、画像生成AI Stable Diffusion web UI に渡したいので、元動画を、512x512の動画に加工したい。
今回は、Avidemux 2.7.8 を使って作業した。ちなみに、現行版は 2.8.1 の模様。
_Avidemux のダウンロードと使い方 - k本的に無料ソフト・フリーソフト
フィルターを設定。1:1にトリミングしてから、512x512に拡大縮小。人物が出ていない時間(?)ができてしまったので、動画の前後を削除。
大体以下のような雰囲気の動画になった。これは256x256に縮小してるけど…。
今回は、Avidemux 2.7.8 を使って作業した。ちなみに、現行版は 2.8.1 の模様。
_Avidemux のダウンロードと使い方 - k本的に無料ソフト・フリーソフト
フィルターを設定。1:1にトリミングしてから、512x512に拡大縮小。人物が出ていない時間(?)ができてしまったので、動画の前後を削除。
大体以下のような雰囲気の動画になった。これは256x256に縮小してるけど…。
◎ OpenPose動画を作成 :
動画を解析して、OpenPose動画を出力する。
このままだと、MotionJPEG の avi なので、Webブラウザでも再生できるように、ffmpeg 6.0 を使ってmp4に変換した。
こんな感じの動画になった。動きをバッチリ抽出できてる。
bin\OpenPoseDemo.exe --video test\src.mp4 --write_video outputs\dst.avi --disable_blending
- --video IN.avi : 入力動画。一般的には .avi を渡すようだけど、.mp4 もイケた。
- --write_video OUT.avi : 出力動画。MotionJPEGで保存されるっぽい。
- --disable_blending : OpenPose部分のみを出力。
このままだと、MotionJPEG の avi なので、Webブラウザでも再生できるように、ffmpeg 6.0 を使ってmp4に変換した。
ffmpeg -i dst.avi -vcodec libx264 -pix_fmt yuv420p dst.mp4
こんな感じの動画になった。動きをバッチリ抽出できてる。
◎ 連番画像として出力 :
後々、Stable Diffusion web UI で作業をする際に、OpenPose の静止画像があったほうが調整しやすいはずなので、ffmpeg を使って、動画を連番画像として出力。
ffmpeg -i results.avi seq\%04d.png or ffmpeg -i results.avi -vcodec png -r 25 %04d.png
- -i IN.avi : 入力動画
- -vcodec png : 出力フォーマットをpngにする
- -r N : フレームレート
- %04d.png : 4桁の数字で示された連番画像として保存
◎ 形が違うことに気づいた :
今頃になって気づいたけれど、Stable Diffusion web UI で指定する OpenPose と、OpenPoseDemo.exe が生成する OpenPose は、形がちょっと違う…。
_Windows への OpenPose導入手順【2018/12/30追記】 - Qiita
_Windows10にてGPU版OpenPoseを動かしてみた - Qiita
どうやら、1.3.0 から 1.4.0 になった時点で、形が変わったように見える。
であれば、OpenPose 1.3.0 のバイナリを入手すれば、Stable Diffusion web UI のソレに一致させることができるのだろうか。しかし、そう上手くはいかないようで。
_Releases - CMU-Perceptual-Computing-Lab/openpose - GitHub
1.3.0までは、GPU版しかなくて、1.4.0からCPU版のバイナリも公開されるようになったっぽい。CPU版を使いたいのだけど、困った…。
GPU版 OpenPose 1.3.0 を動かすためには、CUDA 8.0、cuDNN 5.1 が必要になるようで…。自分の環境は、Stable Diffusion web UI を動かすために、CUDA 11.8 をインストール済みなんだよな…。異なるバージョンをインストールすることってできるのかな…。
前述のページを書いた方が、コメント欄でCPU版を公開してくれているので、DLして実行してみたけれど、以下の .dll が無いと言われてしまった…。
どうやら CUDA の複数バージョンを共存させる方法を実現して、GPU版を使うしかないようだなと…。
- Stable Diffusion web UI + ControlNet : 首から足の根元まで2本の線が出てる。
- OpenPose 1.7.0 : 首から腰まで1本の線になっている。
_Windows への OpenPose導入手順【2018/12/30追記】 - Qiita
_Windows10にてGPU版OpenPoseを動かしてみた - Qiita
どうやら、1.3.0 から 1.4.0 になった時点で、形が変わったように見える。
であれば、OpenPose 1.3.0 のバイナリを入手すれば、Stable Diffusion web UI のソレに一致させることができるのだろうか。しかし、そう上手くはいかないようで。
_Releases - CMU-Perceptual-Computing-Lab/openpose - GitHub
1.3.0までは、GPU版しかなくて、1.4.0からCPU版のバイナリも公開されるようになったっぽい。CPU版を使いたいのだけど、困った…。
GPU版 OpenPose 1.3.0 を動かすためには、CUDA 8.0、cuDNN 5.1 が必要になるようで…。自分の環境は、Stable Diffusion web UI を動かすために、CUDA 11.8 をインストール済みなんだよな…。異なるバージョンをインストールすることってできるのかな…。
前述のページを書いた方が、コメント欄でCPU版を公開してくれているので、DLして実行してみたけれど、以下の .dll が無いと言われてしまった…。
cublas64_80.dll cudart64_80.dll curand64_80.dll
どうやら CUDA の複数バージョンを共存させる方法を実現して、GPU版を使うしかないようだなと…。
◎ COCOモデルを使えばいいらしい :
調べてみたら、現行版の OpenPose 1.7.0 でも、COCOモデルなるものを使えば、Stable Diffusion web UI + ControlNet と同じ形状で OpenPose を出力できそうだと分かった。
COCOモデルを使うには、OpenPoseインストールフォルダ\models\ 内で、getCOCO_and_MPII_optional.bat を実行して、モデルデータを追加ダウンロードする必要がある。
また、OpnePoseDemo.exe には、--model_pose COCO を渡してやる。
Stable Diffusion web UI + ControlNet + OpenPose で利用できる形状のソレを得ることができた。
しかし、そもそも、Stable Diffusion web UI で、動画に基づいて各ポーズを指定したいだけなら、ControlNet のプリプロセッサで OpenPose を通せば良いのではないか。わざわざ別途、OpenPoseDemo.exe を動かす必要も無いのでは…。
COCOモデルを使うには、OpenPoseインストールフォルダ\models\ 内で、getCOCO_and_MPII_optional.bat を実行して、モデルデータを追加ダウンロードする必要がある。
また、OpnePoseDemo.exe には、--model_pose COCO を渡してやる。
bin\OpenPoseDemo.exe --image_dir test --write_images outputs --model_pose COCO
bin\OpenPoseDemo.exe --video src.mp4 --write_video dst.avi --model_pose COCO --disable_blending
Stable Diffusion web UI + ControlNet + OpenPose で利用できる形状のソレを得ることができた。
しかし、そもそも、Stable Diffusion web UI で、動画に基づいて各ポーズを指定したいだけなら、ControlNet のプリプロセッサで OpenPose を通せば良いのではないか。わざわざ別途、OpenPoseDemo.exe を動かす必要も無いのでは…。
この記事へのツッコミ
[ ツッコミを読む(1) | ツッコむ ]
#2 [nitijyou] ワサビ作戦失敗
ウチでは、電動アシスト自転車が車の横に止めてあるのだけど、風が強い日に倒れてしまって、車の側面を傷つけてしまったことがあって。それ以来、100円ショップで買ったフック付きゴム紐を使って、自転車を縁側に固定してる。
しかし、飼い犬が、稀にそのゴム紐を齧り切ってしまって…。昨日も噛み切られてしまった…。もう10回ぐらいは噛み切られている気がする…。どうにか齧らないようにできないものかな…。
ググってみたら、テーブルの足、椅子の足等、犬に齧られると困る部分にワサビを塗っておく策を考えた方が居るようで。一般的には、ワサビの刺激臭が犬にとってはキツイらしい。
もちろん刺激物なので、犬に日常的に食べさせるなんてもってのほか。下手すると犬の内臓を痛めてしまう可能性があるらしいけど。そもそも犬が嫌がるなら、食べることもないだろう…。
そんなわけで、試しに、買ってきたばかりのゴム紐にワサビを塗りつけてみた。
しかし、朝になったら、また噛み切られていた…。しかも、普段は買ってきたばかりのゴム紐を齧ることなんてなかったのに、交換した途端にやらかしてくれるとは…。そんなにも齧りたくなる匂いだったのか…。
稀に居るらしいけど、どうやらウチの犬も、ワサビ大好きな個体だったようだなと…。作戦失敗。
しかし、飼い犬が、稀にそのゴム紐を齧り切ってしまって…。昨日も噛み切られてしまった…。もう10回ぐらいは噛み切られている気がする…。どうにか齧らないようにできないものかな…。
ググってみたら、テーブルの足、椅子の足等、犬に齧られると困る部分にワサビを塗っておく策を考えた方が居るようで。一般的には、ワサビの刺激臭が犬にとってはキツイらしい。
もちろん刺激物なので、犬に日常的に食べさせるなんてもってのほか。下手すると犬の内臓を痛めてしまう可能性があるらしいけど。そもそも犬が嫌がるなら、食べることもないだろう…。
そんなわけで、試しに、買ってきたばかりのゴム紐にワサビを塗りつけてみた。
しかし、朝になったら、また噛み切られていた…。しかも、普段は買ってきたばかりのゴム紐を齧ることなんてなかったのに、交換した途端にやらかしてくれるとは…。そんなにも齧りたくなる匂いだったのか…。
稀に居るらしいけど、どうやらウチの犬も、ワサビ大好きな個体だったようだなと…。作戦失敗。
[ ツッコむ ]
以上、1 日分です。
>>COCOモデルを使えばいいらしい
最近、ブログ主さんと同様にアニメを試そうとしており、
調べ周っていたところこちらに行き着きました。
おかげさまでモデルの違いに気づくことができました。
ありがとうございます。
>>動画に基づいて各ポーズを指定したいだけなら、ControlNet のプリプロセッサで OpenPose を通せば良いのではないか。わざわざ別途、OpenPoseDemo.exe を動かす必要も無いのでは…。
一度、ポーズだけの動画を作ってしまえば都度の前処理が軽くなって
長期的には時間の節約になるのではないかと考えています。
なにかと試行錯誤が多くなりがちので......