DAY 04작업 4일째

선에 명암만 입히던 바로 완성을 고쳤다

해석 없이 바로 생성하는 모드가 대충 그린 윤곽을 그대로 칠하던 문제를, 요청 순서와 CFG, 그리고 구도만 잡고 콘티를 놓아주는 두 단계 생성으로 풀었다.

「바로 완성하기」는 콘티 해석 단계를 건너뛰고 콘티 이미지와 장면 설명을 곧바로 생성에 넘기는 모드다. 해석을 기다리지 않아서 640px, 12단계 기준으로 5초 남짓이면 그림이 나온다. 그런데 머리와 어깨를 선 몇 개로 그리고 '안개 낀 낮, 남자 캐릭터'라고 적자, 얼굴 없는 뒷모습이 나오거나 콘티 선이 그대로 남은 채 명암만 입혀졌다. 모델이 콘티를 앞으로 완성할 계획이 아니라 이미 완성된 모습으로 받아들인 셈이었다.

요청 순서와 CFG를 함께 바꿨다

같은 콘티와 같은 시드로 지시문과 설정을 하나씩 바꿔 가며 원인을 좁혔다.

바꾼 것결과
"선을 그대로 지켜도 된다"는 허용을 빼고 지시문 다시 쓰기여전히 콘티 선 위에 명암만 입혔다
콘티를 픽셀째 넘기는 참조를 빼고 이미지 이해만 남기기실패
"완성된 그림으로 다시 그려라"라는 짧은 요청을 참조 사용 지시보다 앞에 두기사람 형체는 생겼지만 거친 윤곽선이 남았다
그 순서에 CFG 3얼굴과 옷이 있는 완성 일러스트
더 긴 지시문에 CFG 3실패
같은 콘티와 시드로 바꿔 본 결과
고치기 전에는 머리 동그라미를 후드처럼 칠한 뒷모습이 나왔다. 요청을 앞에 두고 CFG를 3으로 올리자 완성된 인물이 됐다

그때까지 생성은 CFG 1이었다. CFG 1에서는 장면 요청을 분명하게 적어도 콘티의 거친 윤곽이 결과에 남았다. 그렇다고 CFG만 올리면 되는 것도 아니었다. 긴 지시문에서는 CFG 3도 실패했다. 그래서 완성된 그림이라는 요청과 그림체를 맨 앞에 짧게 두고, 그 뒤에 콘티는 구도와 배치, 동작을 잡는 데만 쓰라는 지시를 붙였다. 사용자의 장면 설명은 그 사이에 들어간다.

if sketch and not interpreted_sketch:
    graph['11']['inputs']['string_a'] = 'Redraw <image1> into a fully finished image. ' + STYLES[style]
    # ... 그 뒤에 "콘티는 구도만 안내하는 미완성 계획이다"라는 지시를 붙인다
    graph['7']['inputs']['cfg'] = 3.0

특정 대상을 알아보는 분류기나 사람 전용 틀은 넣지 않았다. 도형으로만 그린 병 콘티에 제품 사진을 요청하면 유리와 금속 뚜껑이 있는 향수병이 나왔고, 단순한 선화를 원한다고 적으면 단순한 선화를 지켰다. 해석 모드와 빈 캔버스 생성은 이전 설정을 그대로 쓴다.

도형 콘티와 제품 사진 결과
사각형 두 개로 그린 병이 유리병 제품 사진으로 완성됐다

구도를 잡은 뒤에는 콘티를 놓아준다

요청 순서를 바꾼 뒤에도 남은 문제가 있었다. 콘티를 픽셀째 넘기는 참조가 생성의 처음부터 끝까지 붙어 있어서, 선이 많은 콘티일수록 얼굴 세부나 옷 구조, 윤곽까지 선 모양에 묶였다. 콘티에서 가져와야 하는 건 배치와 동작인데, 생김새까지 따라가고 있었다.

생성 단계를 둘로 나눴다. 전체 단계의 앞 6분의 1 동안만 콘티 픽셀을 참조해 배치를 잡는다. 나머지 단계는 잡음이 남은 그 상태를 이어받고, 콘티는 이미지 이해 쪽으로만 보면서 새로 완성한다. 절반 지점에서 놓으면 결과가 거의 달라지지 않았고, 6분의 1에서 놓으면 배치와 동작은 유지하면서 얼굴과 옷, 윤곽이 새로 그려졌다. 품질별로 초안은 1+5단계, 미리보기는 2+10단계, 완성은 4+21단계로 나뉜다. 단계 수 합계와 결과 그림 한 장은 그대로다.

layout_steps = max(1, round(total / 6))
graph['31'] = node('KSamplerAdvanced', {**common, 'positive': original['positive'],
    'add_noise': 'enable', 'start_at_step': 0, 'end_at_step': layout_steps,
    'return_with_leftover_noise': 'enable'}, '콘티 구도 잡기')
graph['7'] = node('KSamplerAdvanced', {**common, 'positive': ['30', 0],  # 픽셀 참조를 뺀 조건
    'latent_image': ['31', 0], 'add_noise': 'disable',
    'start_at_step': layout_steps, 'end_at_step': total}, '구도를 이어받아 새로 완성')

실제 작업실 서버로 확인했을 때 640px, 12단계에서 첫 중간 프레임이 3.1초, 완성이 8.9초에 나왔다. 모델이 이미 올라와 있던 상태에서 한 번 잰 값이다.

감수한 것

시드 하나로 본 관찰이라 모든 콘티에서 구도가 정확히 지켜진다고 말할 수는 없다. 콘티를 일찍 놓아주면 그리지 않은 모자를 씌우는 것처럼 없던 것을 더하기도 했다. 이 모드는 해석을 거치지 않으니, 각진 선이 초승달인지 십자가 별인지 같은 뜻은 읽지 못한다. 그런 콘티는 「의도를 해석해 완성하기」가 맡는다.

기록 #04 · 2026.09.27