MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

絵師、技師、術師を考える

AI画像を生み出す人々

Stable Diffusion、NovelAIDiffusionなど「プロンプトエンジニアリング」によるAI画像生成は、与えた言葉に基づいて芸術と科学(工学)が一体となって画像を作り出す、これまでに無かった新しい芸術的手法と言えよう。

またこの世界では絵師、術師という言葉が使われ始めており、AI画像生成と人の関わりを少し過去の話から未来までを予想してみた。

古来から絵を描く職人を絵師、物作りやプログラムを行う職人は技師と呼ばれている。

Wikipedia によると絵師の歴史は古く律令制下で中務省の「画工司(えだくみのつかさ)」に属し宮殿や寺社の造営に当たって文様や装飾の制作を従事しした職人、平安時代末期以降の、寺社に置かれた絵所に属した画工、浮世絵の原画(下絵)を描くことを職業とする人、そして今は日本の漫画やアニメ、ゲーム風の範疇に入る絵を描く画家・イラストレーターを指す言葉になっている。この世界で用いられる共通言語は絵や写真などの芸術だ。あるいは感性。

技師は産業を支えるあらゆる分野で働く職人を指す言葉だが、ほぼ全ての技術の共通言語は「工学(計算)」だ。特にITやAIはコンピュータ、すなわち自動計算器無しでは成り立たない。

それらに対してAI画像生成のプロンプトを駆使する術師と言う言葉が現れた。プロンプトが言葉で構成されることから術師の共通言語は「言葉」そのものだ。そして言葉で欲しいものを表現する=全体を制御することから映画で言えば監督やプロデューサーに該当する。

古来から三者連携

油絵などが盛んだった時代も、画家(絵師)、画材開発(技師)、どんな絵が欲しいかを要求するディーラーやクライアント(術師)がいた。どんなに優れた画家がいたとしても良い画材が無ければ高度な作品が作れなかっただろうし、自分の描きたいものを自由に描ける一握りの一流画家を除いてディーラーからの依頼に応じて作品が作られてきた。

逆に言えばピカソなどは一人で画家とクライアント、それも飽くなき探究を続ける厳しい顧客を兼ねていたと言えよう。これはジョブスがiPhone等の創造かつ提供側にいたにも関わらず、「私が一番欲しいものを作る!」という世界で一番厳しいユーザーであったのと同じだ。

その様な天才を除き、一般的には三者の協業で絵が作られる。ただし技師は優れた画材を提供する裏方なので表舞台には出てこない。

絵師、技師、術師を全て兼ね備えた偉人も存在する。例としてはレオナルド・ダ・ビンチが挙げられる

AI画像生成での役割

急激に実現したAI画像生成だが、その実現は古来同様に「絵」の学習と理解、「言葉」の学習と理解、それらを実行する「計算」器とエンジニアで成立している。この辺りは各種のAIを説明資料などに詳しく掲載されている。

これからの世界

今後も芸術(感性)と言葉(構成)と工学(計算)を得意とする三者の役割は失われることなく活躍するだろう。ただ、カバーする範囲がお互いに広がり、絵師も技師も術師もAI画像生成が出来る様になった。

絵師は、AI画像生成を優れたアシスタントとして活用するだろう。すでに活用事例も出てきている。絵描きの工程は結構作業量が多く、ベタ塗りなど人間のアシスタントで行っていたものがクリスタなどアプリでワンタッチで塗れる様になったのと同様に手間のかかる作業の軽減に役立つ。絵師:クリエイターにとって理想的な環境が整った現在はむしろ有利だと思う。

技師は引き続きAIの開発に勤しむだろう。開発を重ねる事で2045年に起こると言われているシンギュラリティ(AIが人を超える事態)も遅かれ早かれ到来するだろう。でも依然AIは開発対象に過ぎず技術としての立場は大きく変わらないだろう。一部には絵師として成功する人もいるかもしれないがそれは元々その素養があった例外だと思う。なぜなら技師:エンジニアが愛するのは技術であり芸術ではないからだ(一部例外を除く)。

術師のほとんどは動画生成の方にシフトすると思う。労力を注いでも絵を描き込む熱意は絵師に勝てないし、言葉による指令:スクリプトがより効果なのはシーケンスを有するアニメなどの動画だからだ。その意味でも監督やプロデューサーの立ち位置であり、個人でアニメが作れる時代もすぐに来るだろう。

colabで使えるStable DIffusion web UIの色々

