이번에 회사에서 AI 이미지 생성 및 편집 프롬프팅 + LangGraph 구축 등의 작업을 맡게 되었다. 이미지 프롬프팅은 모델 별로도 가이드가 다르고, 이렇다 할 답이 없는 문제이다보니 오랜 시간과 비용을 들여 최적의 결과를 찾아나가야만 했다.
많은 Trial 동안 얻게 된 노하우들을 정리해보자.
우선 AI 이미지로 무엇을 할 지에 따라 어떤 모델을 사용할지 달라진다. 무작정 인기 많은 모델만 사용할 게 아니라, 요구사항과 상황에 맞는 모델을 잘 선택해야 한다.
나같은 경우에는 아래와 같은 작업들이 필요했다.
모델을 고를 때는 아래와 같은 사항들이 중요하다.
위 사항들을 쉽게 탐색, 비교해보기 위해
아래와 같은 사이트들을 이용해볼 수 있다.
익명의 AI 모델 두 개를 가지고 결과물을 만들어보고, 잘 만들어진 쪽에 투표한다.
어떤 모델이 많은 득표를 했는지 확인할 수 있다.
이를 참고하여 테스트해볼 모델들을 결정 / 탐색해볼 수 있다.
많은 득표 수를 받은 모델들도 확인 가능하다.

강력 추천한다. 모델 탐색하기에 굉장히 편하고, replicate 자체 토큰을 충전하여 여러 모델을 직접 실행하며 비교할 수 있다. 인기 있는 모델들이 많이 준비되어 있으니 여기서 한 번 찾아보고, 마음에 드는 게 없으면 그 때 다른 모델들을 탐색해보면 된다.
모델 탐색

Playground 제공

AI 모델계의 깃허브라고 불리는 허깅페이스다. 모델 탐색하기에도 괜찮은 것 같고(엄청 많다), 모델을 직접 훈련시킬 생각이 있다면 한 번 살펴보면 좋겠다. 물론 Replicate에서도 훈련 기능이 있으니 더 좋아보이는 쪽을 고르면 되겠다.

여러 모델을 테스트해보면서 모델별 느낀 점들을 정리할까 했는데, 어차피 1달만 지나도 새로운 모델들이 쏟아져 나와서 지금 적어놔도 크게 의미가 없을 확률이 높다고 생각한다. 그냥 어떤 모델을, 왜 골랐는지에 대해서만 적겠다.
이미지 생성 프롬프트를 생성(?)하기 위해 Text 모델이 필요했다.
User Input을 받아서, 이를 이미지 프롬프트로 확장시키는 개념을 택했는데,
예를 들어 유저가 아래의 값들을 입력했다면
// Input
{
domain: "커피샵",
color: "오트밀",
mood: "모던 & 미니멀",
}
// Output
"테이블 위에 모던 & 미니멀한 커피 머신이 배치되어있고,
앞에는 컵이 오트밀 색상의 행주 위에 놓여있다. ~~~..."
이에 걸맞는 이미지 프롬프트를 뱉도록 하는 것이다. (물론 다 영어)
요구사항에 걸맞는 프롬프트를 안정적으로 도출하기 위해 아래 Text To Image 모델과 함께 테스트를 하며 few-shot을 확보해두면 좋다.
가장 무난한 gpt-4.1 모델과 gpt-5.0 중 4.1을 골랐다.
비용과 성능은 비슷하지만 5.0은 너무 시간이 오래 걸리는게 문제였다.
더욱 간단한 작업에는 gpt-4.1-nano도 추천한다. nano인만큼 가격이 저렴하고 속도가 빠르다. 나 같은 경우에는 예를 들어 잘못된 input이 들어왔을 때 검증하는 용도 등으로 사용했다.
수많은 후보들을 뚫고 구글의 Imagen4 모델을 선택했다.
유력한 상대는 flux-context-pro 모델이었는데, Imagen4가 더 빨랐고, 퀄리티도 우세했다. (비용은 동일)
사실 요즘 핫한 nano-banana로 다시 테스트해본다면 결과가 어찌될 지 모르겠다
아래는 위 Input을 가지고 생성한 결과이다.
Hero 섹션에 쓰일 이미지로 이 정도면 제법 괜찮아 보인다.


