異種モダリティの前処理

Hugging Face で学ぶマルチモーダルモデル

James Chapman

Curriculum Manager, DataCamp

テキストの前処理

例のテキスト文字列

  • トークナイザ: テキスト → モデル入力に変換
Hugging Face で学ぶマルチモーダルモデル

テキストの前処理

正規化までのテキスト前処理のフローダイアグラム

  • トークナイザ: テキスト → モデル入力に変換
    • 正規化: 小文字化、記号除去、余分な空白の削除
Hugging Face で学ぶマルチモーダルモデル

テキストの前処理

トークナイズへのフローダイアグラムの続き

  • トークナイザ: テキスト → モデル入力に変換
    • 正規化: 小文字化、記号除去、余分な空白の削除
    • (事前)トークナイズ: 単語/サブワードへ分割
Hugging Face で学ぶマルチモーダルモデル

テキストの前処理

ID 変換とパディングへのフローダイアグラムの続き

  • トークナイザ: テキスト → モデル入力に変換
    • 正規化: 小文字化、記号除去、空白整理
    • (事前)トークナイズ: 単語/サブワードへ分割
    • ID 変換: 語彙でトークンを整数に対応付け
Hugging Face で学ぶマルチモーダルモデル

テキストの前処理

preprocessing_text5.jpg

  • トークナイザ: テキスト → モデル入力に変換
    • 正規化: 小文字化、記号除去、空白整理
    • (事前)トークナイズ: 単語/サブワードへ分割
    • ID 変換: 語彙でトークンを整数に対応付け
    • パディング: 長さをそろえるためにトークン追加
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 で学ぶマルチモーダルモデル

音声の前処理

オーディオスペクトラム

  • 音声の前処理:
    • 連続配列 → フィルタ/パディング
    • サンプリングレート → リサンプリング

特徴量抽出をモデル入力に使用(スペクトログラム

スペクトログラム

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...