나는 AI가 그림 그리는 방식이 항상 어딘가 어색하다고 느꼈다. 결과는 멋진데, "그린다"고 부르기엔 뭔가 과정이 빠져 있는 느낌이었다.
문제 1 — Diffusion은 그리지 않는다, 토해낸다
Stable Diffusion 같은 이미지 생성 모델은 노이즈에서 픽셀로 한 번에 이동한다. 한 번의 forward pass로 결과가 결정되고, 그게 끝이다.
이 과정에서 모델은 자기가 만들고 있는 그림을 중간에 볼 수 없다. 한 획 긋고 멈춰서 "어 이게 좀 이상한데" 하고 다시 손볼 기회가 없다. 결과를 한 방에 던지고 끝낸다.
문제 2 — 사람이 그림 그리는 방식과 너무 다르다
사람이 그림을 그릴 때를 떠올려 보면, 한 획 긋고, 결과를 보고, 다음 획을 결정한다. 마음에 안 들면 지우고 다시 긋는다. 그리기는 본질적으로 반복적이고 관찰 기반의 행위다.
그래서 Diffusion 결과물이 아무리 정교해도, 그게 "그림을 그렸다"기보다는 "이미지를 생성했다"에 더 가깝게 느껴졌다. 다른 방식이 있을 것 같았다.
해결 — LLM이 자기 캔버스를 보면서 그리게 하기
요즘 LLM에는 비전이 있고, 툴 콜링도 된다. 이 둘을 조합하면 모델이 자기 작품을 보면서 그리는 루프를 만들 수 있을 것 같았다. AIDRAW는 이 가설에서 시작했다.
핵심은 모델한테 그림을 한 번에 시키지 않는 것이다. 한 번에 한 묶음의 스트로크만 시키고, 결과를 다시 보여주고, 다음 스트로크를 결정하게 한다. 사람이 그리는 방식 그대로 모델에게 옮긴 셈이다.
동작 흐름
- 모델에게
add_strokes(x1, y1, x2, y2, curve, color, size)툴을 노출한다 - 모델이 스트로크 시퀀스를 출력한다
- 512×512 캔버스에 렌더링하고 스크린샷을 찍는다
- 그 스크린샷을 모델에게 다시 입력한다
- 위 과정을 다섯 번 반복한다
매 턴마다 모델은 직전 상태의 캔버스를 본 뒤, 다음 스트로크를 결정한다. 자기가 그린 걸 보고, 부족한 부분을 채워 넣는 것이다.
만들어보고 알게 된 것
솔직히 결과물의 품질은 아직 높지 않다. Claude가 그린 고양이는 고양이로 알아보기 어렵고, GPT의 풍경화는 추상에 가깝다. 처음 결과를 봤을 땐 좀 허탈했다.
근데 메커니즘 자체에는 의미가 있다고 본다. Diffusion과 달리 이 방식은 모델의 시각적 추론 능력에 선형적으로 비례한다. 더 잘 보고 더 정확하게 사고하는 모델이 등장하면, 같은 코드로 자동으로 결과물이 좋아진다. 지금 어설픈 건 모델의 한계지, 방식 자체의 한계는 아니라고 본다.
말하자면 1년 후에 GPT-5나 Claude 5가 나오면 코드 한 줄 안 바꿔도 더 잘 그리는 게 맞을 거다. 그 가설을 확인하려고 일단 매일 결과를 쌓고 있다.
지금은
Claude, GPT, Gemini가 매일 동일한 주제로 그림을 그린다. 방문자가 결과물을 보고 투표한다.
가끔 GPT가 이긴다. 의외로.
