Post

[2026-03-09] 프롬프트 깎는 노인은 그만. 텍스트 대신 '실행 가능한 코드'로 이미지를 렌더링하는 CoCo 프레임워크 해부

[2026-03-09] 프롬프트 깎는 노인은 그만. 텍스트 대신 '실행 가능한 코드'로 이미지를 렌더링하는 CoCo 프레임워크 해부

Link: arXiv:2603.08652 Github: micky-li-hd/CoCo Date: March 2026


어제도 사내 마케팅 배너 이미지를 생성하느라 DALL-E 3와 미드저니 앞에서 프롬프트를 30번 넘게 뜯어고쳤습니다. “오른쪽 아래에 빨간색 ‘구매하기’ 버튼을 넣고, 그 위에 ‘50% 할인’ 텍스트를 정확한 스펠링으로 적어줘.” 아무리 구체적으로 지시해도 결과물은 처참하죠. 버튼은 엉뚱한 곳에 가 있고, 텍스트는 외계어로 적혀 나옵니다.

최근 Unified Multimodal Models(UMMs)가 발전하면서 Chain-of-Thought(CoT) 추론을 이미지 생성에 도입하려는 시도가 많았습니다. 하지만 대부분의 기존 CoT 방식은 자연어로 추론합니다. 모델 혼자서 “음, 강아지를 왼쪽에 그리고, 고양이를 오른쪽에 그려야지”라고 속삭인 뒤 픽셀을 찍어내는 식이죠. 문제는 자연어가 공간적 레이아웃이나 구조적 시각 요소, 빽빽한 텍스트 배치 등 ‘정밀함’이 요구되는 작업에서는 한없이 추상적이고 모호하다는 겁니다.

오늘 리뷰할 CoCo (Code-as-CoT)는 이 씬의 고질적인 문제를 아주 개발자스러운, 어찌 보면 무식하고도 확실한 방법으로 해결합니다. 자연어 프롬프트로 픽셀을 곧바로 추측하는 대신, 직접 코드를 짜서 레이아웃 뼈대를 렌더링해버리는 거죠.

한 줄 요약: 자연어 프롬프트의 모호함을 버리고, 모델이 직접 레이아웃 코드를 작성 및 실행(Sandbox)해 얻은 ‘결정론적 초안 이미지’를 바탕으로 최종 결과물을 뽑아내는 프레임워크. 공간 제어력은 미쳤지만 샌드박스 인프라 구축은 당신 몫입니다.


⚙️ 텍스트 대신 코드를 컴파일한다고? CoCo의 내부 파이프라인 뜯어보기

기존 Diffusion 모델들의 생성 방식이 ‘상상해서 그리는 천재 화가’라면, CoCo는 ‘도면을 먼저 치는 건축가’에 가깝습니다. 자연어 프롬프트를 픽셀로 직결시키는 대신, 중간에 실행 가능한 코드(Executable Code)라는 명시적이고 검증 가능한 레이어 하나를 억지로 끼워 넣었습니다.

파이프라인을 쪼개보면 이렇습니다.

🔹 Step 1: Code Generation (도면 설계) 사용자가 “왼쪽엔 노트북이 있고, 화면에는 ‘Hello World’가 적혀 있으며, 오른쪽엔 커피잔이 있는 책상”이라는 프롬프트를 입력합니다. CoCo는 여기서 이미지를 그리는 게 아니라, 이 씬의 구조적 레이아웃을 명시하는 코드를 생성합니다. (HTML/CSS, 혹은 Python의 PIL/Canvas 렌더링 스크립트 형태에 가깝습니다). 코드에는 각 객체의 (X, Y) 좌표, 크기, Z-index, 텍스트 내용까지 정확한 수학적 파라미터로 떨어집니다.

🔹 Step 2: Sandbox Execution & Draft Rendering (컴파일 및 렌더링) 생성된 코드를 격리된 샌드박스 환경에서 실제로 실행합니다. 환각(Hallucination)이 개입할 여지가 없는 순수 연산 과정이죠. 실행 결과로 얻어지는 건 와이어프레임이나 바운딩 박스 덩어리 같은 ‘결정론적 초안 이미지(Deterministic Draft Image)’입니다. 여기서 중요한 건, 이 초안 이미지가 모델에게 완벽한 ‘공간적 앵커(Spatial Anchor)’ 역할을 한다는 점입니다.

🔹 Step 3: Corrective Visual Refinement (최종 렌더링) 이제 뼈대는 완벽히 잡혔습니다. CoCo는 앞서 만든 초안 이미지와 원본 텍스트 프롬프트를 결합해, 미세한 이미지 에디팅 및 텍스처링을 수행합니다. 이때 쓰이는 것이 바로 그들이 구축한 CoCo-10K 데이터셋입니다. 1만 쌍의 (구조적 초안 이미지 - 고해상도 최종 이미지)로 학습된 모델은, 뼈대에 살을 붙이고 질감을 입히는 과정에서 레이아웃을 절대 무너뜨리지 않습니다.

CoCo Pipeline Concept 자연어 프롬프트가 코드로 변환되어 샌드박스에서 초안 렌더링을 거친 후, 최종 고해상도 이미지로 정제되는 과정. 블랙박스였던 공간 추론이 ‘코드’라는 명시적 형태로 튀어나온 것이 핵심입니다.


