AIテクノロジー出会い

AIに彼女の画像を学習させて架空のスナップ写真を作らせてみた

スポンサーリンク
AI
スポンサーリンク

2023/11追記:長月v2.0モデルを試してみました。圧倒的なディティール表現が素晴らしいです。

いま話題のAIアイドルをStable Diffusionで爆誕させる技を会得しました。

ネットで調べてみると、どうやら特定の人物の顔や体型等の特徴をAIに追加学習させることもできるそう。そこで、今回は試しに彼女の写真をAIに学習させたところ、もはや本人も判別できないレベルで実在しないスナップ写真を作ることができました。

驚いたのは、512x512ドットしかない粗いスナップ写真を10枚学習させただけで十分だったこと。これだけの教師データでこのクオリティの画像を出力できるとは思っていませんでした。なお、学習用画像の推奨サイズは1024×1024のようです。

スポンサーリンク
スポンサーリンク

AIが生成した彼女のスナップ写真

彼女の友人と食事をした際、スマホに入れておいたAI作成の彼女の架空のスナップ写真を見せたところ、みな彼女の写真だという前提で何の疑いもなく「これはベネツィアかな?」といった反応でした。実はAIが生成した実在しない写真だと説明したら一同ビックリ!

確かに僕が見ても本人にしか見えないレベルですので無理もありません。あまりに本人過ぎるので、本人の許可を得て目線を入れたバージョンをご紹介します。

なお、以下の画像はすべてベースモデルにシンガポール人のPleaseBanKaiさん作成のBraV4.safetensors(アジア系の実写に強いと評判のモデル)を使用し、僕がAIに彼女の顔や体型等を追加学習させたLoRAモデルを作成した上で、このベースモデルに学習データを追加適用させてAIが生成したものです。

まずは、公園で撮ったスナップ写真風。普通にリアルすぎて先日どこかで撮った写真としか思えないレベルです。

せっかくなので、日本を離れて写真の中で彼女に世界中を旅してもらうことにしました。

まずは、ハネムーンで訪れたベネツィアへ。当時は乗れなかったゴンドラに乗ってもらった1枚。いい笑顔です。

続いて、エジプトのギザのピラミッドにて。日焼けケア!

いつか行ってみたいねと話しているモルディブの水上コテージにて。

パリのエッフェル塔をバックに。

最後に、あり得ないシチュエーションとしてワンピースでスキー場に行ってもらいました。さすがにちょっと寒そうで申し訳なかったです。ちなみに補足すると、彼女が着ている服装は完全に僕の趣味です。

スポンサーリンク

AIによる追加学習方法

今回は、Stable DiffusionというAI画像生成サービスを使って追加学習にトライしました。具体的には、LoRAと呼ばれる画像の学習データを自作できる拡張機能「sd-webui-train-tools」を活用して任意の画像をAIに学習させて独自のLoRAモデルを作成します。

学習の流れ

手順はこんな感じです。

  1. 学習させたい写真を10枚ほど選び、512x512ピクセルの大きさで切り出す。
  2. 各画像に写っているものについての説明文を書く。実はこの工程が一番重要で、かつ時間がかかる。
    • AIに画像認識させて自動で説明文を書かせることもできるが不十分のため、自分で書く必要あり。この説明文を的確に書くことで出力画像の品質に大きく影響する。
    • 説明を省くと、それが画像の特徴としてAIが学習するので注意。例えば、白いキャップをかぶっているなら、white capというキーワードが重要。これを忘れると、学習させたい人は白いキャップをかぶっている人だと誤認されてしまう。
  3. 画像をAIに読み込ませて特徴を学習させる。10枚の画像ならGoogleのColaboratory環境の場合、10分少々で学習完了。

学習させる画像のポイント

学習させる画像の枚数は10枚でとりあえず十分でした。サイトによっては「学習させる画像の背景は白く塗りつぶして学習させたいものだけにしたほうが良い」というアドバイスもありました。

そこで、背景付きの画像と背景なしの画像とで学習させて比較してみたところ、どちらも顔はそこそこ同じレベルで再現できましたが、背景なし画像で学習したデータだと生成されるAI画像の背景が単調になりました。

