[Study Jam] Create Image Captioning Models
구글 클라우드 AI 스터디잼의 이미지 캡션 생성 모델 요약 내용입니다. 이미지를 입력받아 짧은 문장(캡션)으로 설명하는 모델의 작동 원리와 Vertex AI 실습 흐름을 정리합니다. 최신 생성형 AI 제품을 만드는 것이 아니라, 인코더-디코더·Attention·트랜스포머 같은 기술 원리를 다룹니다.
💡 이런 분들께 추천합니다
- 이미지 캡션(Image Captioning)을 처음 배우는 분
- 인코더-디코더·Attention을 이미지+텍스트에 적용하고 싶은 분
- Vertex AI에서 이미지 캡션 모델을 구축·훈련해 보고 싶은 분
🧩 개념 설명 / 배경 지식
이미지 캡션 생성
이미지와 텍스트 캡션 쌍 데이터로 학습해, 새 이미지가 주어지면 그에 맞는 문장을 생성하는 태스크입니다.
구조 요약
- 인코더: 이미지에서 정보를 추출해 특징 벡터로 만듭니다(예: CNN 기반 InceptionResNetV2).
- 디코더: 그 벡터와 이전 단어를 이용해 한 단어씩 캡션을 생성합니다. GRU, Attention, 트랜스포머 등이 쓰입니다.
- 멀티모달: 이미지(인코더)와 텍스트(디코더)를 함께 다루는 전형적인 구조입니다.
🔍 본론: 이미지 캡션 모델 만들기
1. 모델 구조
- 인코더: 이미지 → CNN 등으로 특징 벡터 추출.
- 디코더: 특징 벡터 + 이전 단어 → GRU + Attention(및/또는 트랜스포머) → 다음 단어 예측.
- Attention으로 이미지의 어느 영역이 현재 단어와 관련 있는지 반영해 더 정확한 캡션을 만듭니다.
2. 데이터와 전처리
- 데이터셋: 이미지–캡션 쌍(예: TFDS). 시작/종료 토큰 추가, 텍스트 벡터화(Text Vectorization), String Lookup으로 단어↔인덱스 변환.
- 훈련 데이터: (이미지 텐서, 캡션) 튜플. 타깃은 캡션을 한 단어씩 시프트한 레이블로 구성합니다.
3. 훈련과 추론
- 손실: 희소 범주형 교차 엔트로피(Sparse Categorical Crossentropy). 패딩 구간은 손실에서 제외하는 처리가 필요할 수 있습니다.
- 훈련: GPU 기준 약 15–20분 수준으로 안내됩니다.
- 추론: GRU 초기 상태 설정 → 시작 토큰 → 이미지를 인코더에 넣어 특징 벡터 추출 → 디코더로 반복해 종료 토큰까지 단어 생성.
동영상: 이미지 캡션 생성 모델 만들기 개요
동영상: 이미지 캡션 생성 실습 가이드
⚠️ 주의사항
- 토크나이저·전처리는 훈련 데이터와 동일한 설정(어휘, 최대 길이 등)으로 해야 추론 시 일관된 결과가 나옵니다.
- 패딩을 쓸 때는 손실 계산에서 패딩 위치를 마스킹하는 것이 학습 안정에 도움이 됩니다.
✅ 실습 / 적용 예시
Step 1. 환경 준비
GitHub 저장소 기준으로 Vertex AI 워크벤치를 설정하고, TensorFlow·Keras·필요 라이브러리(GRU, Attention 레이어 등)를 설치합니다.
Step 2. 데이터·토크나이저
TFDS로 이미지–캡션 데이터 로드, 이미지 리사이즈·스케일, 텍스트에 시작/종료 토큰 추가 후 Text Vectorization·String Lookup으로 토크나이저를 만듭니다.
Step 3. 모델 구축·훈련
인코더(CNN 특징 추출기) + 디코더(Attention + GRU 등)로 모델을 만들고, 정의한 손실로 GPU에서 훈련한 뒤, 샘플 이미지로 캡션을 생성해 봅니다.
🚧 트러블슈팅 / 자주 묻는 질문
Q. 이미지 캡션 모델에 쓰는 주요 기술은?
A. 인코더-디코더, CNN 기반 이미지 인코더(InceptionResNetV2 등), 디코더 쪽 GRU·Attention·트랜스포머가 대표적입니다. Attention이 이미지 영역과 단어를 연결해 품질을 높입니다.
Q. 인코더와 디코더는 이미지·텍스트를 어떻게 나눠 처리하나요?
A. 인코더는 이미지만 입력받아 특징 벡터로 만들고, 디코더는 그 벡터와 이미 생성한 단어를 입력해 다음 단어를 예측합니다. 서로 다른 모달리티(이미지 vs 텍스트)를 한 파이프라인에서 연결합니다.
Q. 추론 단계에서는 어떤 순서로 동작하나요?
A. 시작 토큰으로 GRU 초기화 → 이미지를 인코더에 넣어 특징 벡터 추출 → 디코더에 특징 벡터 + 이전 예측 단어를 넣어 다음 단어 예측 → 종료 토큰이 나올 때까지 반복합니다.
📝 마무리
- 이미지 캡션은 인코더(이미지→벡터) + 디코더(벡터→단어 시퀀스) + Attention으로 구현할 수 있습니다.
- Vertex AI와 TFDS·Keras로 데이터 로드, 전처리, 훈련, 추론까지 한 흐름으로 실습할 수 있습니다.
- 다음에는 Generative AI Studio, 멀티모달 API 등으로 생성형 AI 활용을 넓혀 보시면 좋습니다.
댓글남기기