スポンサーリンク

Dream Studioと同等の設定で画像出力する方法~Stable Diffusion+Google Colab

前回の記事で「Google Colaboratery」を使ってStable Diffusionを無料かつ無制限で利用する方法をご紹介しました。

上記の方法では、「画像解像度512×512、ステップ数50」が基準で画像サイズの変更はできなかったのですが、この記事ではDream Studioと同等の設定で画像出力する方法をご紹介します。

Google Colaboratery で Stable Diffusion を使う準備をする

「Google Colaboratery」でStable Diffusionを使う準備をします。

この準備は以前紹介した方法の途中まで同じなため、前回の記事を参照してください。

「【3】Google Colaboratory でコマンドを入力する」の項目の最後、

pipe.to("cuda")

を入力する段階まで整えておいてください。

Dream Studioと同等の設定ができるコマンド

import torch

prompt = "metropolis at night"
image = pipe(prompt,                     # プロンプト
             height=512,                 # 画像の幅
             width=512,                  # 画像の高さ
             guidance_scale=7.5,         # 画像とプロンプトの近似度 (0〜20)
             num_inference_steps=50,     # ステップ数
             generator=torch.Generator("cuda").manual_seed(0), # シード値
             )["sample"][0]
image.save("metropolis_at_night.png")

このコードのうち、値を変更するのは赤いマーカーの部分です。

import torch

prompt = "metropolis at night"
image = pipe(prompt,                     # プロンプト
             height=512,                 # 画像の幅
             width=512,                  # 画像の高さ
             guidance_scale=7.5,         # 画像とプロンプトの近似度 (0〜20)
             num_inference_steps=50,     # ステップ数
             generator=torch.Generator("cuda").manual_seed(0), # シード値
             )["sample"][0]
image.save("metropolis_at_night.png")
項目解説
height画像の幅:512, 576, 640, 704, 768, 832, 896, 960, 1024, いずれかの値で入力
width画像の高さ:512, 576, 640, 704, 768, 832, 896, 960, 1024, いずれかの値で入力
guidance_scale画像とプロンプトの近似度。数値が高いほど、入力した文字列の内容に沿った画像が出力されますが、高すぎるとかえっていびつになります。「7~12」あたりが適当でしょう。
num_inference_steps数値が高いほど高精細になりますが、高すぎると時間がかかる上に処理能力不足になってエラーが起こる可能性があります。「100~120」あたりが試しやすいでしょう。
seedシード値。AIがランダムに出力した画像に割り振られている通し番号のようなものです。この値がわかると、同じ画像を繰り返し生成して画像の完成度を高めていく作業ができますが、Google Colaboratoryで一枚ずつ出力する場合にはあまり使えない値です。

このコードのうちどこの値を変更するのかよく分からない、という方でも実際にGoogle Colaboratoryにコマンド入力すると、変更すべき項目が色分けされているのでわかりやすいと思います。

はじめは小さなサイズから

作業する時間帯にもよるのですが、私の体感ではいきなり大きな画像サイズ、ステップ数から始めるとエラーが起こりがちです。

はじめは小さなサイズからプロンプトの実験を始めて、気にいった出力ができたら徐々に解像度やステップ数を上げて求める画像を作りましょう。

サンプル画像

かなりいい感じにできたお気に入り。高精細になりすぎないボヤっとした描画なのがかえっていいです。
いつか使うかもしれない漫画の背景素材用に。こういういい加減な形状の乗り物でも「フィクションだから」で片づけられるため、漫画素材にAIを活用する有用性が高まります。
これは明らかに失敗なのですが、都市の夜景がレトロな漫画風になりました。プロンプトに”decadent“と入れたからだろうか…

ステップ数の比較

同一のプロンプト、画像サイズでステップ数を上げていった場合の例を見てみましょう。

“city,nuclear fusion plant,large helical device,unreal engine” ステップ数50
“city,nuclear fusion plant,large helical device,unreal engine” ステップ数100
“city,nuclear fusion plant,large helical device,unreal engine” ステップ数150
“city,nuclear fusion plant,large helical device,unreal engine” ステップ数200

こうして比較すると、単純にステップ数を上ると絵も良くなる、というわけではなさそうです。

好みもありますが、私はステップ数100くらいがちょうどいい塩梅ではないかと感じます。(ほとんど変わりはないのですが)

漫画用の背景に情報量を落として使う場合、ステップ数50でも十分ですね。

Dream Studioのコストを検討する

「画像解像度512×512、ステップ数50」という縛りから脱却できないものだろうか… 

と調べているうちに偶然Dream Studioと同等の設定ができるというコマンドを見つけたのでこの記事を書きました。

しかし画像の幅・高さの値は任意ではなく固定値だということがはじめは分からなかったため、エラーを連発して苦労しました。(Dream Studioと同じ値なのか、と気づいて解決しましたが…)

画像をより高解像度・高精細にできる上に縦横幅の変更も可能になったので、ますます漫画用の背景素材を作りやすくなりました。ありがたいありがたい。

Dream Studioで画像を生成すると、結局いくらくらいかかるの?

一見しただけでは分からない料金表だよ(泣)

Dream Studioは従量課金制と前回の記事でも紹介いたしましたが、改めて。

Dream Studioの料金表はオフィシャルサイトをご確認ください。

£10(約1600円)で「画像解像度512×512、ステップ数50」が約1000枚出力可能です。

ということは、「画像解像度512×512、ステップ数50」の画像は一枚約1.6円。

画像解像度、ステップ数が上がるに従いチケットをより消費するので、

例えば「画像解像度768×1024、ステップ数100」の画像は一枚約21円。

「画像解像度1024×1024、ステップ数150」の画像は一枚約45円。

うーん、面白いからといってポンポン遊んでいるとあっという間にチケットを使い切ってしまう金額です。一発の出力で欲しい画像が出るわけではないので、試行回数を考慮すると… うーむ。

一枚あたりの出力単価がこの値段になってくると考えると、素直に素材写真を購入したり、パブリックドメインの無料素材を使った方がよほど解像度も高いし高品質だと思ってしまいますね…。

既存の配布素材にはない素材を作りたい。そのために試行錯誤を重ねなければならない。それなのに試行回数を気にしてチマチマ作るのはAIの本領から遠のいている気がする。

NVIDIAのGPUが搭載されているPCでは、ソフト化されたものがインストール可能なのですが、そうではない低スペックPCユーザーは当面の間、無料で使える方法を探りながら様子見した方がいいかもしれません。(もちろん課金が惜しくない方はやってみる価値ありだと思います)

上記の記事にも書いた通り、Stable Diffusionのデモ版でまずはプロンプトがどんな風に画像生成されるか確認し、Google Colaborateryで精度を上げていくのが良い手だと思います。

(Stable Diffusionのデモ版では「シード値」も確認できるので、同じ画像を試行錯誤可能です)



タイトルとURLをコピーしました