simpler24 로고
블로그 목록
프롬프트 엔지니어링 이미지 생성 AI FLUX.2 ComfyUI 카카오 이모티콘

AI는 왜 '암바'를 못 그리는가

2026년 08월 23일 18
AI는 왜 '암바'를 못 그리는가

AI에게 "달리는 햄스터"를 시키면 한 번에 그립니다. 그런데 "암바 거는 햄스터"를 시키면 햄스터가 두 마리로 늘어나면서 몸이 하나로 붙어버립니다.

요즘 카카오 이모티콘을 AI로 만들고 있습니다. 캐릭터 한 마리를 정해두고 표정과 자세만 바꿔서 32장을 뽑는 작업입니다. 주인공은 주짓수 도복을 입은 2.2등신 햄스터고, 제출 규격은 360×360 투명 PNG 32장에 장당 150KB 이하입니다.

32장 중 30장은 문제가 없었습니다. 무너진 건 주짓수 기술 동작 세 개뿐입니다. 같은 모델, 같은 캐릭터, 같은 프롬프트 틀인데 왜 특정 단어에서만 무너질까요?

원인은 모델 성능이 아니었습니다. 프롬프트에 남아 있던 지뢰 두 개 때문이었고 고치는 데는 문장 두 줄이면 됐습니다.

전력질주는 한 번에 되는데, 왜 암바만 안 될까?

잘 나온 30장은 종류를 가리지 않았습니다. 전력질주, 점프, 무릎꿇기, 대자눕기, 체중계 위, 이불 속, 절뚝이기까지 대부분 첫 시도에 나왔습니다.

무너진 셋은 전부 주짓수 기술이었습니다. 암바, 초크, 탭탭탭.

'암바' 프롬프트로 생성된 실패 이미지. 햄스터 두 마리의 몸이 하나로 합쳐져 얼굴이 두 개가 되어 있다

프롬프트에 '암바' 한 단어를 넣고 받은 결과입니다. 얼굴이 두 개고 왼쪽 프레임 밖으로는 주인 없는 팔다리가 뻗어 있습니다.

같은 템플릿, 같은 레퍼런스, 같은 모델이었습니다. 바뀐 건 자세 이름 하나뿐인데 결과물이 이렇게까지 무너지는 게 이해가 안 갔습니다.

처음 세운 가설은 전부 틀렸습니다

순서대로 의심했고, 순서대로 기각됐습니다.

가설 1 — 프롬프트가 너무 짧아서? 설명을 길게 늘여봤습니다. 결과는 같았습니다. 오히려 문장이 길어지니 엉뚱한 소품이 늘었습니다.

가설 2 — 모델이 약해서? 클라우드 모델(Gemini 3.1 Flash Image)과 로컬에 깔아둔 온디바이스 FLUX.2 dev로 각각 돌려봤습니다. 둘 다 똑같은 방식으로 실패했습니다. 이게 신호였습니다. 성격이 다른 두 모델이 같은 형태로 틀린다면, 문제는 모델이 아니라 입력에 있으니까요.

가설 3 — 레퍼런스가 부족해서? 그럴 리가 없었습니다. 완전히 같은 레퍼런스로 표정 여러 종과 일반 포즈 30종이 멀쩡하게 나오고 있었으니까요.

세 가설이 다 무너지고 나서야 실패한 이미지를 확대해서 제대로 들여다봤습니다.

진짜 원인은 두 개가 겹친 것이었습니다

하나, '암바'는 모델에게 좌표가 없는 단어입니다

'전력질주'는 모델의 시각 어휘에 확실하게 매핑됩니다. 학습 데이터에 달리는 이미지가 셀 수 없이 많으니까요. 하지만 '암바'는 주짓수를 하는 사람들끼리 쓰는 도메인 전문용어입니다. 단어 자체는 알지만 그 단어에 대응하는 시각 정보가 희박한 상태입니다.

단어는 아는데 그릴 줄은 모르는 겁니다. 그리고 모델은 모르겠다고 답하지 않습니다. 그럴듯해 보이는 무언가를 어떻게든 만들어냅니다.

둘, 암바는 두 사람이 하는 기술입니다

이게 결정타였습니다. 암바는 상대의 팔을 꺾는 기술이라 반드시 두 명이 필요합니다. 그런데 우리 캐릭터는 한 마리입니다.

모델 입장에서는 "두 명이 필요한 동작을, 한 마리로 그려라"라는 모순된 지시를 받은 셈입니다. 그래서 상대역을 그리려다가 두 몸을 하나로 융합시켜 버렸습니다.

실패 이미지를 확대한 모습. 두 개의 얼굴이 겹친 채 하나의 몸통에 붙어 있다

확대해 보면 명확합니다. 얼굴 두 개가 겹친 채 몸통 하나를 공유하고 있습니다.

원인을 파악한 뒤 코드에 남겨둔 주석이 이겁니다.

# 주짓수 기술은 이름만으로는 모델이 못 짚는다. '암바' 두 글자로는 좌표가 안 나온다.
# 게다가 2인 기술을 1인 캐릭터로 요구하면 두 마리를 한 몸으로 융합시킨다.
# 그래서 동작 자체를 서술하고, 상대는 그리지 않는다고 못박는다.

