アニメ塗りLoRAをつくる。

Stable Diffusionのモデルで「アニメスタイル」と銘打ってるものがありますが、個人的な見解としてそれは全然アニメスタイルじゃねえぞ、という思いがあります。私の思い浮かべる「アニメスタイル」はこれです↓

変なところがないとは言わなけどこんな絵をAIが描いちゃうんだからすごいよなぁ

というわけでLoRAを作りました。

ダウンロード

とりあえずLoRAのダウンロード先を掲載しておきます。
Civitai
自前サーバー(ミラー)

作り方

まず、絵柄を固定させてしまわないように資料が偏ってない必要があります。

なぜかというと、偏っているとキャラクターや絵柄まで学習してしまうからです。今回作りたいのはあくまでアニメ塗りなので、それ以外は共通点がない画像を作る必要があります。例えば、プリキュアに代表される児童用アニメのような簡易的な絵柄からチェンソーマンのようなちょいリアルな絵柄、俯瞰、アオリ、1人、多人数等様々なものを幅広く混ぜないといけません。

今回はそのようにして90枚ほど作りました。なかなか根気のいる作業ですが、資料作りが出来を左右するので頑張りましょう。
※バリエーションがたくさんあるとクオリティにあまり影響されてない気がします。元のモデルのポテンシャルが活かされてるのかも?資料は高クオリティの絵だけではありません。高クオリティの絵は少数です。それでなんでこんなLoRAが出来上がるのか正直私も不思議なのですが……

LoRAの設定値は以下です。

ss_batch_size_per_device: “3”,
ss_bucket_info: “{“buckets”: {“0”: {“resolution”: [384, 640], “count”: 190}, “1”: {“resolution”: [448, 576], “count”: 190}, “2”: {“resolution”: [512, 512], “count”: 50}, “3”: {“resolution”: [576, 448], “count”: 80}, “4”: {“resolution”: [640, 384], “count”: 380}}, “mean_img_ar_error”: 0.09751568187190339}”,
ss_bucket_no_upscale: “False”,
ss_cache_latents: “True”,
ss_caption_dropout_every_n_epochs: “None”,
ss_caption_dropout_rate: “0”,
ss_caption_tag_dropout_rate: “0”,
ss_clip_skip: “2”,
ss_color_aug: “False”,
ss_enable_bucket: “True”,
ss_epoch: “8”,
ss_face_crop_aug_range: “None”,
ss_flip_aug: “False”,
ss_full_fp16: “False”,
ss_gradient_accumulation_steps: “1”,
ss_gradient_checkpointing: “False”,
ss_keep_tokens: “2”,
ss_learning_rate: “0.00015”,
ss_lowram: “False”,
ss_lr_scheduler: “cosine_with_restarts”,
ss_lr_warmup_steps: “0”,
ss_max_bucket_reso: “960”,
ss_max_grad_norm: “1.0”,
ss_max_token_length: “150”,
ss_max_train_steps: “2392”,
ss_min_bucket_reso: “256”,
ss_mixed_precision: “fp16”,
ss_network_alpha: “1.0”,
ss_network_dim: “8”,
ss_network_module: “sd_scripts.networks.lora”,
ss_new_sd_model_hash: “f303d108122ddd43a34c160bd46dbb08cb0e088e979acda0bf168a7a1f5820e0”,
ss_noise_offset: “None”,
ss_num_batches_per_epoch: “299”,
ss_num_epochs: “8”,
ss_num_reg_images: “0”,
ss_num_train_images: “890”,
ss_optimizer: “lion_pytorch.lion_pytorch.Lion”,
ss_output_name: “anmnr01”,
ss_prior_loss_weight: “1.0”,
ss_random_crop: “False”,
ss_reg_dataset_dirs: “{}”,
ss_resolution: “(512, 512)”,
ss_sd_model_hash: “9600da17”,
ss_sd_model_name: “AOM3A1_orangemixs.safetensors”,
ss_sd_scripts_commit_hash: “f0ae7eea950b93b1550dc34a782da3bafda2a8c0”,
ss_seed: “23”,
ss_session_id: “2460824161”,
ss_shuffle_caption: “True”,
ss_text_encoder_lr: “5.25e-05”,
ss_total_batch_size: “3”,
ss_training_comment: “None”,
ss_training_finished_at: “1679455156.2038748”,
ss_training_started_at: “1679452753.2898762”,
ss_unet_lr: “0.000375”,
ss_v2: “False”

なにか根拠があるわけではなくて、ネットで見かけた設定を自分の環境に合うようにしただけです。現状すごく良く機能しているので変える必要もないのかなと。keep_tokensは2じゃなくて1が適切だったかも。まあいいか。

エッチな絵を作りたくてもエッチな絵を混ぜる必要はない

エッチな絵を作りたくても資料にエッチな絵が含まれている必要は全くありません。むしろ、資料に引っ張られるので特定の特徴を持つ裸を作りたい時以外は混ぜてはいけません。それで、じゃあ裸はどうなるの?というと、モデルの特徴がそのまま反映されます。なので、LoRAを作る時はモデル選びが大切です。

終わりに

偉そうに講釈たれたわけですが、そんな私も右も左も分からない状態でチャレンジしております。皆様も是非チャレンジしていただき、より良いエッチな画像をアップしていただけるとうれしいです。最後にもう一枚画像を貼って終わります。