Stable DIffusion web UIの実行環境や種類

  • Stable DIffusion web UIの実行環境はWindowsLinuxMac(一部のみ)、Google colab、Paperspaceと色々ある。
  • web UIアプリケーション用PythonライブラリもGradio、Streamlit等ある
  • Stable DIffusion web UIの種類もAUTOMATIC1111など色々ある
  • Stable DIffusion web UIを起動するノートブックも複数ある

ここではcolab上で無料で使えるものをリスト化した上で、最後にオススメを記載する。

Stable DIffusion web UIの種類

①AUTOMATIC1111

一番人気のStable DIffusion web UI。

AUTOMATIC1111

github.com

②sygil(HLKY)

こちらもそれなりに使われているようだ。

sygil-dev

github.com

③henk

HLKYと同程度の人気と思われる。

henk

github.com

④Relaxed mode

人気度は不明。GitHubが見つからないので実際にcolabで生成した画面を掲載。

Relaxed mode

 

web UI用のノートブック

前記のweb UIをcolab上で起動するためのノートブック。colab以外のPaperspaceのものもある。以下AUTOMATIC1111のサイトから転載。

元のGitHubはこちら

Google Colab用
Paperspace用

※Paperspace利用方法を解説した記事

qiita.com

オススメ①

最初のオススメは以下のcolab用のノートブック。一度実行するとモデルのみならずコード類もGoogle Driveに格納するので、2回目以降の起動が一気に速くなる。3分~6分程度(colabの状態に依存)なので、普段使い出来ると思う。

maintained by TheLastBen

オススメ②

最初から存在するAkaibuのノートブックは修正しやすく使いやすい。NovelAIDiffusionモデル、VAEなども扱えて起動までの時間も比較的高速(6分)。利用説明の記事を紹介する。

programmingforever.hatenablog.com

maintained by Akaibu

StabilityAI公開の新VAE(改良オートエンコーダー)

VAE(改良オートエンコーダー

Stable Diffsion1.5、そのimpainitingVAE版の公開に続いて、StabilityAIからモデルのオートエンコーダ部を置換するVAE(改良オートエンコーダー)が公開された。

huggingface.co

  • 公開されたのはモデルに含まれるオリジナルのkl-f8オートエンコーダから微調整された2つのkl-f8オートエンコーダバージョン。
  • ft-EMAは、元のチェックポイントから再開され、313198ステップのトレーニングを受け、EMAウェイトを使用
  • ft-MSEは、ft-EMAから再開され、EMA重みを使用し、MSE再構築(やや「より滑らかな」出力を生成する)に重点を置いて、再加重損失を使用してさらに280kステップのトレーニングを受けた。
  • 既存のモデルとの互換性を保つために、デコーダ部分のみを微調整しており、チェックポイントは、既存のオートエンコーダのドロップイン置換として使用できる。

VAEの威力

目や指など細部の生成が安定する。

左から ft-EMA 、 ft-MSE 、 original の例(256x256)

オリジナルでは潰れている文字が綺麗になっている
オリジナルは目の焦点が合っていない
オリジナルは看板の末尾の文字などが変

実はVAEの活用はNovelAIDiffusionで行われているもので、NovelAIDiffusionでVAEを使わずに生成すると目や指がおかしくなる(AUTOMATIC1111による実証)。このVAE:改良オートエンコーダーで画質改善するアイディアを考えて実装したNovelAIは凄いし、その威力をStable Diffusion本家も認めて取り入れたものと言えよう。もっとも漏洩が無ければこのアイディアが世の中に出回らなかったと考えると少々複雑だ。(NovelAIはハイパーネットワークという別のアイディアも実装している)

SDのVAEの入手先

とりあえずft-MSEの利用でよいと思う。

ft-EMA

https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.ckpt

ft-MSE

https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt

VAEの利用方法

VAEの利用手順はNovelAIDiffusionでモデルとVAEを利用する方法と同じ。

  1. VAEをダウンロード(前記のft-MSE、ft-EMAのいずれかを利用)
  2. モデルを保存しているフォルダにVAEを入れる
  3. VAEの名前をモデルの名前に合わせる

例えばStable diffusion1.5の場合はモデル名が「v1-5-pruned.ckpt」なので、VAEの名前を 「v1-5-pruned.vae.pt」に変更する。

※簡単に有意差を試せるcolabもある

Google Colab

多数存在する各モデルとVAEを組み合わせての実証を別途行う予定。

Waifu Diffusion1.4の概要

NovelAIに追いつけ追い越せとばかりに頑張っているWaifu Diffusion。12月に1.4公開予定で以下は概要を記載するサイト。こちらでもVAEに言及している。以下翻訳文。

VAE による微調整で、指、目、髪、唇などのより細かいディテールの生成を支援します。SD 1.4 VAEは実際のデータでトレーニングされ、一般的な画像の優れたベースラインとして機能するため多くの詳細が失われていますが、これはアニメスタイルの画像ではうまく機能しません。

gist.github.com

AI画像生成のトレンド

AI画像生成の流行

ツイッターでAI画像サービスのトレンド分析記事があり、面白かったので転載。

※2022.10.17調べ

日本の場合

最初にMidJourneyがブームになり、次にStable Diffusion、現在はNovelAIDiffusionがダントツ。MidJourneyはほとんど使われなくなってしまっている。この利用率は私の利用率とほぼ同じでMidJourneyはサブスク料金を支払っているがほとんど使っていない($10に変更済み)。NovelAIDiffusionの二次元生成スペックが凄いのと、日本人のアニメ/漫画好きにフィットしたのが理由と思われる。

日本の動向

比較して世界では順当にどのサービスも利用されている様だ。

世界の動向

元記事:Muaccaさんのツイッター

Muacca on Twitter: "お絵描きAIのトレンドをチェック。全世界的にMD/SD/NAIがそれぞれ人気を分けているように見えるけど、国別で傾向が違う。USではSDが強いがMD/NAIにも関心は向いている。飽きっぽい日本はこのところNAIに関心が集中している感じ。面白いのは中華圏で元素法典でも分かるようにNAIが起爆剤に。 https://t.co/DjKrbUD3Sd" / Twitter

Photoshop Generative AI への期待など

AdobeがAI生成対応を発表

AdobePhotoshopでinpainting、outpaintingを自由に行えるデモ動画を発表した。

https://blog.adobe.com/en/publish/2022/10/18/media_1f3f6d79aa6f17ef5b8d870e3fc6cf4819fadcf3d.mp4

サイトはこちら

blog.adobe.com

デモ動画を見る限り、inpainting、outpaintingのいずれもかなり期待出来そうだ(実装日は不明)。なお数日前にニューラルフィルターが実装されており、風景ミキサーやメイクアップなどが行える様になっている

ニューラルフィルターの利用画面

モデルはどうなる?

何となくAdobeのオリジナルモデルを発表しそうな気がする。これまでの知見と資金力を活用したハイクオリティなモデルをAdobeが提供するとしたら楽しみだ。

しかしながら勢いのあるStable Diffusion系のモデルを使いたいニーズも強く、こちらの方は既に利用可能なプラグインの発展に期待したい。現在私が使用しているプラグインはChristian Cantrell氏が開発したものだが機能的にはまだ不足も多い。

twitter.com

またWaifuなど他のモデルや、DreamboothやImagicなどで学習させたオリジナルモデルが使える展開にも期待したい。

前出のChristian Cantrell氏は「あなたがDreamBoothで作ることができるもののようなモデルは間違いなく次のバージョンになる。コードも完成した」と発言(10/18)

Stable Diffusion 1.5 inpainting版を試す

inpainting用StableDiffusion 1.5 モデル

先日突然Stable Diffusion1.5を公開したRunwayMLが、続いてStable Diffusion1.5のinpainting用モデルを公開した。

github.com

モデルの違いの説明

現在、次のチェックポイントを提供している。

  • sd-v1-1.ckpt: laion2B-en の解像度で 237k ステップ。レオン高解像度の解像度で194kステップ(解像度付きLAION-5Bの170Mの例)。256x256512x512>= 1024x1024
  • sd-v1-2.ckpt: 前記の継続学習。laion-aesthetics v2 5 +(推定美学スコアを持つlaion2B-enのサブセット)の解像度で515kステップ、さらに元のサイズの画像にフィルタリングされ、推定透かし確率。ウォーターマーク推定値はLAION-5Bメタデータからであり、美学スコアはLAION-美学予測変数V2)を用いて推定される。sd-v1-1.ckpt512x512> 5.0>= 512x512< 0.5
  • sd-v1-3.ckpt: 前記の継続学習。「laion-aesthetics v2 5+」の解像度で195kステップを踏み出し、テキストコンディショニングを10%削減して、分類子のないガイダンスサンプリングを改善します。sd-v1-2.ckpt512x512
  • sd-v1-4.ckpt: 前記の継続学習。「laion-aesthetics v2 5+」の解像度で225kステップ、テキストコンディショニングを10%ドロップして、分類子のないガイダンスサンプリングを改善します。sd-v1-2.ckpt512x512
  • sd-v1-5.ckpt: 前記の継続学習。「laion-aesthetics v2 5+」の解像度で595kステップ、テキストコンディショニングを10%ドロップして、分類子のないガイダンスサンプリングを改善します。sd-v1-2.ckpt512x512
  • sd-v1-5-inpainting.ckpt: 前記の継続学習。「laion-aesthetics v2 5+」の解像度でのインペイントトレーニングの440kステップと、分類子のないガイダンスサンプリングを改善するためのテキストコンディショニングの10%ドロップ。インペイントの場合、UNet には 5 つの追加入力チャンネル (エンコードされたマスク画像用に 4 つ、マスク自体に 1 つ) があり、その重みは非ペイントチェックポイントを復元した後にゼロに初期化されました。トレーニング中は、合成マスクを生成し、25%ですべてをマスクします。sd-v1-5.ckpt512x512

