본문으로 건너뛰기
홈
기술
기술 전체
프로그래밍68
컴퓨터 과학63
AI48
웹 개발36
인프라33
데이터31
소프트웨어 공학18
소개
← 목록으로AI › 언어 모델 › 응용

14. 멀티모달 LLM

목차

멀티모달 LLM

“이 영수증의 결제일과 총액을 알려줘”라는 요청에는 텍스트 질문뿐 아니라 이미지가 들어간다. 이미지를 OCR로 글자로만 바꾸면 글자의 위치, 항목 간 관계, 표의 줄 구분을 잃을 수 있다. 멀티모달(Multimodal) 모델은 텍스트와 이미지·오디오·비디오 등 서로 다른 형태의 입력을 함께 처리한다. 모델마다 받을 수 있는 입력과 만들 수 있는 출력은 다르므로, “멀티모달”이라는 이름만으로 음성 출력까지 된다고 가정하면 안 된다.

flowchart LR
  A[사용자 질문] --> B[텍스트 토큰화]
  C[영수증 이미지] --> D[크기·방향 정리]
  D --> E[시각 특징 추출]
  B --> F[모달리티 결합]
  E --> F
  F --> G[언어 모델]
  G --> H[결제일·총액·근거 위치]

그림에서 이미지가 바로 글자 토큰이 되는 것은 아니다. 이미지 전처리기와 시각 인코더가 특징을 만들고, 결합 방식에 따라 텍스트와 함께 모델에 들어간다. 예를 들어 LLaVA 논문은 시각 인코더와 LLM을 연결하는 방식을 설명한다. 실제 결합 구조와 해상도 처리 방식은 모델마다 다르다.

이미지와 텍스트의 역할

이미지 검색과 이미지 질문 답변은 목적이 다르다.

작업입력출력핵심 확인 사항
이미지-텍스트 검색이미지와 설명 문장가까운 후보 순위관련 이미지가 상위 k에 있는가
문서 이미지 질의응답영수증과 질문날짜·금액 등의 답실제 이미지에 있는 값인가
이미지 설명사진서술문보이지 않는 사실을 추정하지 않았는가

CLIP 논문은 이미지와 텍스트 쌍을 이용해 공통 표현을 학습하고, 문장으로 시각 개념을 지정하는 접근을 보여준다. 그렇다고 이미지-텍스트 임베딩 점수가 영수증 금액의 정확성을 보장하는 것은 아니다. 검색 모델은 후보를 찾고, 문서 이해 모델이나 OCR 및 규칙 검증은 값을 확인하는 데 쓴다.

영수증 추출 예시

다음은 모델에 줄 요청 형식이다. 사용 중인 모델과 API의 실제 필드 이름에 맞게 바꿔야 한다.

입력 이미지: receipt-001.jpg
질문: 결제일, 통화, 총액을 읽어 주세요.
규칙:
- 이미지에서 확인한 값만 적는다.
- 보이지 않거나 흐린 값은 null로 적는다.
- 금액에 쉼표가 있으면 숫자로 정규화하되 원문도 남긴다.

출력 형식:
{
  "payment_date": "YYYY-MM-DD 또는 null",
  "currency": "KRW 또는 null",
  "total_amount": "숫자 또는 null",
  "evidence": "값이 적힌 영역의 설명"
}

예를 들어 이미지에 합계 18,900원이 보이고 날짜가 흐리다면 날짜를 만들어 내지 않고 null로 둔다. 출력 JSON의 타입, 금액 범위, 필수 필드는 서버에서 다시 검사한다. 회계 처리처럼 오류 비용이 큰 작업은 원본 이미지의 해당 영역을 사람이 확인하는 단계를 둔다.

{
  "payment_date": null,
  "currency": "KRW",
  "total_amount": 18900,
  "evidence": "영수증 아래쪽 합계 행"
}

이 JSON은 가상의 입력을 설명하기 위한 출력 예시이며 모델을 실행한 결과가 아니다.

오디오와 비디오는 시간 정보가 있다

음성은 단순한 문장 이상의 정보를 가진다. “그건 아니에요”라는 전사 문장만으로는 발화 시점이나 화자 구분을 알 수 없다. 음성 인식(ASR), 화자 분리, 타임스탬프를 필요한 수준으로 조합한다. Whisper 논문은 음성을 텍스트로 전사하는 모델의 예다.

비디오를 프레임 몇 장으로 줄이면 그 사이의 사건을 놓칠 수 있다. 예를 들어 “상자가 떨어지기 전 사람이 문을 열었는가?”는 순서가 핵심이다. 프레임의 시간 위치와 음성 구간을 같이 보존한다.

flowchart LR
  V[비디오 파일] --> A[시간 구간 나누기]
  A --> B[대표 프레임 추출]
  A --> C[음성 전사와 시각]
  B --> D[시간 순서로 결합]
  C --> D
  D --> E[질문에 답하고 타임스탬프 표시]

