リークされたNovelAIのデータでローカル実行してみた

# 更新
* 2022/10/17
    設定に間違いがあったので修正しました。
    コメントくださった方ありがとうございます。

---
ある程度知識ある人向け
わかんないことはググって
（まあそういう人らは自分でやってそうだけどね

# 自己責任でどうぞ
細かいことは知らん
これでPCが爆発しようがウイルスに感染しようが怖い人が来ようが世界から消されようが私の知るところではない

# そもそも
NovelAIDiffusionだろうがWaifuDiffusionだろうが元はStableDiffusionってOSSのAIモデル。
その中でもNovelAIは独自に改良と賛否両論な例の学習データを駆使してずば抜けた精度を発揮した
んで先日この独自のデータが見事に漏洩。5chはお祭り騒ぎだったね。。

NovelAIがどんな改善を加えて高精度なイラスト生成をしているのかについては下記
https://gigazine.net/news/20221011-novelai-model-improvements-stable-diffusion/

# 環境構築
ツールの細かい話はしない
そういうのは他で調べてくれ。
あと事前にCUDAとかcuDNNとか入れといてくれ。え、NVIDIA製のグラボないって？ あきらめろん。
あ、Pythonとか必要かも（Anacondaでも多分おｋだけど私あの子嫌い。3.10.xで動いてるからそれでおｋ）
予め入れといてくれ
StableDiffusionが動く環境になればいいからそのへん参考にツールいれてくれい。

あとVSCodeあったほうがR18避けするときソース検索し易いから便利かも

## Stable Diffusion WebUI
AIを実際に動かすソフト。
これに必要なものを追加する感じ。

元はStableDiffusionをUIで使いやすくしたものだったのだけれど
開発者が爆速で更新して爆速でリークされたNAIの対応もするもんだからやばいのなんの

### Stable Diffusion WebUIをDLする
https://github.com/AUTOMATIC1111/stable-diffusion-webui

`git clone`でもいいしZIPでDLでもおｋ

### 起動ファイルの中身を書き換える
※起動はするな。リポジトリ取り直すところからやり直す羽目になる。
`stable-diffusion-webui`ディレクトリ直下にある`webui-user.bat`を右クリックして編集（メモ帳でおｋ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/c1c09a83-93d7-a03c-9594-4c04a8a2f1c0.png)

~~最終行のところに`--xformers`って書き足す~~ （←頭悪すぎかよ自分）
`set COMMANDLINE_ARGS`に`--xformers`を書き足す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/e7017331-11b9-c9a1-5e39-78f4e25b2412.png)


保存して終了。


### GFPGAN
[GFPGAN](https://github.com/TencentARC/GFPGAN/)をGitHubからダウンロードして、`./models/GFPGAN`フォルダに入れる
（READMEのUpdateのv1.4てやつDLしてぶちこんだ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/e049e0ca-a7d8-76f0-fcaa-47db8824388e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/613a0776-8613-bd7b-4b7f-fed57f91d1d1.png)

## リークされたNovelAIのデータ
貼らない方がいいかと思ったけど5chにもまとめにも乗ってたし今更だよな
torrentだからDLできないとかウイルスでしたーとかでもワシしらんから

### 頑張ってDLする
マグネットリンク貼っとくけど自己責任で
```
magnet:?xt=urn:btih:5bde442da86265b670a3e5ea3163afad2c6f8ecc&dn=novelaileak&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2810%2Fannounce&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce&tr=udp%3A%2F%2Fopentracker.i2p.rocks%3A6969%2Fannounce
```
マグネットリンクってなに←ggrks
Torrentって何？←ggrks
50GBもあるの？！← Nur○勢がんば

### 中のファイルをStable Diffusion WebUIにコピー
容量クソデカだけどコピーのほうがいいと思う
万が一なにかミスってDLし直しとか笑えるからな。。

1. `novelaileak\stableckpt\animefull-final-pruned`のフォルダ下にある`model.ckpt`を`stable-diffusion-webui/models/Stable-diffusion`にコピー
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/7f7882f3-c923-35ed-a010-827061163e0b.png)
2. １でコピーしたファイルを`final-pruned.ckpt`にリネーム
3. `novelaileak\stableckpt`にある`animevae.pt`を２と同じ場所にコピー
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/19c42b9b-b663-0954-0c6e-1729e6a1ff87.png)
4. ３でコピーしたファイルを`final-pruned.vae.pt`にリネーム
5. ここまでで`stable-diffusion-webui/models/Stable-diffusion`の中身は下記になってると思われ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/df249161-39ac-b4da-becc-faedc7e069f0.png)

6. `stable-diffusion-webui\models`下に`hypernetworks`ってディレクトリを作成
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/8e3b7726-7dea-059b-5450-ed26e97f1858.png)
7. `novelaileak\stableckpt\modules\modules`にあるファイルすべてを６で作成したディレクトリにコピーする
    hypernetworks下はこんな感じ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/9889de53-5679-73e6-12cc-3540aa1e9123.png)

これでおっけい

# R18フィルタ避け
せっかくローカルで実行するんだもの。
__※デフォルトでフィルタ無効らしいので対応不要__

VSCodeでプロジェクトルートから開いて、`check_safety`を検索
バージョンによりけりだけど多分２ファイルくらいHitするので、各コードを書き換える。

./modules/safety.py
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/68043403-91fd-b3e7-6233-0efddc7af911.png)
`x_checked_image, has_nsfw_concept = check_safety(x_samples_ddim_numpy)`
↓
`x_checked_image = x_samples_ddim_numpy`
って書き換える。

`./repositories/stable-diffusion/script/txt2img.py`も同様に書き換える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/60c10992-2b86-fd12-7e26-833365a6db4d.png)

多分これでおｋ

# 起動
`stable-diffusion-webui`ディレクトリ直下にある`webui-user.bat`をダブルクリックで実行する。

初回起動は色々インスコするので時間かかるけれど、適当に待ってれば
`Running on local URL:  http://127.0.0.1:7860`
って出るので、ブラウザで http://127.0.0.1:7860 にアクセス。

# 動作確認
* TOP画面かSetting画面にStable Diffusion checkpointってのがあるのでプルダウンから選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/d903eea2-0afb-9b58-8b43-60f0009d8c2e.png)

* Setting画面の下の方にStop At last layers of CLIP modelってあるので２にする
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/82a9f33b-e4ea-b10c-8a4e-24a860bda9e9.png)

あとは下記で設定して
```
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
// Steps: 28, Sampler: Euler, CFG scale: 12, Seed: 2870305590
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606574/33f86415-4961-dcc2-381a-b7dc636f4568.png)
こんな感じのアスカっぽい子が出ればOK

# その他
StableDiffusionWebUIの使い方はGIGAZINEが紹介してるのでそっち見たほうがわかりやすい
https://gigazine.net/news/20220914-automatic1111-stable-diffusion-webui-img2img-outpainting/
https://gigazine.net/news/20220909-automatic1111-stable-diffusion-webui-how-to-use/
（他にもGIGAZINEが使い方紹介してる記事あるのでggr

# 参考
https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/2017
https://mevius.5ch.net/test/read.cgi/cg/1664695948/825