Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

【限定記事】【発表用資料】Stable Diffusionで遊ぶ

Last updated at Posted at 2022-11-07

はじめに

  • 本資料の狙い
    • Diffusion Modelの一つである、Stable Diffusionの使い方や挙動をお伝えすること。
    • お伝えした事柄をもとに、Diffusion Modelの詳しい理屈を学ぶ足がかりをつくること。
    • Stable Diffusionに関する情報収集元をいくつかお知らせすること。
  • 本資料で狙わないこと
    • Diffusion Modelの詳しい動作原理を理解できるようになること。
      (とはいえ、モデルを使うのに最低限必要だった部分は説明します)

最低限知るべきDiffusion Modelの理屈

以下のページを使って説明する。
https://eng-blog.iij.ad.jp/archives/14969

Stable Diffusionとは

  • Stability.Ai社が作成したDiffusion Modelの一つであり、HuggingFaceで無償公開されているもの。

stable-diffusion-webui-dockerとは

  • もともとstable-diffusion-webuiというGUIアプリが存在し、それをDockerで動かせるようにしたもの。

  • Docker環境さえあれば、Gitの内容をクローンしたあと何も考えずにインストールできる。CPUだけでも動くが、GPU対応済みの環境がベター。VRAMは8GBあれば十分。

    • 環境構築コマンド
    docker compose --profile download up --build
    
    • 起動コマンド
      • --buildオプションは更新時のみ必須。
    docker compose --profile auto up --build
    
  • 起動ができたら、http://localhost:7860/にアクセスする。

stable-diffusion-webuiの機能

stable-diffusion-webuiはSPA(single page application)になっており、各機能はページ内のタブに分かれて提供されている。
なお、このUIは機械学習ベースのアプリ向けのGUIフレームワークであるgradioで作られている。

以下、各機能でできることの概略を説明していく。

txt2img

txt2imgとは、入力文をヒントにして画像を生成する機能である。学習で用いたコーパスがほぼ英語なので、入力文も基本は英語にする必要がある。
日本の有名なネットミームを英訳してtxt2imgにかけたところ、下記のような絵が生成できた。

  • "Mahatma Gandhi running and punching" (ガンジーでも助走つけて殴る)
    • 00125-2296282164-Mahatma Gandhi running and punching.png
    • 00128-2296282167-Mahatma Gandhi running and punching.png
  • "I want 5000 trillion yen!" (5000兆円欲しい!)
    • 00103-230947804-I want 5000 trillion yen!.png
    • 00104-230947805-I want 5000 trillion yen!.png

img2img

img2imgとは、ヒントの画像に似た色味の画像を生成する機能である。画像に加えてtxt2img同様の入力文を与えることもできる。

下記の例では、先のガンジーの絵に似た画像を生成している。

  • ヒント画像
    • 00125-2296282164-Mahatma Gandhi running and punching.png
  • 入力文
    • Mahatma Gandhi doing professional wrestling
  • 生成画像
    • 00219-3161419158-Mahatma Gandhi doing professional wrestling.png

inpaint

img2imgにはinpaintという機能があり、元画像とそのマスキング範囲を白塗りにした画像を用意して、白塗り範囲を差し替えることもできる。

