뭐 정보까지는 안될거같고 그냥 내경우임
예전에 옆챈에 ai짤 1장으로 로라 만드는거 글 쓰고나서
그냥 개인용으로 계속 필요한거 학습하면서 쓰고있었음
그러다가 캐릭하나에 치였는데
이게뭐 버튜버도 아니고 스트리머가 trpg하면서 npc로 쓴 캐릭터라 이미지 구하기도 마땅치 않아서
ai생성물로도 학습 가능하고 이미지 장수 적어도 어느 정도 타협하는 선에서 학습이 된다는 걸 경험으로 알고 있어서
그렇게 하기로 했음
민트초코가 모티브인 캐릭이라 머리가 민트초코색인데 이게 ai로는 안나오니까
t2i로 베이스만 뽑고
나머지 부분은 내가 그냥 칠해주기로 하고 시작함
이렇게
잡 노이즈같은거도 편집과정에서 노이즈제거 돌려가면서 데이터셋 준비하고
이런식으로 이미지 만들고->학습->이미지뽑고 수정하고->학습을 반복했음
어차피 물량 많이 뽑을수 있으니까 존나뽑고 그중에서 괜찮은거만 내가 손대서 편집해서 데이터 삼는 방식으로 함
어느순간 내가 손 안대도 원하는 수준으로 나와서 그걸 마지막 데이터셋으로 삼고 학습 돌렸음
학습할때는 animefull말고 이미지 뽑은 모델로 돌리는게 잘나왔음
학습 파라미터는
SD1.5
{
"LoRA_type": "Standard",
"adaptive_noise_scale": 0,
"additional_parameters": "",
"block_alphas": "",
"block_dims": "",
"block_lr_zero_threshold": "",
"bucket_no_upscale": true,
"bucket_reso_steps": 64,
"cache_latents": true,
"cache_latents_to_disk": false,
"caption_dropout_every_n_epochs": 0.0,
"caption_dropout_rate": 0,
"caption_extension": "",
"clip_skip": 2,
"color_aug": false,
"conv_alpha": 1,
"conv_block_alphas": "",
"conv_block_dims": "",
"conv_dim": 1,
"decompose_both": false,
"dim_from_weights": false,
"down_lr_weight": "",
"enable_bucket": true,
"epoch": 20,
"factor": -1,
"flip_aug": false,
"full_bf16": false,
"full_fp16": false,
"gradient_accumulation_steps": "1",
"gradient_checkpointing": false,
"keep_tokens": "0",
"learning_rate": 0.0001,
"logging_dir": "F:/mint lora/1205\\log",
"lora_network_weights": "",
"lr_scheduler": "cosine_with_restarts",
"lr_scheduler_args": "",
"lr_scheduler_num_cycles": "",
"lr_scheduler_power": "",
"lr_warmup": 10,
"max_bucket_reso": 2048,
"max_data_loader_n_workers": "0",
"max_resolution": "1024,1024",
"max_timestep": 1000,
"max_token_length": "75",
"max_train_epochs": "",
"max_train_steps": "",
"mem_eff_attn": false,
"mid_lr_weight": "",
"min_bucket_reso": 256,
"min_snr_gamma": 5,
"min_timestep": 0,
"mixed_precision": "fp16",
"model_list": "custom",
"module_dropout": 0,
"multires_noise_discount": 0,
"multires_noise_iterations": 0,
"network_alpha": 16,
"network_dim": 32,
"network_dropout": 0,
"no_token_padding": false,
"noise_offset": 0.1,
"noise_offset_type": "Original",
"num_cpu_threads_per_process": 2,
"optimizer": "AdamW8bit",
"optimizer_args": "",
"output_dir": "F:/mint lora/1205\\model",
"output_name": "mintanime_1204_02",
"persistent_data_loader_workers": false,
"pretrained_model_name_or_path": "C:/stable-diffusion-webui/models/Stable-diffusion/t3fp16.safetensors",
"prior_loss_weight": 1.0,
"random_crop": false,
"rank_dropout": 0,
"reg_data_dir": "",
"resume": "",
"sample_every_n_epochs": 1,
"sample_every_n_steps": 0,
"sample_prompts": "best quality, masterpiece, high resolution, 1girl, mintsenpai,large breasts, single braid, streaked hair --w 512, --h 768, --d -1, --l 7, --s 20, --n (worst quality, low quality:1.3),artist name, character name, copyright name, company name, signature, patreon username, twitter username, weibo username, deviantart username,nsfw\n",
"sample_sampler": "euler_a",
"save_every_n_epochs": 1,
"save_every_n_steps": 0,
"save_last_n_steps": 0,
"save_last_n_steps_state": 0,
"save_model_as": "safetensors",
"save_precision": "fp16",
"save_state": false,
"scale_v_pred_loss_like_noise_pred": false,
"scale_weight_norms": 0,
"sdxl": false,
"sdxl_cache_text_encoder_outputs": false,
"sdxl_no_half_vae": true,
"seed": "",
"shuffle_caption": false,
"stop_text_encoder_training_pct": 0,
"text_encoder_lr": 4.5e-05,
"train_batch_size": 1,
"train_data_dir": "F:/mint lora/1205\\img",
"train_on_input": true,
"training_comment": "",
"unet_lr": 0.0001,
"unit": 1,
"up_lr_weight": "",
"use_cp": false,
"use_wandb": false,
"v2": false,
"v_parameterization": false,
"v_pred_like_loss": 0,
"vae_batch_size": 0,
"wandb_api_key": "",
"weighted_captions": false,
"xformers": "xformers"
}
SDXL
{ "ss_sd_model_name": "animagine-xl-3.0.safetensors", "ss_resolution": "(1024, 1024)", "ss_clip_skip": "None", "ss_num_train_images": "114", "ss_tag_frequency": { "meta_lat.json": {} }, "sshs_legacy_hash": "cec707d5", "ss_color_aug": "False", "ss_shuffle_caption": "True", "ss_vae_hash": "d636e597", "ss_optimizer": "transformers.optimization.Adafactor(scale_parameter=False,relative_step=False,warmup_init=False)", "ss_zero_terminal_snr": "False", "ss_gradient_checkpointing": "True", "ss_full_fp16": "False", "ss_max_bucket_reso": "None", "ss_max_grad_norm": "0", "ss_new_sd_model_hash": "1449e5b0b9de87b0f414c5f29cb11ce3b3dc61fa2b320e784c9441720bf7b766", "ss_scale_weight_norms": "None", "ss_reg_dataset_dirs": {}, "ss_random_crop": "False", "ss_cache_latents": "False", "ss_network_dim": "32", "ss_session_id": "2448531016", "ss_bucket_info": { "buckets": { "0": { "resolution": [ 704, 1024 ], "count": 88 }, "1": { "resolution": [ 1024, 576 ], "count": 6 }, "2": { "resolution": [ 1024, 1024 ], "count": 20 } }, "mean_img_ar_error": 0.0 }, "ss_gradient_accumulation_steps": "1", "ss_training_started_at": "1705027854.38396", "ss_sd_scripts_commit_hash": "05811296f6dc987f67f194689e106a326017b9d4", "ss_min_snr_gamma": "5", "ss_mixed_precision": "bf16", "ss_noise_offset": "0.0357", "ss_learning_rate": "0.0001", "ss_new_vae_hash": "63aeecb90ff7bc1c115395962d3e803571385b61938377bc7089b36e81e92e2e", "ss_lr_scheduler": "constant_with_warmup", "ss_max_train_steps": "1140", "ss_min_bucket_reso": "None", "ss_network_alpha": "16", "ss_total_batch_size": "1", "ss_unet_lr": "None", "ss_network_module": "networks.lora", "ss_adaptive_noise_scale": "None", "ss_training_comment": "None", "ss_training_finished_at": "1705029851.988913", "ss_num_reg_images": "0", "ss_flip_aug": "False", "sshs_model_hash": "be8b937409e85c00d730907b8f44bdbb6c7b9836155ac8926eef8e2391f361ff", "ss_bucket_no_upscale": "False", "ss_keep_tokens": "0", "ss_batch_size_per_device": "1", "ss_caption_dropout_every_n_epochs": "0", "ss_output_name": "sdxl_mintlora", "ss_num_epochs": "10", "ss_seed": "3835186055", "ss_vae_name": "sdxl_vae.safetensors", "ss_face_crop_aug_range": "None", "ss_caption_tag_dropout_rate": "0.5", "ss_enable_bucket": "True", "ss_dataset_dirs": { "meta_lat.json": { "n_repeats": 2, "img_count": 57 } }, "ss_multires_noise_iterations": "None", "ss_caption_dropout_rate": "0", "ss_steps": "1140", "ss_lowram": "False", "ss_lr_warmup_steps": "100", "ss_v2": "False", "ss_max_token_length": "225", "ss_network_dropout": "None", "ss_num_batches_per_epoch": "114", "ss_epoch": "10", "ss_text_encoder_lr": "None", "ss_prior_loss_weight": "1.0", "ss_multires_noise_discount": "0.3", "ss_base_model_version": "sdxl_base_v0-9", "ss_sd_model_hash": "75f2f05b"}
이렇게썼음
SD1.5랑 SDXL둘다 학습 괜찮게 돼서 지금은 둘다 돌려가면서 쓰고있음
아래는 그 예시
SD1.5 | SDXL |
요약하자면
1. 어느정도 타협만 한다면 원래부터 학습 잘하는 여캐같은건 ai짤로도 어렵지 않게 학습할수있음
2. 물량은 압도적인 속도로 공급 가능하니 데이터셋 잘 추리면 쓸만함
3. 이미지 뽑는대에 사용한 모델로 학습하자