2023年1月30日月曜日

MiDasによる深度推定、AIで生成されたイラストに使用してみる

この前、下記のような記事を見かけたので試してみました。

3D Photography using Context-aware Layered Depth Inpainting
https://shihmengli.github.io/3D-Photo-Inpainting/

これはMiDaSという一枚の写真内の深度情報を推定する――
分かりやすくいうと、画像内の奥行き情報を求めてくれるものらしいです。
AIによる教師付きモデルで学習した内容をもとに、
入力された画像データの深度情報を求めてくれるみたいです。

で、上記の記事にあるGoogleColaboratoryを使うと、
作成した深度情報で画像を3次元上において数秒間の動画を作成してくれるらしい。
面白そうなので、以前作った画像を入力データにして使ってみた、
という感じの記事です。




そのままでは動かなかった


いきなり躓いたんですが、このGoogleColaboratory
そのまま動かなかったんですよ。


途中で、エラーでて実行できないな~ってなっていたんですが、
どうも、GoogleColaboratory内のPythonモジュールの更新に伴って
引数が一致しなくなった部分があるみたいで、それが原因になってるみたいでした。


下記の一文を追加して、pyyamlを5.4.1のバージョンにすれば動きました。

!pip install pyyaml==5.4.1


とりあえず使ってみた(成果物)


上記の対応でとりあえず動かせるようにはなったみたいなので、
指示に沿って動かしてみました。

画像をアップロードして(jpgのみ対応だということに気付かず、ちょっと躓いた)
実行すると、中身でいろいろと処理されて、
動画データが作成されてきます。

今回使用してみたデータはコレ。
midjourney-v4で作成した戦闘ロボット的なイラスト



で、実行してみたところ、4つほどファイルが生成されてきました。
それぞれ、カメラの動きを変えた動画で、6秒くらいの動画でした。

  • zoom-in (カメラを近づけていく)
  • dolly-zoom-in (そのままのzoom-inとはなんか違うけど、どう動いてる?)
  • swing (カメラを左右に移動させる)
  • circle (カメラを円運動的に移動させる)

zoom-in (前方に近づいていく感じ)

dolly-zoom-in (zoomとはちょっと違う?)

swing (左右に振る感じ)

circle (円を描くように移動してる)

おー、一枚絵だけの時と比べて、結構印象変わりますね。
ただ、swingとcircleは動きが大きくなって、画像をかなり横から見る感じになると
さすがにアラが見えてしまう感じもあります。

それでも、背景部分とロボット部分でしっかり区分けされてるのはすごいですね。
dolly-zoom-inはどういうズームか分からないんですが、
地面を這うような感じも、かなり自然に出来ているような印象です。


ついでに見つけた成果物


あと、このGoogleColaboratoryを処理している間に
「MiDaS」のフォルダ内を見てみると、outputの所に
深度情報を出力した画像ファイルを見つけました。


多分深度情報の画像ファイル
近いところが白で、遠いところが黒になっている

この深度情報に沿って、
2次元画像をディスプレースメントマッピングみたいな感じに変形させて
それを3次元空間上のカメラで撮影している感じなんでしょうか?


調べた感じだと、StableDiffusion2.0のdepth2imageの機能として
このMiDaSによる深度推定が入っていて、
深度による物体の区分けができるおかげで構図とかを維持した
img2imgができるとかなんとか?
もう、調べるたびに新しい情報出てきますね。コワイ!

なんか、アイデア次第ですが面白そうな使い方が出来そうですね。
まぁ、少し前に出されていた情報みたいなので、
知っている人からは遅れているかもしれませんけど。













0 件のコメント:

コメントを投稿