AI가 생성한 이미지에 대해 다시 프롬프트를 입력하여 반복 작업(iterate)을 수행할 때, 당신은 이미지를 파괴하게 됩니다. 모델에게 "인물을 왼쪽으로 옮기고 트럭을 제거해줘"라고 요청하면, 조명, 건물의 기하학적 구조, 눈의 질감 등 장면 전체가 변해버립니다. 원래의 시드(seed)에 의해 고정되지 않은 모든 것이 다시 생성됩니다. 당신이 마음에 들어 했던 결과물(bake)을 잃게 되는 것입니다. 사진작가들은 이런 식으로 작업하지 않습니다. 컨셉 아티스트들도 이런 식으로 작업하지 않습니다. 그들은 레이어(layers)를 유지한 채 그것들을 움직입니다. 저는 그것을 원했고, 그래서 직접 만들었습니다.
한 단락으로 요약한 파이프라인(pipeline): 하나의 Melius 캔버스. 분석용 LLM(analyzer LLM)이 모든 입력 이미지를 읽고 배경(background), 중간 배경(middle ground), 전경(foreground), 그리고 최대 4개의 피사체(subjects)까지 포함된 7개의 후보 레이어에 대한 JSON 청사진(blueprint)을 출력합니다. 7개의 병렬 추출 LLM(extractor LLMs)이 JSON에서 각 레이어의 격리 프롬프트(isolation prompt)를 뽑아냅니다. 7개의 NanoBanana Pro 노드(nodes)가 원래의 위치, 크기, 조명을 유지하면서 크로마 그린(chroma green) 배경 위에서 각 레이어를 재생성합니다. 배경 제거 노드(background-removal nodes)가 초록색을 제거합니다. 마지막 NanoBanana Pro 패스(pass)가 7개의 투명한 레이어를 모두 가져와 통합되고 조명이 일관된 구성을 렌더링합니다. 최종 패스 전에는 어떤 레이어든 이동, 크기 조절, 드롭 또는 교체가 가능합니다.
이것이 중요한 이유: 단일 패스 생성(Single-pass generation)은 이미지를 하나의 나눌 수 없는 개체로 취급합니다. 인페인팅(Inpainting)과 참조 컨디셔닝(reference conditioning)은 부분적인 해결책이지만, 모델은 여전히 가려진 영역(occluded regions)을 추측해야 합니다. 트럭을 옮기면 그 아래의 눈은 아무것도 없는 상태에서 새로 만들어져야 합니다. 해결책은 처음부터 이미지를 통째로 굽지(bake) 않는 것입니다. 원본을 짧은 초안으로 취급하여 쌓여 있는 요소들로 분해한 다음, 요소들이 원하는 대로 배치된 후에 마지막에만 재구성하십시오. 이를 위해서는 실제적인 파이프라인(pipeline)이 필요합니다. 노드 그래프(node graph)는 실제 파이프라인에 적합한 형태입니다. Melius는 이를 담을 수 있는 캔버스를 제공했습니다.
전체 분석 내용: 저는 Scopeful Pro에 전체 워크플로우(workflow)를 작성했습니다. 모든 노드, 두 가지 시스템 프롬프트(분석기 및 범용 추출 템플릿), 제가 처음에 했던 실수들, 그리고 v2에서 변경하고 싶은 사항들을 모두 담았습니다.
만약 프롬프트, 노드별 상세 안내, 그리고 캔버스 자체를 원하신다면, 전체 버전은 여기에서 확인하실 수 있습니다: Melius에서 모든 이미지를 재구성 가능한 레이어로 분해하는 방법. 비디오 데모(14초, 레이어가 폭발하는 장면)는 제 X 피드(@igorgridel)에 있습니다.