nikkie-ftnextの日記

イベントレポートや読書メモを発信

Google Colab の T4 GPU で Qwen2.5-VL-3B-Instruct を動かし、画像中の日本語テキスト認識

はじめに

七尾百合子さん、お誕生日 158日目 おめでとうございます! nikkieです。

名前だけ知っている存在だったQwen、2.5 Vision Language Modelを触ったところ、3Bにして性能が高く驚きました!

目次

動いたぞおおおおお!

本日発表の素晴らしいニュースの画像を入れてみます1

この画像に文字で何と書かれていますか?

この画像には以下の文字が書かれています:

THE IDOLM@STER MILLION LIVE!
ミリオンライブ!

京都国際マンガ・アニメフェア2025
KYOTO INTERNATIONAL MANGA ANIME FAIR

開催会場:みやこめっせ
開催日:
2025/9/20・21

3Bのモデルで画像中のテキスト大体認識できるの、すごい!2

Quickstartを動かしました

Notebook全容

Quickstartをやっています

qwen-vl-utilsをインストール。
messagesにはローカルの画像のパスを指定し(file://./news_image.jpg)、process_vision_info()で画像を読み込みます。
chat templateと合わせてinputsを作るんですね。

T4 GPUという制約にはprocessorの設定で対処しました。

processor = AutoProcessor.from_pretrained(
    MODEL_ID, min_pixels=256*28*28, max_pixels=512*28*28
)

max_pixelsの指定をしないと OutOfMemoryError となったので、512ピクセルまでと指定しました。
指定しないと 16384*28*28 (=12845056) のようです(指定せずに初期化して確認)。
ピクセル数を落としているから、認識しきれていないテキストがあるのだと思います。

generated_ids_trimmedのロジックが分かりにくかったのですが、(Claude Codeに教えてもらって理解したところによると)これは生成されたテキストから入力プロンプト部分を取り除いています

generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]

終わりに

Qwen2.5-VL-3B-InstructのQuickstartを動かしました。
画像のテキスト(日本語含む)の認識は3Bモデルで意外といけちゃうのかもしれません。

Azure AI Foundryのようなサーバレスな環境で立てておくというのは有力に思えます(Cloud Runにもあるんでしたっけ?)。
Qwen 2.5の3Bで驚きましたが、Gemma 3など今の小さいモデルはこのあたりできて当然なのかもしれません(要検証。宿題事項)

ColabからGitHubへのアップロードには過去記事が助けになりました。


  1. チラと眺めただけですが、Gemini 2.0 Flashと張っているんですよね