異なる分類子なしのガイダンス スケール (1.5、2.0、3.0、4.0、5.0、6.0、7.0、8.0) および 50 PLMS サンプリング ステップによる評価では、チェックポイントの相対的な改善が示されているとのこと(図)。但しこれを見る限り1.4と1.5の差はわずか。

モデルの改善グラフ

colabで実行

マスクを用意する必要があるがcolabで実行出来る。下記URL先に移動してモデル利用の承認を行なってから「Open in colab」をクリックしてノートブックを起動する。

huggingface.co

承認済みの場合は直接下記をクリック

Google Colab

実行してみる

やや手間がかかる。近い内にAUTOMATIC1111やPhotoshopアドインツールなどが対応すると思うが、試してみたい方はcolabを下記の手順で実行する。

①元絵を用意する

海に浮かぶヨットの写真を用意した。

ヨットの写真

②マスクを用意する

画像編集ソフトで変更したい箇所を白色、他を黒色にしたマスクを用意する。

マスクを用意

③それぞれURLでアクセスできる様にセット

Gyazoなどを用いて写真とマスクをURLでアクセス出来る場所にUPする。

gyazo.com

④colabを実行
  • 順に編集しながら実行する
  • 2番のコードセル実行時にHuggingFaceのアクセストークンを入力する
  • 5番のコードセルのURLに③でセットしたURLを入力する。Gyazoの場合、URLの最後にUPした画像の拡張子(.jpg, .pngなど)を忘れないこと。
  • 6番の実行でUPした絵が、7番の実行でマスクが表示されることを確認
  • 8番のプロンプトをイルカのジャンプ:a dolphin air jumpに変更
  • 同じく8番のmanual_seed(0)を(-1)に変更(シード固定なし)
  • 変更したら8〜10を順に実行すると下記のように生成される

生成された映像

マスク領域が狭かったのでイルカのジャンプが十分に描けなかったが、見えなかった背景(遠くの島)が違和感なく作成されていることがわかる。

そこでイルカが描ける様にマスクを広げた。

左のマスクをイルカが描ける様に広げた(右)

このマスクでもう一度生成するとイルカが十分に描かれる様になった。

イルカが描ける様になった

所感としては満足しているが、従前のinpaintingも高いレベルだったのでそれ程のインパクトは感じられなかった。

Imagic 特定の写真や絵を変化させる

Imagic解説の写真

Imagicとは

10月17日に発表された。加工したい画像を1枚用意して、それに対してプロンプトを与えると、元の画像の一貫性を保ったままプロンプトで指定した画像加工が行える技術。これまでPhotoshopで行ってきた様な各種の画像加工が行える。上の写真はそれぞれ左の元の写真に対してプロンプトで加工した例。なお元画像を学習させる必要があるため、学習時間が20分以上必要。

実際にやってみる

①colabのサイトにアクセス

※オリジナル(英語版)

Google Colab

※リーサさんによる日本語版

Google Colab

②写真を用意

元の写真を用意する(ファイル名は英数字のみ、スペースもエラーになる)。

加工前の写真

③プロンプトを用意

例としてメガネをかけさせてみる。TARGET_TEXT:に「girl wearing glasses」を入力。

上から順に実行させて(約30分モデル学習にかかる)終わった成果が下の写真。

Imagicで生成されたメガネをかけた写真

服装も変わったり、少し顔の角度も変わっている。元の写真とは少し違う顔になっているがパラメータ調整でこの辺りは追い込めるようだ。

ちょっと使いにくい

しかしながら元の写真とプロンプトをセットでモデル学習させる今のやり方では、プロンプトを変更する度にかなりの時間がかかってしまうし、都度巨大なモデルが作られてしまう。例えばFaceAppならメガネをかけたり髪を変更するのも一瞬だ。下の写真(右側)はFaceAppで加工したもの

FaceAppでメガネ追加、髪型変更

よってImagicは近日中に写真の学習のみ行って、プロンプトは後から自由に変更できるDreamboothに近いやり方に変更されると思う。