AIで画像の視点を変更する
AI作画の苦手克服へ!
今までのAI画像生成では生成した画像の視点を変えることは困難でした。ControlNetのPoseで頑張るくらいでした。その苦手を克服するのが今回の記事です!
私はAI作画でうまくいかないときはたいていコラージュで何とかしてきたのですが、この角度を変えるというのはコラージュだとうまくいかないんですよね。
コラージュをリアルにする方法についてはこちら
今回の画像の角度を変える記事では以下の手順で行います。
DreamGaussianを使って3Dオブジェクトを作成
3Dオブジェクトを回転させた画像からAI作画で生成
横向きのモナリザが作れたりしますよ!
モナリザって同じ絵が大量に学習されているためか、モナリザをプロンプトで変化させようとしてもほとんど変わらないんですよね。それで今回視点を変更する対象に選んでみました。最新のDALL・E3でもモナリザにキックさせようとするとこうなります!
DreamGaussianで3Dモデル作成モナリザは
Gaussianはたった1枚の絵から数分程度で3Dオブジェクトを作れる、3Dモデル作成フレームワークです。今回の視点変更もまずはこれを使うところから始めます。
Pythonのプログラムから使うものですが、Google Colab上に環境を構築して試せるデモがあります!
DreamGaussianを使う準備
以下の説明ではGoogleアカウントやGoogle Colabの利用はできている前提で書いています。まずはこちらのGitHubリポジトリにアクセス
次のImage-to-3Dの「Open in Colab」のリンクをクリックしてください。
すると、このようにDreamGaussianのデモ画面が開きます。
実はこのままでは使えません!メニューから「ファイル→ドライブにコピーを保存」を実行して、自分のGoogle Colab環境で利用できるようにします。
実行すると以下のように「コピー」の文字がついて自分の環境で実行できるようになります。
3Dモデルの元画像を作る
3Dモデルの元となる画像は正方形で対象以外は透過した画像を用意しましょう!また、あまり大きい画像じゃない方が良いです。
DreamGaussianで3Dになるのは正方形の画像なので、縦長や横長の画像を入れるとつぶれてしまい、再現度が悪くなってしまいます。
また、このデモでは元画像は256x256にリサイズされます。なので大きなサイズで細かい書き込みのある画像だとこれまたつぶれてしまうんですよ!一応image.yamlで設定変更できるようですが、難度が跳ね上がるので今回の説明では割愛します。
画像の透過はこのデモの中でも自動でやってくれますが、児童の画像透過だとゴミが残ったり消えてほしくないものが消えるのはよくあることなので自分で透過画像にしておきましょう!
私が用いたのは以下のモナリザです。背景は透過させていますが、正方形じゃなくてすみません!
DreamGaussianを実行する
実行自体は非常に簡単で上から実行していけばよいだけです。
まずインストール。そのまま実行します。実行は黒丸に白の▶ボタンをクリック。結構長くて数分かかりますが気長に待ちましょう。
次は画像のアップロードです。実行するとファイル選択ボタンが有効になるので先ほど用意した画像をアップロードしましょう。
あとはただ順番に実行していけばよいだけです。preprocess imageは画像の透過処理やセンタリングをやってくれます。すでに透過済み画像であっても省略せずに実行してください。
次のsettingも値を変更できますが何も変えないで実行します。見下ろし画像のように回転軸の角度を変更するためのものです。閉じたまま実行すると以降の工程全部まとめて順に実行されます。
そして、training。ここが本体です。実行すると5~10分くらいかかります。
最後に「render a video for displaying」を実行すると3Dオブジェクトが回転する動画が出力されます。右にあるメニューからダウンロードしましょう。mp4ファイルがダウンロードされます。
先ほどのモナリザで作るとこんな感じです。
3Dになったのは良いけど、無理に3Dにした感じはありますね!とはいえ、45度くらいまでは頑張ってるかなと。
では、これを利用して角度を変えた画像にしてみましょう!
3Dモデルを元に画像を生成
image2imageで清書
まずは3Dで角度を変えた画像を切り取ります。Windowsの場合は標準の「フォト」アプリでダウンロードした動画を再生すると簡単に瞬間の画像を切り抜けます。
ちょうどよい角度で止めて「フレームの保存」をします。
余白が多いのでトリミングしてからimage2imageでAI画像生成をします。今回はモナリザの再現度が高いモデルである「Realistic Vision V5.1」を利用しました。プロンプトの強度は0.5にしています。強度が高いとただの元のモナリザの画像になってしまうからです。すると……。
おお!ちゃんと角度がついていますね!
こんどはこの画像を元に再度DreamGaussianで3D化して……とやっていくと、このように真横を向いたモナリザも作れます。
この青書のためにはその対象物が学習されている必要があります。自分の顔を3D化するなら自分の顔のLoRAやカスタムモデルが必要となります。
上手くいかないケース
ちなみに写真や平面的なイラストだとかなり3Dモデルの出来が悪くなります。
自分の顔写真を元にやってみました。もとはこうなのが……
なぜか顔に穴が開いた3Dモデルに!ホラー感がすごい!
ちなみに自分の顔のカスタムモデルでimage2imageをすると、顔の雰囲気がだいぶ変わっていました。
そして、アニメ絵。私のキャラクターである「渚の妖精ぎばさちゃん」の絵はアニメ系の絵柄です。
これを3Dにしてみると……。
だいぶ長くなってきたので、このあたりの克服方法を別記事で書こうと思います。
これを応用していく!
実はこの方法をさらに発展させて、1枚絵から角度を変更させることもできるようになりました!先ほどのぎばさちゃん画像が絵柄がを保ったまま真横から見たものに!
こちらのやり方は次の記事で書きます!今回のやり方の発展です。