WSL TecoGAN 次から

下記に従って、WSL上でTecoGANをインストールした。<https://supplepentan.com/programming/tecogan_01/>

次からのTecoGANの起動メモ

・Windows Powershell 起動

(・WSLは他のディストリビューションで駆動されるのを防ぐため、もう必要なければ消去しておくのが望ましい
wsl –unregister <Distro>(e.g., Ubuntu-20.04))

・WSL起動
wsl

・homeに移る
cd ~

・TecoGANディレクトリに移る
cd TecoGAN

1)Pythonバージョンのローカル設定
pyenv local 3.6.8

2)仮想環境作成とアクティベイト
python3 -m venv venv-wsl
source venv-wsl/bin/activate

・runGan.py 起動

1), 2)はShellにしておくとよいと思います(sourceはshではできないので手打ち)。

なおできたファイルをWindowsで見るには、エクスプローラを開き、パスに\\wsl$を入力すればよい

 


Raspberry Pi;cronで音を出す

cronを使ってaplayで音を鳴らそうとしていた。ところがコマンドで打つと問題なく再生されるサウンドが、cronでは全く鳴らない。なぜだろうと調べてみたら、cronは自分のユーザ環境で動作していないからだというのがわかってきた。ググると
crontab中に一行

XDG_RUNTIME_DIR=/run/user/user_id

を入れればよいことがわかった。user_idは下記のコマンドでわかる

id [user_name]

自分のアカウントpiのuser_idは1000だった。これで無事にcronから音が鳴った。

<https://coderedirect.com/questions/562029/audio-doesnt-play-with-crontab-on-raspberry-pi>


DAZ-3D Octane

まだDAZ-3DでOctane renderに慣れてない。Irayのほうが奇麗に見える。Octaneを起動しても全くマテリアルがついていない。どうもScene SurfacesからOctaneRender Materialsにマッピングは自動でされず、デフォルトは真っ白になるようだ。ここでMissingのところをクリックして、Automaticにマッピングするように選ぶと、それなりにレンダリングしてくれる


Blenderでローポリ化

Poserの衣服をデフォルメしようとして、obj化して再度読み込み、これをClothifyしようとしてもポリゴンが多く、うまく動かないことがある。このような時には一旦Blenderでこのobjを読みこみ、スパナマークのAdd modifierからGenerate>Decimateを選択し、デシメーションの割合を入力するとポリゴンの数をうまく削減してくれ、Clothifyがうまくゆく。これは良いTipsだ


Fuji Film 3D camera & Poser

名残惜しいFuji Film finePix read 3D(以降 F3Dといいます)、これを使ってMPOファイルから左右別々の画像を抽出する。FR.jpg, FL.JPGとしよう。このサイズはそれぞれ3441×2016である。さてこの画像とPoser & Octaneで生成される3D画像を重ねてVRで3Dに見せられる画像を作ってみたい。

1)まずこの現画像2つを圧縮し、1280 x 750 2枚にする。

2)Poserにて作られた画像をOctaneで3D化する。このとき、Octaneで作成する画像のサイズも1280 x 750の左右2枚とする。Off-Axisで生成する。視差は0.065ぐらいでいいだろう。PoserのFocalはまだ調整が必要だが、35mm-25mmの間ぐらいがよさそう。
->いろいろ試したが、35mmと50mmの間、42.5mmぐらいが妥当そうだ。

3) 1), 2)をPhotoshop上で合成してpngもしくはjpgで出力する。サイズが同じなので問題なくできるはず

4) Stereo Photo Makerでこの2枚を順に読み込み、MPOにする。

5)Oculesで視聴する VR Photo Player はMPOが見られる

追記:VR Photo Playerで見るとかなり画面が大きい。Poserで作成したフィギュアは比較的画面の下に収め、かつ背景の上部は大きく空があるほうがよさそうである。


Oculus riftで.mpoファイル閲覧

Oculus riftで.mpo閲覧したいと思ったが、なかなか見つからなかった。LiveViewRiftで見れるとあったが、どうもステレオ画面になってくれない。他の候補をあたってみるにSteam上のVR Photo Viewerがあった。これは動作が鈍いので、選択に時間がかかるが、コントローラで右のBボタンを押せばファイル選択ならびにSBS, MPOなどの設定が出る。これで何とか.MPOファイルが見れるようになった。ただしデフォルトが横に延伸したビューなので、そうでない普通のビューがデフォルトになってほしい。


Octane for Poser on RTX3080

RTX3080のマシンを導入しOctane for Poserを入れようとしたら、動かない。GPU settingでcapability (8.6) not foundと言われている。OctaneのForumよく調べてみたら、通常のDownloadサイトではないところに2020_1_5_104があるのでダウンロードせよ、と言われた。やってみたら動いた。備忘まで

https://render.otoy.com/customerdownloads/plugins/a6/b4/9a/90/OctaneRender_for_Poser_2020_1_5_104_STUDIO.exe


