NovelAIのeuler_ancestralをWebUIで再現する方法
はじめに
NoveAIの描写はサンプラーによって違いがあり、ローカル版のアスカテストはサンプラーにEulerを使用して再現していました。
しかし、これまでNAIデフォルトのサンプラーであるeuler_ancestralでは描写が変わってしまい、十分に再現することができませんでした。
今回、ソースコードの一部を書き換えることによってEuler a(euler_ancestral))でも再現できることが分かったので報告します。モデルはfullを使用します。また、設定のSampler parametersから、Eta noise seed deltaは31337、eta (noise multiplier) for ancestral samplersは0.667とします。0.667の方は必要ないかもしれません。
NovelAIのデフォルトのパラメーターを再確認
現在の初期設定では次のようになっています。Undesired ContentはLow Quality + Bad Anatomyが選択されており、プロンプトへnsfwを明示的に入れない限り、UCの先頭にnsfwが挿入されるようになっています。
Add Quality Tags = ON(先頭にmasterpiece, best quality, を追加する)
steps: 28, sampler: k_euler_ancestral, scale: 11
UC: nsfw, 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
ソースコードを書き換える
repositories/k-diffusion/k_diffusion/sampling.py を書き換える。
43行目以降
このsigma_up = min~を以下のように書き換える。
元の行は#でコメントアウトし、sigma_up = (sigma_to 2 * (sigma_from 2 - sigma_to 2) / sigma_from 2) ** 0.5に変えています。
チェックする
なるべく描写をそろえるために、Add Quality TagsはOFFにし、Undesired ContentはNoneとした上で、UCに次のものを入力します。
UC: nsfw, 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
プロンプト: hello world
steps: 28, sampler: k_euler_ancestral, scale: 11
シードは1に固定します。
次のような画像になれば成功!
補足情報
上記の変更だけでは、Add Quality TagsやデフォルトのUndesired Contentと細部がことなるようです。
NovelAIのUndesired ContentをNoneとし、内容を手動で指定するだけでなく、最後に","を追加すると再現性が高まる場合があります。