見出し画像

Few-Shot-Patch-Based-Trainingで3D動画のイラスト風変換

偉大なるフォロワーのIzumi Satoshi(@izumisatoshi05)さんのご助力を得て、nicolai256/Few-Shot-Patch-Based-Trainingというツールによる3D動画の絵柄変換実験のメモです。Izumi Satoshiさん本当にありがとう。一人でやってたら絶対心折れてた……。

Few-Shot-Patch-Based-Trainingでなにができるか

自分は最初動画のフレーム補完的なことができるツールだと思っていたのですがそれは半分正解で半分間違いでした。
簡単に言うと101枚の画像からできている動画を、21枚の画風変更した画像の絵柄を元に101枚分絵柄を変更してしまうツールです(枚数比は任意に設定できます)。

今Twitterの一部の界隈ではAIによる画像生成画像をベースに動画制作するのが流行っております。

自分もその口でUnityで書き出しした3D動画を画像に変換して、連番ファイルをstable-diffusionで変換し、イラスト調の動画にする、という遊びにハマっています。
ところがこの手法ではフレーム1枚単位の輝度のバラつきが激しく、チカチカとした目に優しくないものになってしまいます。
その違和感をこのツールを使うことで防げないかと興味を持ったのが理由の一つ。
もう一つは、table-diffusionではなく有料AIであるNovelAIのアンラス(有料ポイント)を溶かしながらアニメを作るという蛮勇を行っている同士(私も含む)がいるのですが、Few-Shot-Patch-Based-Trainingを使えば消費するアンラスが節約できる&サーバーにかける負担も減るというメリットがあります。
何ができるか把握できたところで、さっそく環境構築を始めていきましょう。

環境構築

今回はAnacondaというwin上で簡単に複数のPython環境を使いわけられるソフトを使ったFew-Shot-Patch-Based-Trainingの環境構築を紹介します。
たぶんpython 3.9環境なら動くと思うので、わかる人はそれぞれの都合に沿って環境構築してください。

①まずAnacondaをインストールする。

上記リンクを参照してインストールしてください(丸投げ)

②次にAnaconda Powershellを起動して、Few-Shot-Patch-Based-Trainingを動かす仮想環境py39をAnaconda上に作り、py39をアクティーベートします。

conda create -n py39 python=3.9
conda activate py39

これでpy39の中に入れました。
③次にFew-Shot-Patch-Based-TrainingをDLしたいディレクトリ(今回はCドライブ直下)に移動してgit cloneします。

cd C:\
git clone https://github.com/nicolai256/Few-Shot-Patch-Based-Training.git

④Cドライブ直下に『C:\Few-Shot-Patch-Based-Training』フォルダができるので、Few-Shot-Patch-Based-Trainingのinstall guideにある
>Download prebuilt OpenCV-4.2.0 for windows,
からをDLしopencv-4.2.0.rarを解凍したものを
C:\Few-Shot-Patch-Based-Training\_tools\disflow
にぶちこみます。

⑤次にシステム環境変数のPathに
C:\Few-Shot-Patch-Based-Training\_tools\disflow
C:\Few-Shot-Patch-Based-Training\_tools\bilateralAdv
C:\Few-Shot-Patch-Based-Training\_tools\gauss
C:\Few-Shot-Patch-Based-Training\_tools\disflow\opencv-4.2.0\bin
を追加します。
やり方は以下のリンク参照
【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする

⑥Anaconda Powershellに戻り、以下のコマンドで必要なライブラリをインストール。(結構時間かかるのでドキドキします)

pip install ruamel.yaml
pip install pysimplegui
pip install Gooey
pip install opencv-python
pip install scikit-build
pip install cython
pip install Pillow
pip install PyYAML==5.4
pip install scikit-image==0.18.1
pip install scipy==1.6.2
pip install tensorflow==2.7.0
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html  
pip install numpy==1.21.2
pip install moviepy
pip install numba

⑦次にimagemagickインストールします。
Few-Shot-Patch-Based-Trainingのimagemagick installにある
>Download the latest 64 bit HDR version of Image Magick from here
のリンクから、ImageMagick-7.1.0-51-Q16-HDRI-x64-dll.exe
をDLしてインストール。本来はこれでいいはずなのですが、なぜか私の環境ではインストールしただけではImageMagickのPathが通っていなかったので、さっきのやり方でC:\Program Files\ImageMagick-7.1.0-Q16-HDRIを手動でpathを通しました。

これで環境構築成功です!ではさっそく公式の学習済みトレーニングを動かしてみましょう!と言いたいのですが実は2022/11/06現在、こちらのgenerate.pyが正常に動きません。
なので自分で学習モデルを作って、10000、20000、30000とキリのいいところで自動生成される画像を使っていくしかありません。
というわけでさっそく、動画を学習させていきましょう。

機械学習開始

Anaconda Powershellに戻り、以下のコマンドを実行。

cd C:\Few-Shot-Patch-Based-Training
python _tools/fewshot_UI.py

こんな感じのウインドウが立ち上がるので、
inputfile:適当なmp4(最初は100フレームぐらいがいいかも)
projectname:test(適当な名前)
framegap:5(適宜調整、この設定だと5フレームにつき1枚の画風変換済みイラストが必要)
precsion:detailed_flow
log_interval:10000(学習10000周ごとに画像書き出し)
に設定。

こういうウインドウがでてくるので、

C:\Few-Shot-Patch-Based-Training\logs\test_train\input_filteredにある画像を任意の画像生成AI等で画風変換した画像を

C:\Few-Shot-Patch-Based-Training\logs\test_train\outputに同じ名前でぶちこみます。(サイズもそろえて下さい)

そして先ほどでてきたウインドウのsubmitをクリック。
これで学習がはじまります。(もう一度ウインドウがでてきたらsubmitをクリックしてください)

今回の設定だと10000周ごとに画風変換された画像がC:\Few-Shot-Patch-Based-Training\logs\test_gen\res__P_disco1010に出力されるので適当なところで学習をストップさせ、それらの画像をベースにffmpeg等で動画を作って動画の絵柄変換は終わります。(今回はRTX3060で1時間位で20000周しました)

生成動画比較

やったー!実験は成功です!!!
コツとしては
『学習させている間はPCを触らない』
『学習速度が落ちたと感じたら、あきらめてPCを再起動する』
です。
ちなみにこの動画は101フレームで構成されていますが、21枚のnovelAI変換画像を使っているので、溶かすアンラスが1/5になる上に、個々のフレームの輝度のギャップによるちらつきがなくなります。
これは……!かなり面白い技術なのでは!?!?

以上、nicolai256/Few-Shot-Patch-Based-Training実験レポでした。

この記事が気に入ったらサポートをしてみませんか?