FakeApp2.2.0

FakeApp2.2.0をいれてみた。ほとんどは

ならびにYouTube

FakeApp 2.2.0 Tutorial – Installation and Usage (How to put Nicholas Cage’s Face on Various people) – YouTube

を参考にしたが、加えて自分がやったことの注意点を記しておく

1.CUDAのバージョンを必ず9.0にそろえる。筆者の場合9.1も混在していたのでこれを削除 念のためNVIDIAから再度9.0を取ってきて再インストール

2. FakeAppのインストールはsetupをクリックするだけではない。同梱のcore内のファイル群を %user\AppData\Local\FakeApp\app-2.2.0\resources\apiの中にコピーする(デフォルトではffmpegしか入っていなかった)。またこれをコピーした後にさらにsetupを起動するとどうもこれが消えてしまうようだ。

3.1. 2.ができると、FakeAppの起動画面から注意書きが消えて動き出すようになる。TF1.5が必要と書いてあったが、これは明示的にやらなくてもよかった(すでにはいっていたのかもしれない)。最初Anacondaから入れようとしていたが結局全部削除した。

4. まずデータセットを入手する。Get DatasetでA側に顔を入れ替える側(体を使う側)の動画ファイルを入れる。FPSはファイルの詳細プロパティから読み取る。「dateset-XX」フォルダの中に動画の画像がpngで出力され、さらにその中の「extracted-XX」フォルダの中に顔画像が抽出されたjpgファイルが書きだされる。

注意:実は元は動画ではなく、Photoでも利用できる。しかしその際にはファイル形式がjpgではなくpngであることが必要。ここに注意。でないとextracted中になにも抽出されずプログラムがエラー吐いて終わる。jpgからpngへの変換には例えばXnConvertなどを利用するとよい。

5.次にB側に入れ替えたい顔が入っている動画ファイルを入れる。やりかたは4.と同様

6.動画ははじめは短めの方がよい。せいぜい2Mぐらいから10Mぐらいのを準備する。筆者はmp4の動画を準備した。顔を置き換える前の動画と置き換える対象の動画はそれぞれ構図の似た顔がそろっている方が望ましい。でないと学習さえしてくれない時があった。

7.UIはよくなく、ファイル名はパスも含め全部手打ちとなる。このためファイルはC:ドライブの直下とかに置いた方がよい。もちろん日本語名は避ける。

8.Aフォルダ->画像抽出、Bフォルダ->画像抽出が終わったらあとは学習(Training).Data A,Bには先ほど抽出したextractedフォルダを指定する。数時間から場合によっては1週間ぐらいかかるらしい。指標が0.02以下になれば良いようだ。コンテンツによっては、もうこれ以上改善しないとなると勝手に止まるようだ。ここでMODELというのは学習結果を入れるフォルダなので、自分で空フォルダを指定する。

9.最後にCREATEタブで入れ替え動画を作成する。Modelには先ほど指定したフォルダを、Videoで体の方の元動画とフレームレートを入れる(デフォルトが逆になっているので注意)。ここでWorkdir-xxxの下にmergedというフォルダがあり、ここにコマのFakeApp画像ができている。これをつなぐことでAフォルダ配下にswap-xxx.mp4が出来上がる。しかしながら、しばしば出力動画作成に失敗することがある。実は2,3度繰り返すとできることがあった。

10. もし9.でmergedフォルダにコマ画像ができていて、かつmp4画像作成に失敗するようであれば、ここまできたらffmpegコマンドでやってしまう手がある。https://ffmpeg.zeranoe.com/ からWindows binaryを持ってきて適当にインストールする(例えばc:\\Program Filesの下など). それでcygwinなどから、そこまで行って、

ffmpeg -i “c:\FakeApp\out%05d.jpg” -vcodec mjpeg -sameq out.avi
というコマンドを実行。

最初の-i “c:\FakeApp\out%05d.jpg”は入力画像ファイルを指定。%05dという部分は5桁で数字は調整されているという意味。1から開始させる必要がある。FlexRenamerなどを使ってうまく番号を調節する。

-vcodec mjpegは、Motion JPEGという映像コーデックを使うという意味。素材がJPEG画像の場合、mjpegを使うと変換速度が速くなる。-sameq は素材と同じ画質という意味。これでエラーがでることがあるので、その際はこのオプションを省く。
そして最後のout.aviが保存先(この項はhttp://opensourceaki.blogspot.com/2007/10/ffmpeg_19.htmlを参照した)

10.できた動画はやはり顔のみぼかしっぽく見えてしまう。例えばAbobe Premiereなどを用いて動画にBlur(Gauss)の効果を与えて全体をぼかした方が良いかもしれない。このとき併せてもとの音声も加えて編集すると良いだろう。

11.補足
PNGの画像からTrainを終わって最後にmergeしようとして何度か失敗した。これをGPU使用からCPU使用に変えたところうまくいった。理由は不明だがメモしておく。