그림 한 장으로 로라 만드는 과정을 말해 볼께. 정말 별 거 없어.


다른 챈에서 어쩌다 나온 얼굴이 느무느무 마음에 들어서 그 얼굴을 고정하는 방법을 문의한 챈붕이 있다.

내 대답 - 뭐 그 얼굴로 로라 만들면 되지.
문제는 어쩌다 나온 사진이라서 딱 1장 밖에 없다는 점이다. 

다행인 것은 1장이 해상도와 퀄이 좋아서.  이정도면 충분히 로라로 복사 가능하다.

이 사진의 가운데 얼굴이 쏙 마음에 든다는 거지. 사실 3명의 얼굴이 거의 흡사한데 사람마다 보는 관점과 꽂히는 과녁이 다르니까.

일단 결과부터 보여줄께. (당연히 NSFW 짤 잘 나오지, 거럼)


1. 데이터 준비 1

신뢰성 있는 결과를 만드는 내 방식이야. 정답은 몰라.
저 사진을 돌리고 쪼개고 변형하는 것이 1단계야. 그래서 이런 데이터셋1을 만들었어

 


이런 데이터는 Ai가 학습을 어떻게 할 까? 결과를 말하면 열심히 학습해서 꽤 근사한 결과를 줘. ( 어떤 사람은 동일한 사진을 복사해서 이름만 바꾼 파일로 30장 만들어서 로라를 만든다고 하는데, 안해봐서 모르겠다. 과적이 날꺼야 아마. )


2. 데이터 준비 2

해결해햐 하는 문제점과 해결꽁수

  - 사진 한장을 다양하게 쪼개다 보니 얼굴만 나오게 쪼갠 사진은 해상도가 낮아져서 픽셀이 자글자글하다 : 업스케일링 하자

  - 옆 사람과 몸이 겹친다 : 포토샵으로 겹치는 부분 처리하자

  - 배경과 주위사람이 거슬리고 원하는 로라와 전혀 상관이 없다 : 누끼따서 필요없는 부분을 날리자

  - 데이터셋의 크기가 들쑥날쑥하다 : 통일시키자 자동으로 짜르면 데이터의 어떤 점이 학습될 지 모른다. (보통 가운데)

작업은 - 전체 데이터를 업스케일+필터링하고, 누끼따고, 1024,1024로 다운스케일링하고, 겹치는 부분 포샵블러처리 했어


그래서 나온 데이터셋2 (1024 X 1024)

이 정도 데이터셋이면 거의 로라로 복사가능하다고 다시 확신한다.


3. 데이터 준비 3

태깅이 문제다.  선택의 시간이야. 

큰 이어링, 쫙 붙은 옷, 관창난 배꼽, 짙은 화장, 얼굴과 가슴의 점......
무엇을 강조해서 학습시켜야 더 잘나올까?
내가 한 캡션의 하나는 -

chikface, (face:1.4) of  1girl, long hair, breasts, looking at viewer, (blue eyes:1.2), large breasts, simple white background, brown hair, white skintight dress, cleavage, bare shoulders, jewelry, collarbone, upper body, parted lips, covered nipples, covered navel, lips with red lipstick, full makeup, forehead, mole under eye, mole on breast, hoop big circle earrings, realistic , NSFW

얼굴과 푸른눈에 가중치를 줘서 더 집중학습을 시키는 거야.


여기서 사소한 팁

실사사진은 BLIP캡션으로 서술형 캡션을 쓰는 것이 좋고, 
애니/2.5D는 WD캡션으로 단어형 캡션을 쓰는 것이 효과가 좋아. 
이유는 베이스 모델과 clip skip이 엉킨 문제야. 사실 나도 몰라.

4. 로라 학습 
- 베이스모델: chilloutmix_Ni.safetensors
- 파라미터 (과적의 위험이 있어서 여러가지 과적예방 파라미터를 사용했어: 밑줄 그은 것들)

Folder 40_chikface: 600 steps

Total steps: 600

Train batch size: 2

Gradient accumulation steps: 1

Epoch: 6

max_train_steps (600 / 2 / 1 * 6 * 1) = 1800

max resolution: 1024,1024 (1장으로 로라 만들 때 꼭 해상도 높은 데이터를 준비해라, 가뜩이나 데이터 없어서 불안한데 해상도로 밀어 붙이자)

network_dim=8

network_alpha=1

conv_dim=8

conv_alpha=1

algo=loha

text_encoder_lr=5e-05

unet_lr=0.0001

learning_rate=0.0001

lr_scheduler_num_cycles="3"

scale_weight_norms="1"

network_dropout="0.5"

lr_scheduler=cosine_with_restarts

lr_warmup_steps=90

train_batch_size=2

max_train_steps=1800

optimizer_type=AdamW8bit

max_data_loader_n_workers=0

max_token_length=225

caption_dropout_every_n_epochs=2

caption_dropout_rate=0.05

bucket_reso_steps=64

min_snr_gamma=1

flip_aug

shuffle_caption

noise_offset=0.1

샘플 프롬 

팁1 - 로라 작업하면서 샘플을 여러 개 만들 수 있어. 줄 바꿈만 해주면 돼. 이렇게 하면 안 벗은 거 벗은 거, 얼굴, 몸 이렇게 여러 개 샘플을 에포크가 돌아가면서 확인 할 수 있어.  에포크 고르기를 위해 굳이 나중에 다시 SD에서 그림을 그릴 필요 없어. 이거 꼭 써라

팁2 - 샘플의 시드를 1이나 2로 고정하자 (예: --d 2) 이러면  에포크 고르기 쉽다.

candid portrait of chikface, solo, face shot, cinematic look, (masterpiece, best quality :1.4), (real photo:1.4), (hyper realistic:1.3), professional photography,  extremely detailed CG unity, 8k wallpaper, HDR, RAW, intricate, delicate, aesthetic, lifelike rendering, immersive atmosphere, chiaroscuro, cinematic lighting, Depth of Field --n (low quality, worst quality:1.8), poor,  (extra limbs, missing limbs, exta nipples, extra navels, malformed body, bad anatomy, wrong anatomy:1.3),blur,lowres, greyscale, monochrome, abstract art,text, title, signature, error, jpeg artifacts, watermark, signature, multi scene --w 512 --h 1024 --s 40 --d 2 --l 8.5

(NSFW, nude:1.4), candid portrait of chikface, solo, face to chest shot, cinematic look, (masterpiece, best quality :1.4), (real photo:1.4), (hyper realistic:1.5), professional photography,  extremely detailed CG unity, 8k wallpaper, HDR, RAW, intricate, delicate, aesthetic, lifelike rendering, immersive atmosphere, chiaroscuro, cinematic lighting, Depth of Field --n (low quality, worst quality:1.8), poor, (extra limbs, missing limbs, exta nipples, extra navels, malformed body, bad anatomy, wrong anatomy:1.3), low effort, bad anatomy,blur,lowres, greyscale, monochrome, abstract art,text, title, signature, error, jpeg artifacts, watermark, signature, multi scene  --w 512 --h 1024 --s 40 --d 2 --l 8.5


5. 로라 결과

에포크 4: https://drive.google.com/file/d/1h8tyMwklOWcrff_PL8SMeW2OldNL6orr/view?usp=sharing 
에포크 6: https://drive.google.com/file/d/1G2k-3lt8nrw64lZvF_zV5qgK2YN3lX26/view?usp=sharing

에포크4 샘플에포크6 샘플

별 거 없고 참 쉽지?
결국 1장으로 로라 만들려면 오리지널 데이터가 가장 중요해.