mieki256's diary



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使用版。

サンプル動画を入手 :

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

512x512に加工 :

後々、画像生成AI Stable Diffusion web UI に渡したいので、元動画を、512x512の動画に加工したい。

今回は、Avidemux 2.7.8 を使って作業した。ちなみに、現行版は 2.8.1 の模様。

_Avidemux のダウンロードと使い方 - k本的に無料ソフト・フリーソフト

フィルターを設定。1:1にトリミングしてから、512x512に拡大縮小。人物が出ていない時間(?)ができてしまったので、動画の前後を削除。

大体以下のような雰囲気の動画になった。これは256x256に縮小してるけど…。

OpenPose動画を作成 :

動画を解析して、OpenPose動画を出力する。
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 は、形がちょっと違う…。
  • 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 を渡してやる。
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 を動かす必要も無いのでは…。

この記事へのツッコミ

Re: OpenPose動画を作りたい。その2 by アサイー    2023/05/25 19:38
>>形が違うことに気づいた
>>COCOモデルを使えばいいらしい

最近、ブログ主さんと同様にアニメを試そうとしており、
調べ周っていたところこちらに行き着きました。
おかげさまでモデルの違いに気づくことができました。
ありがとうございます。

>>動画に基づいて各ポーズを指定したいだけなら、ControlNet のプリプロセッサで OpenPose を通せば良いのではないか。わざわざ別途、OpenPoseDemo.exe を動かす必要も無いのでは…。

一度、ポーズだけの動画を作ってしまえば都度の前処理が軽くなって
長期的には時間の節約になるのではないかと考えています。
なにかと試行錯誤が多くなりがちので......

以上です。

過去ログ表示

Prev - 2023/05 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project