3-4. 편집 모델: 말로 그림 고치기
"이 캐릭터를 옆모습으로 돌려라", "옷을 수영복으로 바꿔라", "배경을 밤으로 바꿔라". 그림을 주고 말로 지시하면 고쳐 주는 모델이 편집 모델이다. ControlNet, IP-Adapter, 인페인팅이 따로 하던 일을 모델 하나가 한다. 캐릭터를 여러 포즈로 그리는 가장 빠른 방법이 됐다.
지금까지의 도구로는 번거로운 일
캐릭터 그림 한 장이 있다. 같은 캐릭터를 다른 자세로 그리고 싶다.
- img2img: denoise를 높이면 캐릭터가 바뀌고, 낮추면 자세가 안 바뀐다.
- ControlNet: 자세는 잡히지만 캐릭터는 프롬프트에 맡겨야 한다.
- IP-Adapter: 대략 닮지만 세부가 달라지고, 참조 그림의 자세가 딸려 온다.
- LoRA: 정확하지만 그림 수십 장과 학습 시간이 필요하다.
"이 그림의 이 캐릭터를 그대로, 자세만 바꿔서"를 한 번에 하는 방법이 필요했다.
원리: 참조 그림을 토큰으로 함께 넣는다
1-8에서 DiT는 텍스트 토큰과 그림 토큰을 한 줄로 이어 붙여 어텐션에 넣는다고 했다. 여기에 참조 그림의 토큰을 더 이어 붙인다.
[ 텍스트 토큰 | 만들고 있는 그림의 토큰 | 참조 그림의 토큰 ] → 함께 어텐션
- 참조 그림을 VAE로 잠재로 바꾸고, 조각내어 토큰으로 만든다. 노이즈는 섞지 않는다. 깨끗한 채로 넣는다.
- 만들고 있는 그림의 토큰이 어텐션으로 참조 그림의 토큰을 직접 본다.
- 디노이저는 만들고 있는 그림 쪽 토큰의 방향만 예측한다.
IP-Adapter와의 차이가 여기 있다. IP-Adapter는 그림을 벡터 몇십 개로 요약해서 넣었다. 편집 모델은 참조 그림의 잠재 전체를 토큰 수천 개로 넣는다. 눈동자의 색, 옷의 무늬, 머리 장식의 모양까지 어텐션으로 가져올 수 있다. 세부가 유지되는 이유다.
위치 정보도 구분해 준다. 참조 그림의 토큰에는 "나는 참조 쪽이다"라는 표시가 붙는다. 그래서 모델이 둘을 헷갈리지 않는다.
학습
(원본 그림, 지시문, 고친 그림) 묶음으로 학습한다. "이 그림과 이 지시가 주어지면 이런 그림이 나와야 한다"를 배운다.
이런 묶음을 어떻게 모을까. 여러 방법을 섞는다.
- 영상에서 같은 대상이 나오는 두 장면을 뽑는다. 같은 사람, 다른 자세다.
- 기존 도구(인페인팅, ControlNet)로 고친 결과를 만든다.
- 언어 모델에게 두 그림의 차이를 지시문으로 쓰게 한다.
흐름
| 시기 | 모델 | 특징 |
|---|---|---|
| 2023 | InstructPix2Pix | 지시문으로 고치는 첫 공개 모델. SD 1.5 기반. 품질은 제한적 |
| 2025 | Flux Kontext, Qwen-Image-Edit | 캐릭터와 세부가 유지되는 수준에 도달 |
| 2025 말~2026 | Flux.2, Qwen-Image-2.1, FLUX 3 계열 | 생성과 편집이 한 모델로 합쳐짐. 참조 그림을 여러 장 받는다 |
지금은 "편집 모델"이 따로 있다기보다, 최신 모델이 편집을 기본으로 한다. 참조 그림 없이 쓰면 생성이고, 참조 그림을 넣으면 편집이다.
할 수 있는 일
자세와 각도 바꾸기
이 캐릭터가 의자에 앉아 책을 읽고 있다. 같은 옷, 같은 머리 모양.
캐릭터 시트 만들기
이 캐릭터의 정면, 옆면, 뒷면을 흰 배경에 나란히 그린다.
한 장에서 여러 각도를 뽑는다. 이것이 캐릭터 LoRA의 학습 데이터가 된다(4단계).
옷, 표정, 소품 바꾸기
옷을 겨울 코트로 바꾼다. 얼굴과 자세는 그대로.
배경과 조명 바꾸기
배경을 비 오는 밤거리로 바꾼다. 네온 불빛이 얼굴에 비친다.
여러 그림 합치기
첫 번째 그림의 캐릭터가 두 번째 그림의 옷을 입고 세 번째 그림의 장소에 서 있다.
참조 그림을 여러 장 받는 모델에서 된다.
구조 지시
뼈대 그림이나 깊이 지도를 참조 그림으로 넣고 "이 자세로 그려라"고 지시한다. ControlNet이 하던 일이다.
지시문 쓰는 법
- 바꿀 것과 유지할 것을 둘 다 쓴다. "옷을 바꾼다"만 쓰면 얼굴이 달라질 수 있다. "얼굴과 머리 모양은 그대로"를 붙인다.
- 한 번에 하나씩. 자세, 옷, 배경을 한꺼번에 바꾸면 캐릭터가 흔들린다. 나눠서 차례로 한다.
- 구체적으로. "더 멋지게"가 아니라 "가죽 재킷으로".
한계
- 여러 번 고치면 조금씩 달라진다. 고친 결과를 다시 참조로 넣는 일을 반복하면 얼굴과 화풍이 서서히 변한다. 항상 처음의 원본을 참조로 쓴다.
- 화질이 조금씩 떨어진다. 편집할 때마다 VAE를 거친다. 압축과 복원을 반복하면 디테일이 닳는다.
- 모델이 모르는 것은 못 한다. 편집도 생성이다. 학습 데이터에 없던 자세나 개념은 지시해도 못 그린다. LoRA로 가르쳐야 한다.
- 큰 각도 변화에서 무너진다. 정면 그림 한 장에서 뒷모습을 그리려면 모델이 뒷모습을 상상해야 한다. 그 상상이 매번 다르다.
LoRA와 무엇이 다른가
| 편집 모델 | 캐릭터 LoRA | |
|---|---|---|
| 준비 | 그림 한 장 | 그림 15~30장과 학습 시간 |
| 정확도 | 높다. 다만 매번 조금씩 다르다 | 높고 안정적이다 |
| 새 의상, 새 각도 | 모델이 상상한다 | 학습 데이터에 있던 범위에서 정확하다 |
| 다른 도구와 조합 | 그 모델 안에서만 | ControlNet, 영상 모델 등과 자유롭게 |
| 알맞은 일 | 몇 장만 필요할 때. LoRA 학습 데이터를 만들 때 | 한 캐릭터를 수십, 수백 장 그릴 때 |
둘은 이어진다. 편집 모델로 캐릭터 한 장을 여러 각도와 표정으로 불린다. 그중 잘 나온 것을 골라 LoRA를 학습한다. 그 LoRA로 대량 생산한다.
3단계에서 얻은 것
한 캐릭터를 원하는 자세와 구도로 다시 그리는 방법을 여럿 갖게 됐다.
- 자세를 그림으로 지시한다: ControlNet
- 화풍을 그림으로 지시한다: IP-Adapter
- 일부만 고친다: 인페인팅
- 말로 고친다: 편집 모델
남은 것은 하나다. 모델이 모르는 캐릭터, 화풍, 개념을 가르치는 일. 4단계의 주제다.
해 볼 것
- 캐릭터 그림 한 장으로 앉은 자세, 뛰는 자세, 뒷모습을 각각 만들어 본다. 어느 것이 가장 잘 유지되나?
- "옷을 바꾼다"와 "옷을 바꾼다. 얼굴, 머리 모양, 자세는 그대로"를 비교한다.
- 편집 결과를 다시 넣어 다섯 번 연속으로 고친 것과, 원본에서 한 번에 고친 것을 비교한다.
예상 결과
- 앉은 자세와 뛰는 자세는 잘 유지된다. 뒷모습은 옷의 뒤쪽과 머리 뒤를 모델이 지어내야 해서 시도마다 다르다.
- 뒤쪽이 캐릭터가 덜 변한다. 유지할 것을 적어 주면 모델이 그 부분을 참조 그림에서 더 충실히 가져온다.
- 다섯 번 이어 고친 쪽은 얼굴이 원본에서 멀어지고 선이 무뎌진다.
확인 문제
- 편집 모델이 IP-Adapter보다 세부를 잘 유지하는 이유는?
- 여러 번 편집할 때 항상 처음의 원본을 참조로 써야 하는 이유는?
- 한 캐릭터로 그림 300장을 만들어야 한다. 편집 모델과 LoRA 중 무엇이 맞나?
풀이
- 참조 그림의 잠재 전체를 토큰 수천 개로 넣어 어텐션이 직접 보게 하기 때문이다. IP-Adapter는 벡터 몇십 개로 요약한다.
- 편집할 때마다 조금씩 달라지고 화질이 닳는다. 결과를 다시 참조로 쓰면 그 오차가 쌓인다.
- LoRA다. 편집 모델로 학습 데이터를 만들고, LoRA를 학습해 대량 생산한다.