다양한 모달리티 전처리

Hugging Face로 배우는 멀티모달 모델

James Chapman

Curriculum Manager, DataCamp

텍스트 전처리

예시 텍스트 문자열.

  • Tokenizer: 텍스트 → 모델 입력 매핑
Hugging Face로 배우는 멀티모달 모델

텍스트 전처리

정규화까지의 텍스트 전처리 흐름도

  • Tokenizer: 텍스트 → 모델 입력 매핑
    • 정규화: 소문자화, 특수문자 제거, 여분의 공백 제거
Hugging Face로 배우는 멀티모달 모델

텍스트 전처리

토크나이즈까지의 흐름도 계속

  • Tokenizer: 텍스트 → 모델 입력 매핑
    • 정규화: 소문자화, 특수문자 제거, 여분의 공백 제거
    • (사전)토크나이즈: 단어/서브워드로 분할
Hugging Face로 배우는 멀티모달 모델

텍스트 전처리

ID 변환과 패딩으로 이어지는 흐름도

  • Tokenizer: 텍스트 → 모델 입력 매핑
    • 정규화: 소문자화, 특수문자 제거, 공백 정리
    • (사전)토크나이즈: 단어/서브워드로 분할
    • ID 변환: 토큰을 vocabulary의 정수로 매핑
Hugging Face로 배우는 멀티모달 모델

텍스트 전처리

preprocessing_text5.jpg

  • Tokenizer: 텍스트 → 모델 입력 매핑
    • 정규화: 소문자화, 특수문자 제거, 공백 정리
    • (사전)토크나이즈: 단어/서브워드로 분할
    • ID 변환: 토큰을 vocabulary의 정수로 매핑
    • 패딩: 길이 일치를 위해 토큰 추가
Hugging Face로 배우는 멀티모달 모델

텍스트 전처리

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('distilbert/distilbert-base-uncased')

text = "Do you need more éclairs?"
print(tokenizer.backend_tokenizer.normalizer.normalize_str(text))
do you need more eclairs
tokenizer(text, return_tensors='pt', padding=True)
{'input_ids': tensor([[  101,  ..., 102]]), ...}
Hugging Face로 배우는 멀티모달 모델

이미지 전처리

  • 정규화: 픽셀 강도 보정
  • 리사이즈: 모델 입력 크기와 맞춤
  • 일반 원칙 → 원래 모델의 전처리 사용

전처리 전후 사람들 점프 사진

1 https://huggingface.co/datasets/nlphuji/flickr30k
Hugging Face로 배우는 멀티모달 모델

이미지 전처리

멀티모달 작업에는 일관된 전처리가 필요합니다:

from transformers import BlipProcessor, BlipForConditionalGeneration

checkpoint = "Salesforce/blip-image-captioning-base"
model = BlipForConditionalGeneration.from_pretrained(checkpoint) processor = BlipProcessor.from_pretrained(checkpoint)

이미지 인코딩 → 텍스트 인코딩으로 변환 → 텍스트 디코딩

image = load_dataset("nlphuji/flickr30k")['test'][11]["image"]
inputs = processor(images=image, return_tensors="pt")

output = model.generate(**inputs)
print(processor.decode(output[0]))
[{'generated_text': 'a group of people jumping'}]
Hugging Face로 배우는 멀티모달 모델

오디오 전처리

오디오 스펙트럼

  • 오디오 전처리:
    • 순차 배열 → 필터/패딩
    • 샘플링 레이트 → 리샘플링

모델 입력용 특징 추출(스펙트로그램)

spectro

Hugging Face로 배우는 멀티모달 모델

오디오 전처리

from datasets import load_dataset, Audio

dataset = load_dataset("CSTR-Edinburgh/vctk")["train"] dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))
  • 모델별 전체 전처리기가 제공됩니다:
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("openai/whisper-small")
audio_pp = processor(dataset[0]["audio"]["array"], 
                     sampling_rate=16_000, return_tensors="pt")
  • 샘플링 레이트는 모델 입력 요구사항과 일치해야 합니다
1 https://huggingface.co/datasets/CSTR-Edinburgh/vctk
Hugging Face로 배우는 멀티모달 모델

연습해 봅시다!

Hugging Face로 배우는 멀티모달 모델

Preparing Video For Download...