위와 같이 누끼가 따져 있는 특정 Object 이미지를 유저가 갖고 있다고 가정해보자.
이 이미지를 가지고 AI에 부탁하여 단색 혹은 나무 테이블, 부엌 등 다채로운 배경으로 바꾸고 싶다.
이 때 중요한 것은
이런 점들이 있다.
이외에도 요구사항에 맞게 여러 가지를 고려했을 때 가장 적합한 모델은
Photoroom에서 제공하는 API였다.
bria에서 제공하는 api도 쓸만하다.
https://bria.ai/ai-product-shot-editing
욕실 세면대를 요청했을 때 만들어준 이미지.
글자도 깨지지 않고, 배경도 적절하다.

내가 스니커즈를 만들어달라고 했더니 나이키 로고가 떡하니 박힌 이미지를 만들어준다. 이를 방지하기 위해 다음과 같이 추가했다고 하자.
Must not Include visual elements like logo, text on the product.
"코끼리를 생각하지 말라"고 하면 사람은 코끼리를 머릿속에 떠올리게 된다.
AI도 똑같은 것 같다. 로고를 대문짝만하게 박아서 이미지를 만들어줬다.
"~~를 하지마라" 와 같은 프롬프트가 먹힐 때도 있지만, 그게 잘 안될 때는 다음과 같이 해보자.
Product with clean and simple surface, ~~
"로고를 만들지마!" 보다는 "깨끗하고 간결한 표면을 만들어줘." 라고 요청하는 것이 더욱 잘 먹힐 때가 많다. 굉장히 중요한 점이니 명심..
이미지의 배경을 천 질감으로 바꾸고 싶다. 간단히 입력해본다.
Background is a plain fabric surface in ivory color...

천이 물론 잘 생성되긴 했는데, 뭔가 좀 아쉽다. 미사여구를 여럿 붙여봐도 보통 결과는 비슷하다. 단어에 따른 이미지 훈련 셋이 정해져 있어 결과가 크게 달라지지 않는다.
이럴 때 "fabric" 이라는 단어를 유사 단어로 대체해보는 시도가 도움이 될 때가
많다.
예를 들어 "천"을 "바삭한 침대 시트"로 바꾸게 되면 결과는 다음과 같이 달라진다.

미묘한 차이로 보일 수도 있지만 이 차이를 조금씩 줄여나가는게 이미지 프롬프팅의 핵심이다. 원하는 느낌이 나지 않을 때는 단어 대체를 통해 새로운 결과를 만들어보자.
Imagen 홈페이지를 들어가보면 예시 이미지와 함께 프롬프트가 나열되어 있다.
프롬프트들이 어떤 체로 작성되어 있는지 확인하고, GPT에게 예시로 주어 이런 식으로 적어 라는 느낌을 학습시키는 것도 퀄리티를 높이는 데 도움이 된다.

Photoroom API 같은 경우에는 좋은 프롬프트를 작성하는 팁 등이 꼭꼭 숨겨져 있다.
이미지 생성에서 중요한 점은 일관성을 유지하는 것인데, 훈련을 시킬 수 있다면 좋겠지만 그렇지 못한 경우 다음과 같은 방법들을 고려해볼 수 있다.
seed, guidance_image 등의 파라미터 존재 여부 확인Replicate에서 테스트를 하다보면 여러 모델을 한꺼번에 비교하거나 여러 이미지를 넣어 동시에 결과를 보고 싶을 때가 있다. 그럴 때는 그냥 AI에게 부탁해서 나만의 테스트 Playground를 구성해보자. 정말 많은 테스트를 해보면서 최적의 파라미터를 찾아나가는 과정이기 때문에 쾌적한 테스트 환경은 중요하다.
아래는 Cursor로 구성한 테스트 환경이다. 이거 쓰고 DX 800% 향상했다.

프롬프트를 잘 작성했다면 이제 LangGraph를 이용하여 코드를 작성할 차례다.
너무 길어져서 이건 다음 편에. . .