異なるデータセットでも比較してみましたが、顔だけでなく、なるべく様々な背景(室内・屋外の両方)、服装、髪型、ポーズ等のバリエーションがあるものを学習させると出力画像の品質が上がる仕組みのようです。

画像の説明文のポイント

基本的にAIツールが自動で画像の特徴を学習してモデル化してくれますが、上述の手順で記載したとおり「この画像には何が写っているか?」という説明文を自分で的確に書くことがポイントになります。

例えば、以下の画像を学習させる際に用いる説明文はこんな感じで書いてみました。

(photorealistic:1.4), 1 girl, solo, asian, blur_censor, blurry_background, bokeh, brown_hair, chromatic_aberration, depth_of_field, film_grain, focused, looking_at_viewer, motion_blur, photo, photo_background, photorealistic, realistic, lips, smile, no_teeth, white_hoodie with UCLA logo, carousel, upper body

写真品質の画像であること、背景は若干ボケ味があること、撮影者を見ていること、手持ちのブレあり、口紅を塗っていること、笑顔だが歯は見せていないこと、白色のUCLAロゴ入りパーカー、メリーゴーランド、上半身といった記述です。

ツールのトラブルシューティング

今回は実行環境としてGoogleのColaboratoryを使い、Stable DiffusionのUIバージョン(AUTOMATIC1111)をPythonで記述したコードで呼び出して実行させています。

各環境(AUTOMATIC1111, Python等)のバージョンはクラウド上で刻々と更新されるため、ある日突然それまで動いていたツールが実行時にエラーが出て動かなくなることが結構起こります。

現時点での各環境のバージョンと僕が遭遇したトラブルと対応策を幾つかメモしておきます。

各環境のバージョン

UIの一番下に表示される各環境のバージョンは以下のとおり。

python: 3.10.6  •  torch: 1.13.1+cu117  •  xformers: 0.0.16rc425  •  gradio: 3.23.0  •  commit: 22bcc7be  •  checkpoint: 9c03252bea

モデル選択なし

単純なミスですが、sd-webui-train-toolsでモデル学習を実行した際に以下のエラーが出て異常終了してしまいました。

UnboundLocalError: local variable ‘train_name’ referenced before assignment

てっきり環境上の問題だと思ってログを色々と調べましたが分からず、UIに戻って画面を確認したところ、sd-webui-train-tools画面上でモデルを指定する欄(Train base model)をデフォルトのままにしていると出るエラーでした。当然、必須入力項目のチェックくらいはUIで実施していると思いこんでいましたが、モデルを指定すればOKです。

xformersがインストールされていないようです

以下のエラーが出ることがあります。

no module ‘xformers’. proceeding without it. webui xformersがインストールされていないようです

この場合は、AUTOMATIC1111のコードを確認し、最後の方にあるUI起動のコマンドに以下のとおり”–xformers”を追加することで起動時にxformersをインストールしてくれてエラーを回避できます。

!COMMANDLINE_ARGS="--share --gradio-debug --xformers --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py

Pythonのバージョン

以下のエラー(CUDAのバージョン相違)が出たときは、次のコードをUI起動コマンドの前に追加すればOKです。

RuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version=11.7 and torchvision has CUDA Version=11.8. Please reinstall the torchvision that matches your PyTorch install.

!pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchtext==0.14.1 torchaudio==0.13.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu117
スポンサーリンク

技術の進化が速すぎる!

2023/3に初めてChilloutMixを活用したAIアイドル画像を作成してみました。それから1ヶ月もしないうちにLoRAモデルを自分で追加学習する方法を知って試してみたのが今回。

そうこうしているうちに、ネットではAIが作成した複数の静止画像から動画を作る試みまで既になされています。フェイクニュースが話題になっていますが、普通の人間にはもはや本物なのかAI生成画像なのかは判別できない水準まであっという間に達してしまったようです。

この勢いだと、音声認識と音声合成を組み合わせて、VRヘッドセットでAIアイドルがリアルタイムで応答するコンテンツなんかもそのうちに出てくるのでしょう。巨大市場の創出に向けて各社がしのぎを削っていると思われます。

過去を見れば、こうやってテクノロジーが進化していくのは間違いありません。

スポンサーリンク
スポンサーリンク
シェアする
takekuraをフォローする
ロサンゼルスMBA生活とその後