kimyongtae.com
홈 / 강의 / AI 이미지·애니메이션 생성, 원리부터 / 4단계. 파인튜닝

4-2. 데이터셋과 캡션

LoRA의 품질은 설정이 아니라 데이터에서 정해진다. 어떤 그림을 몇 장 모으고, 각 그림에 어떤 설명을 붙이느냐. 이번 수업의 핵심은 한 문장이다. 설명에 적은 것은 프롬프트로 조절할 수 있게 되고, 적지 않은 것은 LoRA에 굳는다.

학습 데이터의 모양

그림과 설명의 쌍이다. 기반 모델을 학습할 때와 같은 형식이다(1-5).

dataset/
  001.png   001.txt
  002.png   002.txt
  ...

.txt 파일에 그 그림의 설명이 들어 있다. 이 설명을 캡션이라고 한다.

몇 장이 필요한가

목적장수비고
캐릭터15~30장적어도 된다. 다양성이 더 중요하다
화풍50~수백 장다양한 대상이 그 화풍으로 그려져 있어야 한다
개념, 자세, 의상20~100장그 개념이 여러 상황에서 나타나야 한다

많다고 좋은 것이 아니다. 나쁜 그림 100장보다 좋은 그림 20장이 낫다. 모델은 데이터의 결점까지 배운다.

무엇을 다양하게, 무엇을 일정하게

LoRA는 데이터 전체에 공통으로 나타나는 것을 배운다. 여기서 원칙이 나온다.

가르치고 싶은 것은 모든 그림에 일정하게. 가르치고 싶지 않은 것은 그림마다 다르게.

캐릭터 LoRA

일정해야 하는 것다양해야 하는 것
얼굴, 머리 모양과 색, 눈 색, 체형자세, 각도, 표정
(기본 의상을 가르치려면) 의상배경, 조명, 구도(얼굴, 상반신, 전신)

흔한 실패가 있다. 모든 그림이 정면 상반신에 흰 배경이다. 그러면 LoRA는 "이 캐릭터는 정면 상반신에 흰 배경"이라고 배운다. 옆모습을 시켜도 정면이 나오고, 배경을 지정해도 흰색이 나온다. 자세와 배경이 캐릭터의 일부로 굳은 것이다.

화풍 LoRA

일정해야 하는 것다양해야 하는 것
선, 채색, 명암 처리, 색감그려진 대상. 사람, 풍경, 사물, 여러 캐릭터

한 캐릭터만 그려진 그림으로 화풍을 학습하면 화풍과 캐릭터가 함께 굳는다. 무엇을 시켜도 그 캐릭터가 나온다.

그림 고르기와 손질

그림의 가로세로 비율은 달라도 된다. 학습 도구가 비슷한 비율끼리 묶어 처리한다. 버킷이라고 부른다. 억지로 정사각형으로 자를 필요가 없다.

캡션의 원리

학습은 "이 캡션이 붙었을 때 이 그림이 나오게" 가중치를 움직이는 일이다. 캡션에 이미 있는 말은 기반 모델이 아는 말이다. 그 말로 설명되는 부분은 이미 설명됐으니 LoRA가 새로 배울 것이 없다. 설명되지 않고 남은 부분을 LoRA가 떠맡는다.

그래서:

예: 캐릭터 LoRA

은빛 머리에 붉은 눈, 검은 교복을 입은 캐릭터를 가르친다. 창가에 앉은 그림 한 장의 캡션을 두 가지로 써 보자.

캡션 A

mychar, sitting, window, classroom, sunset, smile

캡션 B

mychar, silver hair, red eyes, black school uniform, sitting, window, classroom, sunset, smile
캡션 A캡션 B
은빛 머리, 붉은 눈mychar에 흡수된다. mychar만 쓰면 나온다silver hair, red eyes 태그에 묶인다. 태그를 써야 나오고, 바꿀 수도 있다
검은 교복mychar에 흡수된다. 옷을 갈아입히기 어렵다black school uniform에 묶인다. 다른 옷 태그로 갈아입힐 수 있다
자세, 배경, 표정둘 다 캡션에 적었다. 프롬프트로 조절된다