어떻게 고쳤나 — 이름을 지우고 동작을 적었습니다

해결책은 단순했습니다. 기술 이름을 프롬프트에서 아예 빼고, 눈에 보이는 동작만 서술했습니다.

"탭탭탭": "배를 아래로 엎드린 자세. 한쪽 앞발을 들어 아래로 다급하게 두드린다.
          얼굴이 옆으로 눌려 볼주머니가 퍼졌고 땀방울이 튄다."

"초크":   "두 앞발로 자기 목을 감싸 쥐고 혀를 살짝 내민다. 눈은 X자.
          얼굴이 위로 들리고 볼주머니가 찌그러진다."

'탭탭탭'이라는 단어는 프롬프트 어디에도 없습니다. 대신 엎드림, 앞발을 두드림, 눌린 얼굴, 튀는 땀방울이라는 관찰 가능한 요소만 들어갑니다. 이건 모델이 전부 아는 것들입니다.

여기에 인원수를 못박는 문장을 추가했습니다.

[인원] 캐릭터 한 마리만. 상대역이나 다른 캐릭터를 절대 그리지 않는다.
[구도] 전신이 다 들어가고 얼굴이 가려지지 않게.
[변경 범위] 자세와 표정만. 복장·비율·색은 레퍼런스 그대로.

그릴 것만 지시하는 게 아니라 그리지 말 것도 지시해야 했습니다. 결과는 이렇습니다.

수정 후 생성된 탭탭탭 이미지. 햄스터 한 마리가 엎드려 앞발로 바닥을 두드리고 있다

탭탭탭. 한 마리만 있고 앞발로 바닥을 두드리는 동작과 튀는 땀방울이 그대로 나왔습니다.

수정 후 생성된 초크 이미지. 햄스터가 두 앞발로 자기 목을 감싸 쥐고 눈이 X자가 되어 있다

초크. 자기 목을 스스로 감싸 쥐게 만들어서 상대 없이도 상황이 읽히게 했습니다.

왜 '상대를 그리지 마라'가 핵심이었나

단순히 그림이 깨져서가 아니었습니다. 스펙 파일에 규칙으로 박아둔 문장이 이유를 설명합니다.

주짓수 동작은 전부 캐릭터 한 마리로만 그린다. 상대역을 그리면 두 캐릭터가 한 몸으로 융합되고, 360px로 줄이면 판독도 안 된다. 상대는 보이지 않는 것으로 두고 주인공의 반응만 표현한다.

이모티콘의 최종 크기는 360×360입니다. 작업은 1024로 하지만 사용자가 보는 건 360입니다. 1024에서 "이 정도면 됐네" 싶던 그림도 360으로 줄이면 형태가 뭉개집니다.

수정 전 이미지와 수정 후 이미지를 실제 제출 규격인 360픽셀로 축소해 나란히 비교한 화면

실제 제출 크기로 줄여서 비교한 모습입니다. 오른쪽은 '엎드려서 두드린다'가 한눈에 읽히는데, 왼쪽은 선이 뭉쳐서 무슨 동작인지 파악하는 데 시간이 걸립니다.

화질 문제가 아니라 정보 밀도 문제입니다. 360px 안에 캐릭터 둘이 얽히면 선이 뭉쳐서 실루엣이 안 보입니다. 반면 한 마리가 명확한 동작을 취하면 아주 작아져도 읽힙니다.

같은 실수를 어디서 또 하게 될까?

이모티콘 얘기로 들리지만 AI로 이미지를 뽑는 모든 작업에 그대로 적용됩니다. 저는 규칙 세 개로 정리해뒀습니다.

1. 전문용어를 프롬프트에 그대로 넣지 마세요. 업계 사람끼리 통하는 단어일수록 위험합니다. 그 단어를 모르는 사람에게 설명하듯 보이는 대로 풀어 쓰면 됩니다. 쇼핑몰 배너를 만들 때 "고급스러운 느낌"이라고 적는 것도 정확히 같은 종류의 실수입니다.

2. 안 그릴 것도 지시하세요. 인원수, 배경, 소품처럼 빠지기 쉬운 조건은 명시하지 않으면 모델이 알아서 채웁니다. 그리고 그 선택은 대체로 마음에 들지 않습니다.

3. 최종 출력 크기에서 검수하세요. 작업 해상도로만 보면 다 괜찮아 보입니다. 실제로 쓰일 크기로 줄여놓고 봐야 문제가 드러납니다.

이번 삽질의 교훈은 하나입니다. 모델이 못 그린다고 느껴질 때, 대체로 모델은 시킨 대로 했을 뿐입니다. 두 명이 필요한 동작을 한 명으로 그리라고 한 건 저였으니까요.

저희는 카페24 쇼핑몰 맞춤 개발을 하면서 이런 식의 자동화 실험을 자주 합니다. 실제로 적용했던 개발 사례는 포트폴리오에 정리해두었습니다.

이런 개발이 필요하신가요?

Simpler24가 카페24 맞춤 개발을 도와드립니다.