下記の例では、「いらすとや」のフリー素材にinpaintを適用し、メガネ姿に差し替えている。

  • 元画像(https://www.irasutoya.com/2015/06/blog-post_332.html)
    • tsumi_syougi_oute_man_base.png
  • マスク画像
    • mask.jpg
  • 【参考】マスク画像を元画像に重ねたイメージ(この説明のために作った画像で、実際には作成不要)
    • tsumi_syougi_oute_man_kasane.png
  • 入力文
    • The man wearing glasses
  • inpaintでできた画像
    • 00225-2697727820-The man wearing glasses.png

その他の機能

その他の機能として、以下3点がある。

  • Extras: 作った画像の超解像化
  • PNG Info: PNG画像のメタデータ閲覧
  • Setting: 出力画像のデフォルトフォーマットや、画像補正に使うアルゴリズムの設定などができる

実は22/11/9時点では既存機能のオプションが大幅に増えているが、基本的なところは変わらない。
もっと言えば追加学習などの新機能も相当増えているので、是非試していただきたい。(私もこれから試します)

各機能の詳細な使い方

以下のページを使って説明する。(古い版の内容に基づくのはご容赦ください)
https://note.com/npaka/n/nc8b0e9a91d97

さらなる使いこなしに必要な資料

Stable Diffusionの問題点

Stable Diffusionは非常に強力なモデルである一方、コーパスの内容に起因すると思しき問題もみられる。
ここでは私が見つけた問題点を2点取り上げる。

問題1.アジア人の生成が苦手

txt2imgに"〇〇 in a Kimono"というクエリを入れる場合を考える。
ここで〇〇の部分を色々と変えてみたとき、本人の顔の再現度合いに格差が生じる。

  • "Emma Watson in a Kimono"
    • うまく顔が生成されると、ご本人が出てくる。
    • 00250-326864973-Emma Watson in a Kimono.png
  • "Takeshi Kitano in a Kimono"
    • うまく顔が生成されても、そっくりさん止まり。
    • 00004-3346738447-Takeshi Kitano wearing a Kimono.png
  • "Aragaki Yui in a Kimono"
    • うまく顔が生成されたところで別人。木村文乃さんにやや似ている気がする。
    • 00009-3305168478-Yui Aragaki wearing a Kimono.png

人によって顔の再現度が異なる正確な理由は不明だが、おそらく学習に使われたLAION 5Bコーパスに含まれる当人データのサンプルサイズや、キャプションの正確さに由来するのではないかと考える。

  • 顔の再現度がサンプルサイズに由来すると予想した理由
    • キャプション自体が正しくても、サンプルサイズが少ないとその人固有の細かい特徴を学びづらくなり、そっくりな別人が生成されやすくなりそうだから。
  • 同じく、キャプションの正確さに由来すると予想した理由
    • ある人の名前が別人の写真に間違ってキャプションされているほど様々な人の特徴を誤って学んでしまい、誰にもあまり似ていない人が生成されやすくなりそうだから。

コーパスの調査

現状ではクエリに対応したデータのサンプルサイズ算出ができる機構がないので、キャプションの正確さについてのみ目視で調査を行った。
この調査では、有志作成のLAIONコーパス検索エンジン※を使ってローマ字の人名を検索した。
https://rom1504.github.io/clip-retrieval/?back=https%3A%2F%2Fknn5.laion.ai&index=laion5B&useMclip=false

ここでは原則、コーパスの検索結果の内容を文章で紹介する。画像やキャプションに若干不適切なものが混ざっているため。

  • Emma Watson(エマ・ワトソンさん)
    • コーパスでは、雑誌の表紙や映画のレセプションパーティーでの本人画像が中心に見つかる。
  • Kitano Takeshi(北野武さん)
  • Aragaki Yui(新垣結衣さん)
    • コーパスには、吉岡里帆さんや波瑠さんといった本人と同年代の女優の画像が半数程を占めている。

他の人物についても同様に調査を行ったが、コーパスのキャプションに関しては欧米圏の有名人ほど正確であり、正確にキャプションされた人ほど生成画像でも正確に顔が再現される傾向があった。したがって、意図した構図・事物が生成されるかどうかを予め見積もる上では、入力文に含まれる語をコーパス検索にかけてその語にふさわしい画像がどれだけヒットするかを確認するのが有効ではないかと予想される。

以下、コーパスと生成画像の傾向をいくつか場合分けして詳述する。

  • 欧米圏で著名な、欧米のセレブ・ハリウッドスター

    • キャプション自体にほぼ誤りがない。
    • ドウェイン・ジョンソンさん、ジャッキー・チェンさんも同様に誤りがほぼ無く、生成画像も本人そのもの。
      • 00066-2665239851-Dwayne Johnson  wearing a Kimono.png
      • 00196-1812074210-Jackie Chan in a Kimono.png
  • 欧米圏で著名な日本人

    • たけしさんのようにキャプション間違いがある人がいる一方、渡辺謙さんのように間違いがほぼない人もいた。
    • その他、映画関係、スポーツ関係、ゲーム関係で国際的に有名な人も同様の傾向。
      • たとえば菊地凛子さん、中田英寿さん、宮本茂さん(マリオシリーズの製作者)
    • ただ、どれも共通してそっくりさんが生成される傾向。アジア人は基本的にコーパス不足なのかもしれない。
      • 00182-1992520806-Ken Watanabe in a Kimono.png
      • 00032-1256738257-Rinko Kikuchi wearing a Kimono.png
      • 00090-1337335837-Hidetoshi Nakata  wearing a Kimono.png
      • 00028-1939207882-Shigeru Miyamoto wearing a Kimono.png
      • 00101-695096506-Shinji Kagawa  in a Kimono.png
      • 00110-1045043687-Yu Darvish in a Kimono.png
      • 00088-3531559133-Hideo Kojima  wearing a Kimono.png
      • 00107-581939000-Shohei Ohtani  in a Kimono.png
  • 日本でだけ著名な人

    • 新垣さん同様、他人がコーパスに出現してしまう傾向。
    • 誰ともわからない人たちが生成される。
    • 00036-3693785546-Riho Yoshioka wearing a Kimono.png
    • 00176-2528623783-Dean Fujioka in a Kimono.png

問題2.倫理的な問題

現状のStable Diffusionをそのまま使うと、倫理的に不適切な出力をいくらでも出せてしまう。理由は以下2点。

  • 1.学習に使われたコーパスであるLAION 5Gに、そもそも不適切な画像やキャプションが混在しているため。
  • 2.不適切な画像を学習しなくても、問題のある画像を作れてしまうため。
    • 例:inpaintによる元画像の偽造
      • 先に見せた通り、元ファイルの一部をマスキングしてinpaintをすれば簡単にフェイク画像が作れてしまう。
    • 例:報道画像の偽造
      • コーパスの段階で各国の水害の報道写真が含まれているので、"flooding in Japan"という入力文から簡単に浸水した日本家屋の画像が捏造できる(実際、これを公開して問題になった人もいる)
        • 00047-2804276618-flooding in Japan.png
        • 00048-2804276619-flooding in Japan.png

まとめ

  • 無償・有償問わずDiffusion Modelが普及したお陰で、従来技術に比べて所望の画像を圧倒的に作りやすくなったのは確か。
  • 他方、バージョン1系のStable Diffusionを業務でそのまま使うには倫理的な問題がありすぎる。
    • バージョン2系からはいわゆるNSFW画像や有名人の画像がコーパスから除外されたが、これにより正確な人物描画がしづらいケースが増えることが懸念されている。

さらなる応用について

追記

下記の参考記事に従って入力文を工夫したところ、雑誌やWeb広告に出てきそうな日本人女性を生成することができました。
Stable Diffusionでは日本の有名人の顔を再現しづらい傾向はありましたが、いわゆるモデル顔の特徴は掴めているように思います。

日本人女性_AI - コピー.png

人物写真を広告に使うには、カメラマンや被写体の方が広告利用可としている原画を素材サイトで購入する必要がありますが、これからはAIで生成する時代になるのかもしれません。

以上

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?