정답은 목적에 달렸다. 흔히 쓰는 방식은 이렇다.

mychar 같은 단어를 트리거 단어라고 한다. 기반 모델이 모르는 새 단어를 지어서 쓴다. 이미 뜻이 있는 단어를 쓰면 그 뜻과 섞인다.

예: 화풍 LoRA

화풍은 캡션에 적지 않는다. 그려진 내용만 적는다.

1girl, long hair, sitting, park, bench, autumn

내용은 캡션으로 다 설명됐다. 설명되지 않고 남는 것은 화풍뿐이다. LoRA가 그것을 떠맡는다. 그래서 화풍 LoRA는 트리거 단어 없이 켜기만 해도 화풍이 적용된다.

캡션을 만드는 법

수십 장의 캡션을 손으로 쓰지 않는다. 자동으로 만들고 손으로 고친다.

기반 모델캡션 형식만드는 도구
태그 모델 (Illustrious 등)태그 나열태그를 붙여 주는 모델
문장 모델 (Flux 계열 등)설명문그림을 보고 설명을 쓰는 언어 모델

기반 모델이 학습 때 본 형식을 따른다(2-3). 태그 모델에 문장 캡션으로 학습하면 잘 안 된다.

자동으로 만든 뒤 반드시 훑어본다.

가르치고 싶지 않은 것이 모든 그림에 있을 때

자료가 설정화뿐이라 전부 흰 배경에 서 있는 자세다. 어떻게 할까.

  1. 캡션에 적는다. white background, standing을 모든 캡션에 넣는다. 흡수되는 것을 줄인다. 완전히 막지는 못한다.
  2. 데이터를 늘린다. 3단계의 편집 모델로 다른 자세, 다른 배경의 그림을 만들어 보탠다(3-4). 지금은 이 방법이 가장 효과적이다.
  3. 먼저 약하게 학습해서 그 LoRA로 그림을 뽑는다. 잘 나온 것을 골라 데이터에 넣고 다시 학습한다.

정규화 그림

캐릭터 LoRA를 학습했더니 모든 소녀가 그 캐릭터가 되어 버렸다. 1girl이라는 일반 개념까지 물든 것이다.

이것을 막으려고 "평범한 소녀 그림"을 함께 넣어 학습하는 방법이 있다. 내 캐릭터는 mychar, 1girl로, 평범한 소녀는 1girl로 캡션을 단다. 모델이 "1girl만으로는 여전히 평범한 소녀"라는 것을 잊지 않는다. 이 평범한 그림들을 정규화 그림이라고 한다.

LoRA는 변화가 작고 강도로 조절할 수 있어서, 요즘은 생략하는 경우가 많다.

권리에 관하여

확인 문제

  1. 캐릭터 LoRA의 학습 그림이 전부 같은 옷이고 캡션에 옷을 적지 않았다. 무슨 일이 생기나?
  2. 화풍 LoRA의 캡션에 화풍을 적지 않는 이유는?
  3. 트리거 단어로 girl을 쓰면 안 되는 이유는?

풀이

  1. 옷이 트리거 단어에 흡수된다. 그 캐릭터는 항상 그 옷을 입고 나오고, 다른 옷으로 갈아입히기 어렵다.
  2. 캡션으로 설명되지 않은 것이 LoRA에 흡수되기 때문이다. 내용만 적으면 남는 것은 화풍뿐이다.
  3. 기반 모델이 이미 아는 단어라서 그 뜻과 섞인다. 모든 소녀가 그 캐릭터로 물든다.
← 4-1 파인튜닝과 LoRA의 원리 4-3 학습 설정과 진단 →