그림의 대표 프레임 추출은 비용을 줄일 수 있지만, 짧게 나타났다 사라진 사건을 잃을 수 있다. 질문에 맞춰 프레임 간격을 조정하거나 의심 구간을 다시 읽어야 한다.

평가할 때 놓치기 쉬운 부분

  • 화질: 흐림, 회전, 작은 글씨, 압축 노이즈, 잘린 가장자리.
  • 공간 관계: 표의 행과 열, 그래프 범례, 문서의 여러 페이지 사이 참조.
  • 시간 관계: 사건 순서, 자막과 음성의 어긋남, 화자 전환.
  • 출력 검증: 보이지 않는 값에 대한 추측, 숫자·단위 착오, 존재하지 않는 출처.
  • 운영: 큰 이미지와 긴 오디오의 지연·비용, 업로드 파일 크기와 형식 검증, 개인정보 포함 여부.

평가 세트에는 읽을 수 없는 이미지와 답이 없는 질문도 넣는다. 정답률뿐 아니라 답을 보류해야 할 때 보류하는 비율을 본다. 입력이 많아질수록 모델의 설명이 그럴듯해도 원본의 어느 위치와 시간에 근거했는지 확인하는 습관이 중요하다.

이미지 입력을 코드에서 전달하는 흐름

텍스트 모델의 content가 문자열인 것과 달리 멀티모달 채팅에서는 content 안에 이미지와 텍스트 항목을 나란히 둔다. 아래는 로컬 영수증 파일이 준비돼 있다는 전제의 호출 형태다. 실제 영수증을 이 저장소에서 추론한 결과는 아니다.

from transformers import pipeline

pipe = pipeline(
    "image-text-to-text",
    model="Qwen/Qwen2.5-VL-3B-Instruct",
    device_map="auto",
    dtype="auto",
)
messages = [{
    "role": "user",
    "content": [
        {"type": "image", "path": "./receipt-001.jpg"},
        {"type": "text", "text": "결제일과 총액을 읽고, 보이지 않는 값은 추측하지 마세요."},
    ],
}]
result = pipe(text=messages, max_new_tokens=128)
print(result[0]["generated_text"][-1]["content"])

pipeline 안에서는 모델 전용 프로세서가 이미지를 크기·패치·픽셀 값 등 모델이 받는 형식으로 바꾸고, 텍스트를 토큰화한다. 사용자가 이미지를 직접 토큰 ID 문자열로 바꾸는 것은 아니다. 지원되는 path 필드와 결과 형식은 Transformers 멀티모달 채팅 문서에 설명돼 있다. 모델마다 입력 가능한 이미지 크기와 해상도 처리 방식이 다르므로 모델 카드도 읽어야 한다.

이 예시는 값을 읽는 단계까지만 보여준다. 앞의 JSON 계약으로 사용하려면 모델 출력을 서버에서 파싱하고 날짜·금액의 자료형을 검증해야 한다. 18,900원을 18900으로 정규화할 때 통화가 원화인지, 소계인지 최종 결제액인지도 확인한다. 카드 승인 금액과 상품별 합계가 한 이미지에 같이 있으면 “총액”이라는 단어만으로 어느 값을 뜻하는지 모호할 수 있다.

OCR와 비교해 어느 쪽이 나은지 판단하기

문서에서 필요한 값이 몇 개로 고정돼 있다면 OCR → 위치/키워드 규칙 → 사람이 검토라는 단순한 기준선도 만든다. 멀티모달 모델은 기울어진 사진이나 표의 관계를 이해하는 데 도움을 줄 수 있지만, 더 많은 연산과 메모리가 필요하고 보이지 않는 금액을 추측할 위험도 있다. 두 방식을 같은 영수증에서 비교한다.

가상의 평가 결과를 예로 들면, 결제일이 보이는 100장 중 OCR 방식은 86장, 멀티모달 방식은 92장을 맞혔다고 하자. 추가로 날짜가 흐린 20장 중 OCR이 18장을 “확인 불가”로 두고 멀티모달 모델은 8장만 보류했다면, 멀티모달의 높은 읽기 성공률만으로 자동 회계 입력에 사용하기 어렵다. 읽기 가능한 이미지의 정확도와 읽을 수 없는 이미지의 보류율을 함께 보고, 실패 이미지의 원인을 회전·가림·손글씨·낮은 해상도로 나눈다.

오디오는 전사문과 함께 화자·시간을 보존하고, 비디오는 답변에 사용한 프레임 시각을 남긴다. 원본 파일에 개인 정보가 포함될 수 있으므로 업로드 전 파일 형식과 크기를 제한하고, 저장 위치·보존 기간·외부 모델 전달 여부를 사용자에게 명확히 정해야 한다. 모델의 멀티모달 입력 지원과 서비스의 데이터 처리 정책은 별도 결정이다.

참고 자료

같은 카테고리의 글