⚔️ 기존 SOTA (Direct Generation) vs Code-as-CoT 패러다임

논문에서는 StructT2IBench에서 +68.83%, OneIG-Bench에서 +54.8%라는 폭발적인 성능 향상을 자랑합니다. 특히 구조적 벤치마크(StructT2IBench)에서 68%가 올랐다는 건, 기존 모델들이 공간 지각 능력 면에서 얼마나 멍청했는지를 역으로 증명하죠.

비교 항목기존 모델 (DALL-E 3, SDXL 등)CoCo (Code-as-CoT)
공간 제어 (Spatial Control)프롬프트 엔지니어링에 의존 (운빨)결정론적 (코드로 좌표 강제 지정)
텍스트 렌더링 정확도단어가 길어지면 외계어 생성 빈번코드 레벨에서 String으로 박아버림 (거의 완벽)
추론 속도 (Latency)단일 패스로 빠름 (수백 ms ~ 수 초)느림 (코드 생성 + 샌드박스 실행 + 렌더링의 3-Step)
인프라 복잡도GPU만 있으면 됨GPU + 코드 실행용 안전한 Sandbox 컨테이너 필수
Developer Experience (DX)프롬프트 깎느라 밤샘레이아웃 에러 시 생성된 코드를 직접 디버깅/수정 가능 (미친 장점)

가장 주목해야 할 점은 DX(개발자 경험)의 패러다임 시프트입니다. 기존에는 결과물이 마음에 안 들면 프롬프트에 “a little bit more to the left” 같은 소리를 추가하며 기도를 올려야 했습니다. 하지만 CoCo에서는 중간 산출물인 코드를 직접 수정하면 됩니다. x=150x=200으로 바꾸고 다시 돌리면 끝이라는 얘기죠. 시각적 생성 작업이 마침내 엔지니어링의 영역으로 들어온 겁니다.


🚀 내일 당장 프로덕션에 쓸 수 있을까? (Use Cases)

이 기술은 단순한 ‘예쁜 그림 생성기’가 아닙니다. 철저하게 B2B 및 프로덕션 환경의 페인포인트를 저격합니다.

1. 이커머스 맞춤형 광고 배너 자동 생성 파이프라인 “여름 할인 배너 만들어줘”라는 요청에 예쁜 쓰레기를 던져주는 기존 모델과 달리, CoCo는 상품 이미지(우측 60%), 카피라이트 텍스트(좌측 40%, 빨간색 굵은 폰트), 회사 로고(우측 하단)의 위치를 코드로 픽스해놓고 배리에이션을 칠 수 있습니다. 디자인 팀의 가이드라인을 ‘코드’로 강제할 수 있다는 건 엄청난 무기입니다.

2. 프론트엔드/UI UX 와이어프레임 to Hi-Fi 프로토타이핑 사용자가 대충 그린 와이어프레임이나 Figma의 컴포넌트 트리를 바로 ‘초안 코드’로 주입할 수 있습니다. LLM에게 코드를 짜게 하는 Step 1을 건너뛰고, 우리가 직접 짠 코드를 Step 2에 밀어 넣으면, 완벽한 픽셀 매칭을 유지하면서 테마(ex: 사이버펑크 스타일, 미니멀리즘 스타일)만 입힌 고퀄리티 UI 시안을 수백 장 뽑아낼 수 있습니다.


🧐 Tech Lead’s Verdict

👍 Pros:

  • 완벽에 가까운 공간적 통제력: 더 이상 객체 위치와 텍스트 스펠링 때문에 스트레스받지 않아도 됩니다.
  • 디버깅 가능한 생성형 AI: 결과물이 왜 이렇게 나왔는지 ‘코드’를 통해 역추적하고 수정할 수 있는 구조는 혁명적입니다.

👎 Cons:

  • 끔찍한 Latency & 인프라 오버헤드: AI가 짠 코드를 실시간으로 실행해야 합니다. 프로덕션 환경에서는 샌드박스의 Cold Start 문제나 악의적인 코드 주입(Prompt Injection을 통한 RCE 공격 등)에 대한 보안 이슈를 심각하게 고려해야 합니다. 이걸 API로 서비스하려면 백엔드 엔지니어들 머리가 꽤나 아플 겁니다.
  • 복잡한 장면에서의 한계: 너무 추상적인 개념이나 예술적 창의성이 필요한 이미지에서는 굳이 ‘코드’라는 중간 단계가 병목이 될 수 있습니다.

🔥 Final Verdict: “Repo를 클론해서 파이프라인만 훔치고, 프로덕션 도입은 v2를 기다려라.”

아이디어 자체는 미쳤습니다. 생성형 AI의 가장 큰 단점인 ‘통제 불가능성’을 ‘코드 컴파일’이라는 고전적인 방식으로 제압했으니까요. 하지만 실시간 서비스에 당장 붙이기에는 샌드박스 실행이라는 아키텍처적 부담이 너무 큽니다. 당장은 CoCo-10K 데이터셋의 구조를 분석해보고, 사내 백오피스용 비동기 이미지 생성 파이프라인에 PoC(Proof of Concept) 정도로만 도입해 보는 것을 추천합니다.

Original Paper Link

This post is licensed under CC BY 4.0 by the author.