부모님의 20대, GPT로 다시 그리다 — 카톡 사진 4장이 '없던 과거'를 재생했다
부모님의 20대, GPT로 다시 그리다
"있었을 법한 것"이 넘쳐나는 시대, 인간은 무엇을 할 것인가
우리는 기이한 시대를 살고 있다. 알고리즘이 내 어머니가 40년 전 어느 봄날 입었음 직한 셔츠를 스스로 상상해내고, 한 번도 찍힌 적 없는 "없던 과거"를 3분 만에 15장씩 만들어낸다. 사진은 더 이상 '있었던 것의 증거'가 아니라 '있었을 법한 것의 재현'이 되어간다.
2026년 4월, OpenAI의 신형 이미지 모델 gpt-image-2(내부 코드명 "Duct Tape", 4월 21일 공개)로 60대 어머니의 20대 얼굴을 처음 보았다. 카톡 앨범 속 평범한 사진 4~6장만 넣었을 뿐인데, 고전 유화에서 1995년 K-드라마까지, 서로 다른 8개 시대와 매체를 입은 어머니가 한꺼번에 화면에 들어왔다. 어머니 여섯 분, 아버지 일곱 분 — 없었던 과거가 모니터 위에 나란히 놓여 있었다.
이상한 기분이었다. 기술에 놀란 게 먼저가 아니었다. "이런 것까지 되는 시대에 나는 무엇을 할 것인가" 하는 질문이 먼저였다.
이 글은 그 실험의 하루, 그리고 그 하루가 남긴 한 가지 질문의 기록이다.
TL;DR — 결과부터
왼쪽(BEFORE)은 실제 카톡 사진 — 프라이버시를 위해 블러 처리한 레퍼런스다. 오른쪽(AFTER)은 AI가 "20대 초반의 당신이라면 이랬을 것 같다"며 그려낸 1995 K-드라마 스타일 초상. 둘은 "닮은 사람"이 아니라 같은 뼈대의 다른 연령대·다른 시대다.
왜 나노바나나2에서 gpt-image-2로 갈아엎었나
X·레딧에 gpt-image-2 실험 포스트들이 쏟아지자마자 바로 교체했다. 며칠 지켜볼 이유가 없었다. 다국어 타이포, 10+ 요소 인포그래픽, 캐릭터 일관성, Codex CLI 한 줄 호출 — 공개된 샘플만 봐도 NB2와는 결이 다른 물건이었다.
그러나 더 결정적인 건 자동화 관점이었다.
Anthropic Cowork나 Claude Code 같은 에이전트 환경에서 이미지 생성을 파이프라인 안으로 끌어들이려고 하면, 나노바나나2 쪽은 늘 무언가를 우회해야 했다.
- 공식 API를 쓰려면 무료 크레딧을 여러 계정으로 돌려가며 사용하거나
- Google AI Studio(FLOW)를 쓰려면 Chrome MCP로 브라우저를 조종하거나
- 혹은 Playwright MCP로 셀렉터 단위 자동화를 붙이거나
"파이프라인이 깨지지 않고 돌아가는 것" 자체가 매 세션마다 과제였다. 반면 gpt-image-2는 Codex CLI의 OAuth 로그인 한 번이면 끝난다. 터미널에서 $imagegen 한 줄, -i 플래그로 레퍼런스 첨부, Python ProcessPoolExecutor로 병렬 — 그게 전부다. API 키 관리도, 브라우저 자동화도, 계정 돌려쓰기도 없다. 자동화 편의성 축에서는 비교가 의미 없을 정도로 압도적이다.
딥리서치와 커뮤니티 사용 가이드를 살펴본 결과, 나노바나나2의 성능 한계 때문에 저 혼자 만들어 두었던 사용 가이드들도 더 이상 적용할 필요가 없어졌다.
NB2 시절 제약 5종 → 현재 상태 (딥리서치 근거 정리)
새 프롬프트 골격 (5블록): Asset type / Composition / Constraints / Text (verbatim) / Reference labels. Codex 공식 imagegen SKILL이 권장하는 표준이다.
Codex CLI OAuth ≠ API 표면: CLI에는 quality, partial_images, output_compression 같은 파라미터가 노출되지 않고 자연어 대체어도 공식 보장이 없다. 대신 -i 멀티 참조 + 역할 라벨링(reference / edit target / supporting input)이 API 배열 파라미터 대체로 권장된다. 개발자 DX 관점에서 NB2 기반 Python + 벤더 SDK 대비 압도적 편의성이고, 결과 품질은 이 글의 15장이 증언한다.
3분짜리 파이프라인
단계는 셋뿐이다.
- 레퍼런스 수집 — 엄마마 4장, 아빠 6장. 얼굴 각도·표정이 다양할수록 좋다. 카톡 스크롤만 내려도 나온다.
- Codex CLI
$imagegen호출 — PythonProcessPoolExecutor로 10 워커 병렬. 각 스타일 프롬프트 + 레퍼런스 이미지를 한꺼번에 첨부. - 8개 아트 스타일 배치 생성 — 1985 필름 / 고전 유화 / 수채화 / Studio Ghibli / 1995 K-드라마 / 한국 수묵담채 / 80s 빈티지 패션 / Warhol 팝아트.
참고: 이 실험 자체는 "클로드에게 지식만 주고" 돌린 결과
한 가지 덧붙이자면, 이번 실험은 제가 터미널에 명령어를 타이핑한 게 아닙니다. 제가 한 건 다음 세 가지 지식을 Claude Code에게 알려준 것뿐입니다.
- Codex CLI에서
$imagegen매직 커맨드로 이미지 생성이 가능하다 - 레퍼런스 이미지는
-i플래그로 여러 장 첨부할 수 있다 - Python
ProcessPoolExecutor로 병렬 워커 10개를 띄워 배치 돌릴 수 있다
이 세 가지를 전달하고 "카톡 사진 던질 테니 부모님 20대를 다양한 아트 스타일로 만들어줘"라고만 요청했습니다. 8개 스타일 선정, identity invariants 프롬프트 설계, 병렬 스크립트 작성, 결과물 정리까지 전부 클로드가 판단해서 실행했습니다. Codex가 실제로 받은 호출은 다음과 같은 형태였습니다.
codex exec --dangerously-bypass-approvals-and-sandbox \
--skip-git-repo-check -m gpt-5.4 \
-i ref1.jpg -i ref2.jpg -i ref3.jpg -i ref4.jpg \
- <<< "\$imagegen
Asset: 1995 Korean romance drama promotional poster portrait, early 20s.
Subject identity (derived from Images 1-4, age-reversed to early 20s):
아몬드 눈매 / 부드러운 얼굴형 / 낮은 콧대 / 따뜻한 미소.
Facial bone structure must match references exactly.
Only apparent age changes to early 20s.
Composition: vertical portrait, shallow DoF, teal-amber color grade.
Constraints: no dark background, no cyberpunk.
Text: (없음)
Reference labels: Images 1-4 = subject identity reference."
제가 실제로 한 일은 사진 4~6장 던지기와 "이건 좋다 / 저건 다시" 피드백뿐이었습니다. Codex CLI + Claude Code 콤보의 실전 감각은 이 수준입니다. (그리고 이게 "압도적 편의성"의 실체이기도 합니다.)
출발점 — 이 사진들이었다
어머님 4장. 거실의 강아지와 찍은 포즈, 부엌에서 식사하시는 포즈, 장 보고 오신 길, 소파에 앉으신 포즈. 지극히 일상적인 사진들이다.
아빠는 6장. 역시 특별할 것 없는 일상.
이게 출발점이다. 얼굴 뼈대(눈매·코·턱선·이마)만 식별 가능하게 전달하면, gpt-image-2는 그 identity invariants를 유지하면서 피부·머리·의상·시대 분위기만 "20대 초반"으로 되돌린다.
어머님 20대 — 6개 아트 스타일
위 왼쪽부터: 고전 유화(Vermeer chiaroscuro), 부드러운 수채화(체리 블로섬), Studio Ghibli(창가의 소녀), 1995 K-드라마(버건디 터틀넥), 한국 수묵담채(백한복 + 낙관), 1980s Vogue 에디토리얼(와이드숄더 더스티로즈).
엄마가 이걸 보시더니 은근 좋아하시더라.
아빠 20대 — 7개 아트 스타일
1985 Kodak Portra 필름(캠퍼스), 고전 유화(와인 크라바트), 수채화(가을 나뭇잎), Studio Ghibli(동아서점 창가), 1995 K-드라마(차콜 코트), 한국 수묵담채(젊은 선비 + 갓), 80s Antonio Lopez 남성 에디토리얼.
아빠는 말 없이 폰에 저장만 하셨다. 이런 건 말 안 하시는 게 좋아하시는 신호다.
나노바나나2에서 갈아탈 요인이 되나?
100%다. 큰 그림이 보이기 시작한다. 시각 영역에서 OpenAI는 이미지 생성으로, Anthropic은 Claude 디자인(Artifacts·canvas)으로 각자의 "시각 승부처"를 잡아가는 흐름이 올해 들어 뚜렷해졌다. 같은 시각 레이어를 다른 축으로 공략하는, 꽤 흥미로운 양대 구도다.
그리고 이번 gpt-image-2(Duct Tape)의 성능은, 솔직히 말해 충격에 가깝다. 정적 이미지 생성에서 NB2를 의미 있게 앞질렀다는 걸 한 세션 돌려보고 바로 알았다. "새 모델이 나왔다" 정도가 아니라, "이전 파이프라인을 지금 당장 갈아엎어야 한다"는 쪽의 차이다.
갈아탈 이유로는 충분하다.
그래서 당신은 이런 고성능 AI 시대에 무엇을 할 것인가
기술을 소개하는 글처럼 시작했지만, 결국 이 글이 닿는 자리는 이 질문이다.
AI가 만들어낸 "없던 과거"의 부모님을 한참 바라보는 동안, 머릿속에서 사라지지 않은 질문이 있었다. 기계가 예술을 만들고, 알고리즘이 과거를 상상하는 시대에, 인간은 무엇을 하는가.
여러 담론이 저마다의 답을 내놓았지만, 최근 AI 시대에 인간에게 요구되는 역량은 대략 네 가지로 수렴한다.
- 의지(Will) — 무엇을 만들고 싶은가, 무엇을 끝까지 가져가고 싶은가
- 판단(Judgment) — 무엇이 좋은지·무엇이 맞는지 분별하는 감각
- 취향(Taste) — 수많은 가능성 중에서 "이것"을 골라내는 선택력
- 호기심(Curiosity) — 아직 누구도 묻지 않은 좋은 질문을 품는 능력
네 가지 모두, 기계가 대신해 줄 수 없는 "내가 누구인가"의 문제다. AI는 당신이 던진 질문의 무게만큼만 답한다. 당신의 취향만큼만 좋은 것을 뽑아낸다. 당신의 판단이 가리키는 곳까지만 데려다 준다. 당신이 의지를 접는 순간, AI도 같이 멈춘다.
한국처럼 "남이 미리 깔아 놓은 성공 가도"를 정답이라 배운 문화에서, 이 네 가지를 스스로 세우는 일은 쉽지 않다. 학창시절 내내 남의 취향과 남의 판단을 맞추는 훈련을 받고 어른이 된 사람에게, 갑자기 "당신의 취향을 보여 달라", "당신의 질문을 던져 달라"는 요구가 돌아온다. 낯설고 어려운 일이다.
그러나 지금부터라도 조금씩 시작해야 한다. 이 질문을 다음 세대가 아니라 내 세대가 먼저 받기로 한 것은 운이 좋은 일이고, 동시에 피할 수 없는 숙제다.
저의 답은 — "부모님의 없던 20대를 되살려 드리기" 같은 사소하고 사적인 실험들 안에 있다. 남들이 안 해 본 방식으로, 남이 대신 해 줄 수 없는 이야기를, 내가 만들어 낼 수 있는 도구로. 거기서 제 취향과 판단과 호기심이 조금씩 모양을 갖춰 간다.
당신의 답은 무엇인가.
그리고 — 기존 사진 시장이 흔들리겠다
이번 실험은 원래 감성 주제로 시작한 건데, 결과를 돌려보고 나니 관심 방향이 한 번 크게 바뀌었습니다.
기존에 NB2로 돌리던 이미지 모듈을 Duct Tape으로 교체하면서 실험 삼아 해본 작업이었는데, 나노바나나2 대비 압도적 성능이라는 걸 이번 결과로 확실히 체감했습니다. 그리고 문득 드는 생각 — 기존 사진 시장도 곧 재편되겠다는 감각.
카톡 속 평범한 스냅 4~6장으로 "없던 20대 앨범"이 이 정도 품질로 나오는 거라면:
- 프로필/가족 사진 — 홈스튜디오 예약이 "필수"에서 "옵션"으로
- 이력서/포트폴리오 헤드샷 — AI 스타일링 + 최소 리터칭 하이브리드
- 웨딩 사진까지 쌉가능 — 드레스·한복·턱시도 스타일 전환이 초 단위
이 정도 시장은 2~3년 안에 가격 구조와 작업 방식이 한 번 크게 흔들릴 겁니다. 스튜디오 촬영이 "꼭 필요한가"를 되묻게 될 거고, "AI 스타일링 + 전문 리터칭"이 새 카테고리로 자리 잡을 가능성이 큽니다.
저는 웨딩 쪽을 좀 더 들여다볼 계획입니다. 다음 글은 아마 이 방향일 겁니다.
(그리고 부모님께서는 "AI가 이런 것도 되냐"고 한참 신기해 하시다가 담담히 저장만 하셨습니다. 감성은 감성대로, 시장은 시장대로.)
스택 요약 (개발자용 부록)
- Engine:
gpt-image-2via Codex CLI OAuth - Entry:
from image_gen import generate_image(OSMU 공용 래퍼, 내부적으로codex exec서브프로세스 호출) - Parallel:
ProcessPoolExecutor(max_workers=10), top-level worker 함수(Windows spawn 호환) - Race condition workaround:
~/.codex/sessions/.../rollout-*.jsonl의 user prompt에서 스타일 고유 MARKER 추출 → session UUID ↔ 파일명 매칭. 공유 디렉토리~/.codex/generated_images/충돌 회피 - NB2 → GPT 이미지 이전 체크리스트:
- 복잡도 ≤6 요소 가드 제거
input_fidelity파라미터 제거 (자동 처리)must_include보호 정책 민감어용으로만 축소- base+overlay 분리 선택적 (장문·상표·법적 문구만 유지)
- 프롬프트 5블록 골격으로 전환 (Asset type / Composition / Constraints / Text / Reference labels)
- 근거 리서치: 개인 딥리서치(Claude + Gemini Pro + Codex + Grok 4AI 병렬) + OpenAI 공식 cookbook + 커뮤니티 벤치 종합
💬 더 많은 인사이트 받기
이 블로그의 새 글과 실시간 크립토/AI 인사이트를 받아보고 싶으시다면:
🐦 X (@coindowoomi) — 실시간 인사이트
📨 텔레그램 (@wasajang) — 블로그 새 글 푸시 알림
💬 카카오톡 오픈채팅 — 더 즉각적인 소통
🟢 네이버 블로그 — 코인 스토리 아카이브
댓글
댓글 쓰기