話題のNovelAIをエミュレーションしてお絵かきしよう!乗るしかない、このビッグウェーブに!
目次
NovelAIとは?
PixivやらTwitterからの無断転載が多い(つまり他人の褌で相撲をとっている)とされる二次元画像サイトDanbooruから画像をスクレイピングして学習したといわれています。その上で料金を取ってサービスを展開している(つまり他人の他人の褌で相撲を取っている)ため批判が相次いでいるようですが、Twitterを見る限り割と課金して使っている人多いみたいですね。なお、Danbooruからは「我々はNovelAIとは関係ない」という声明が出ているようです。
NovelAIエミュレーションとは?
さて、そのNovelAIがハッキングされてソースコードが流出しました。今回はそのモデルを使ってローカルに環境を作ります。つまり他人の他人の他人の褌で相撲を取ります。大本となる解説サイトは昨日解説したAUTOMATIC1111の下記エントリーの通りです。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/2017
NovelAIエミュレーションのインストール手順
Pythonのインストール
Gitのインストール
CUDA Toolkitのインストール
これらについては機能の記事と同じです。
WebUIのリポジトリのクローン
NovelAIエミュレーションの環境だけ作りたい場合は昨日の記事と同じくコマンドプロンプトを起動し、任意のフォルダに移動したら、下記コマンドでリポジトリのクローンを行います。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
昨日作った環境の横に新たに環境を作成したい場合はディレクトリ名を指定します。指定しないとディレクトリ名がリポジトリ名と同じになり、昨日のフォルダに上書きされてしまうからです。例えばディレクトリ名を「stable-diffusion-webui-novelai」としたい場合は下記の通りです。以下、このディレクトリとして解説します。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui stable-diffusion-webui-novelai
モデルのダウンロード
ダウンロードします。
モデルの配置
ダウンロードしたデータの中の「novelaileak\stableckpt\animefull-final-pruned\model.ckpt」のファイル名を「animefull-final-pruned.ckpt」に変更して、先ほど作成した「stable-diffusion-webui-novelai/models/Stable-diffusion」にコピーします。
また、ダウンロードしたデータの中の「novelaileak\stableckpt\animevae.pt」のファイル名を「animefull-final-pruned.vae.pt」に変更して、同じく先ほど作成した「stable-diffusion-webui-novelai/models/Stable-diffusion」にコピーします。
更に、先ほど作成した「stable-diffusion-webui-novelai/models」の下に「hypernetworks」というフォルダを作成し、ダウンロードしたデータの中の「novelaileak\stableckpt\modules\modules」の中にあるファイルを全てコピーします。
バッチファイルの変更
先ほどクローンしたリポジトリの直下に「webui-user.bat」というファイルがありますので、テキストエディタで開いて
call webui.bat
を
call webui.bat --xformers
に変更します。
バッチファイルの実行
webui-user.batをダブルクリックして実行します。
UIの起動
ブラウザに「localhost:7860」と打ち込むと、UIが表示されます。
動作確認
さて、上記で紹介したエントリーと同じエヴァンゲリオンのアスカのような子が生成できれば環境は正しく構築できたと判断できます。このために以下の設定を行います。
- Settingタブの下の方にある「Stop At last layers of CLIP model」の数値を「2」に変更する。
- txt2imgタブに戻り、「Smapling Steps」を「28」に、「Sampling method」を「Euler」に、「CFG Scale」を「12」に、「Seed」を「2870305590」に変更する。
- 「prompt」に「masterpiece, best quality, masterpiece, asuka langley sitting cross legged on a chair」を入力する。
- 「Negative prompt」に「lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name」を入力する。
Generateを押して以下の画像が出力されれば正解です。
昨日の記事の最後に張った画像と同じ条件でも格段にクオリティーが上がります。
ちょっと真面目な話
冒頭に書いた通り、無断転載サイトを発端として、そこからスクレイピングして学習したデータ、そしてそれがリークしたものを使っており、いわば他人の褌だらけです。しかしながら一般的な感覚・感情に反して、平成30年改正著作権法第30条の4では著作物を機械学習に利用することは著作権法で認められています。
「丹精込めて描いた絵がAIの養分になっている」ということは描き手には耐えがたいことは想像に難くないことですが、国としてはAIで世界に後れを取りたくないという焦りがあると思います。
現に「お絵描きAI」の分野では、くだんのmimic事件のように国内で足を引っ張り合っている間に、海外では恥も外聞もないNovelAIが完成していたといえるのではないかと思います。ここらへんの法律絡みの問題点については整理して別途書きたいと思いますが、エンドユーザーにできることとしては、もうお絵描きAIの進化は止められない前提として、上手な利用方法を考えることではないでしょうか。