Idefics2, Hugging Face가 공개한 8B 규모의 멀티모달 모델 (Vision-Language)

Idefics2, Hugging Face가 공개한 8B 규모의 멀티모달 모델 (Vision-Language)

소개

Hugging Face에서 공개한 Idefics2 모델은 이미지와 텍스트를 동시에 입력받아 텍스트 응답을 생성하는 멀티모달 모델로, 이미지에 대한 질문에 답하거나, 시각적 내용에 대한 설명을 할 수 있습니다. Idefics2 모델은 이전 버전인 Idefics1에 비해 OCR, 문서 이해, 시각적 추론 능력이 향상되었으며, Apache 2.0 라이선스로 배포된 공개 모델입니다.

주요 기능

  • 멀티모달 입력 처리: Idefics2는 텍스트와 이미지를 포함한 입력을 처리할 수 있습니다. 이는 이미지 캡셔닝, 시각적 질문 응답 등 다양한 작업에 활용될 수 있습니다.

  • 향상된 OCR 및 시각적 추론: 문서 스캔이나 이미지 내 텍스트 인식에 강화된 기능을 제공합니다. 또한, 차트나 그래픽에 대한 질문에도 효과적으로 대응할 수 있습니다.

  • 다양한 이미지와 텍스트 결합: 여러 이미지에 기반한 스토리 생성 또는 문서에서 정보 추출 등 복잡한 작업 수행 가능.

  • 사용자 지시에 따른 미세조정: 사용자의 구체적인 요구사항에 맞게 모델을 미세조정할 수 있어, 보다 정확한 결과를 얻을 수 있습니다.

성능 비교

Idefics2는 LLava-Next-34B나 MM1-30B-chat 같은 훨씬 큰 모델들과 경쟁할 수 있는 성능을 보여줍니다. 특히 이미지와 관련된 질문에 답변하거나, 이미지로부터 텍스트 정보를 추출하는 작업에서 뛰어난 OCR 능력을 보여줌으로써, 멀티모달 작업에 특화된 강점을 가지고 있습니다. Idefics2 모델을 다른 유사 모델들과 비교한 결과는 다음과 같습니다:

Model Open
weights
Size # tokens
per image
MMMU
(val/test)
MathVista
(testmini)
TextVQA
(val)
MMBench
(test)
VQAv2
(test-dev)
DocVQA
(test)
DeepSeek-VL 7B 576 36.6/- 36.1 64.4 73.2 - 49.6
LLaVa-NeXT-Mistral-7B 7B 2880 35.3/- 37.7 65.7 68.7 82.2 -
LLaVa-NeXT-13B 13B 2880 36.2/- 35.3 67.1 70.0 82.8 -
LLaVa-NeXT-34B 34B 2880 51.1/44.7 46.5 69.5 79.3 83.7 -
MM1-Chat-7B 7B 720 37.0/35.6 35.9 72.8 72.3 82.8 -
MM1-Chat-30B 30B 720 44.7/40.3 39.4 73.5 75.1 83.7
Gemini 1.0 Pro 🤷‍♂️ 🤷‍♂️ 47.9/- 45.2 74.6 - 71.2 88.1
Gemini 1.5 Pro 🤷‍♂️ 🤷‍♂️ 58.5/- 52.1 73.5 - 73.2 86.5
Claude 3 Haiku 🤷‍♂️ 🤷‍♂️ 50.2/- 46.4 - - - 88.8
Idefics1 instruct (32-shots) 80B - - - 39.3 - 68.8 -
Idefics2 (w/o im. split)* 8B 64 43.5/37.9 51.6 70.4 76.8 80.8 67.3
Idefics2 (w/ im. split)* 8B 320 43.0/37.7 51.4 73.0 76.7 81.2 74.0
  • with(w/) im. split 또는 without(w/o) im. split으로 표시된 것은 SPHINX와 LLaVa-NeXT의 전략에 따른 이미지 4 분할 옵션 추가 여부입니다.

사용 방법

Idefics2는 :hugs: Transformers 라이브러리를 통해 손쉽게 사용할 수 있으며, 아래 코드 예시를 통해 모델을 직접 실험해 볼 수 있습니다. 사용자는 Hugging Face Hub에서 모델을 다운로드하여 다양한 멀티모달 애플리케이션에 적용할 수 있습니다.

기본 사용법

import requests
import torch
from PIL import Image
from io import BytesIO
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image

# 모델 및 프로세서 불러오기 (CUDA 사용 가정)
DEVICE = "cuda"
processor = AutoProcessor.from_pretrained("HuggingFaceM4/idefics2-8b")
model = AutoModelForVision2Seq.from_pretrained("HuggingFaceM4/idefics2-8b").to(DEVICE)


# 예시 이미지 불러오기
image_urls = [
    "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg",
    "https://cdn.britannica.com/59/94459-050-DBA42467/Skyline-Chicago.jpg",
    "https://cdn.britannica.com/68/170868-050-8DDE8263/Golden-Gate-Bridge-San-Francisco.jpg"
]
images = [load_image(url) for url in image_urls]

# 입력 
inputs = processor(text="What do we see in this image?", images=image1, return_tensors="pt").to("cuda:0")

# 결과 생성
outputs = model.generate(**inputs)
print(processor.decode(outputs, skip_special_tokens=True))

이 코드 예제는 Idefics2 모델을 사용하여 주어진 이미지에 대한 설명을 생성하는 방법을 보여줍니다.

더 읽어보기

소개 글

저장소 (기본 모델 및 채팅형 모델)

데이터셋

참고 논문




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: