0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

軽量モデルなのに賢い!MiniCPM-V-4で折れ線グラフを解析

Posted at

はじめに

最近公開された MiniCPM-V-4は、モバイルでも快適に動く軽量なマルチモーダルAIモデルです。画像とテキストを同時に扱えるため、ポスターやチャート、表の解析に強いとされています。
今回は Google Colab 上で動かし、実際に「京都市の月間降水量」の折れ線グラフを読み取らせてみました。


セットアップ

Colab では以下のようにセットアップしました。
torch, transformers, accelerate をインストール
openbmb/MiniCPM-V-4 モデルを読み込み(SDPAで動作)
・画像(PNG)をアップロードしてモデルに解析させる
プロンプトは「要約・軸・単位・傾向・主要数値・ビジネス上の示唆」を出力するように指定しました。

実際の解析結果
今回解析させたのはこちらのグラフ
京都.png
京都市の降水量グラフ(1月〜12月)を読み込ませたところ、モデルは以下のように答えてくれました。

1.要約
 1〜2月は少なく、6〜7月が最も多い。8〜9月で一時的に減少し、10〜12月にかけて減少傾向。
2.図表の種類と軸
 折線グラフ、X軸は月、Y軸は降水量(mm)、単位はミリメートル。
3.傾向
 冬は少雨、梅雨の6月にピーク(約230mm)、夏に減少、秋の9月に再び増加後、冬にかけて下降。
4.主要数値
 1月:約50mm、2月:約70mm、6月:約230mm、9月:約200mm、12月:約45mm。

検証と感想
実際のグラフと見比べると、傾向はほぼ正確に捉えていました。
数値も大きなズレはなく、凡例・軸・単位など基本的な情報も正しく抽出できています。
少し粗い部分(1〜2月をまとめて「50mm」としたなど)はありましたが、追加プロンプトで補正できそうです。
特に良かったのは、「梅雨のピーク → 夏に減少 → 秋に再上昇 → 冬に低下」という全体像を自然に説明できたこと。これはレポート作成や授業の資料まとめなどに直結する力だと感じました。


手順

1 ランタイム準備

!pip -q install "torch>=2.3" "torchvision>=0.18" --index-url https://download.pytorch.org/whl/cu121
!pip -q install "transformers>=4.43" accelerate pillow sentencepiece einops

2 モデル読込(BF16 / SDPA)

from PIL import Image
import torch
from transformers import AutoModel, AutoTokenizer

MODEL_ID = "openbmb/MiniCPM-V-4"

device = "cuda" if torch.cuda.is_available() else "cpu"

model = AutoModel.from_pretrained(
    MODEL_ID,
    trust_remote_code=True,
    attn_implementation="sdpa",      # Colab(T4)向けにSDPAを指定
    torch_dtype=torch.bfloat16
).eval().to(device)

tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)

図表画像をアップロード

from google.colab import files
up = files.upload()  # 手元のPNG/JPGを選択
img_path = list(up.keys())[0]
image = Image.open(img_path).convert("RGB")
image

「図表読み取り」プロンプト実行(日本語最適化テンプレ)

SYSTEM_PROMPT = (
    "あなたは厳密な図表アナリストです。画像から読み取れる範囲のみで答え、"
    "推測や外部知識の混入は避けてください。数値や単位は可能な限り明示します。"
)

USER_PROMPT = (
    "この図表を日本語で解析してください。\n"
    "1) 30〜60字で要約(箇条書き3点)\n"
    "2) 図表の種類、X/Y軸ラベル、単位、凡例\n"
    "3) データの傾向(増減・ピーク・季節性・外れ値)\n"
    "4) 主要な数値(読み取れる範囲で具体値)\n"
    "※ 写っていない情報は『不明』と明記"
)

msgs = [
    {"role": "system", "content": [SYSTEM_PROMPT]},
    {"role": "user", "content": [image, USER_PROMPT]},
]

answer = model.chat(msgs=msgs, image=image, tokenizer=tokenizer)
print(answer)

MiniCPM-V-4 のおすすめ用途

今回の実験を通して見えてきた、このモデルのおすすめ活用シーンを整理しました。
📰*** ビジネスレポートや研究論文の図表解析***
 グラフや表を読み取って要点を抽出できるため、資料作成の補助に役立ちます。
📚 教育用途(授業や学習補助)
 統計グラフや理科・地理のチャートを生徒向けに分かりやすく解説。学習教材の自動生成にも向いています。
📷 OCR+要約
 ポスターやチラシの写真を読み取り、テキスト化+要点要約。外出先での情報整理に便利。
📊 図表比較・トレンド分析
 複数のグラフを入力して「違いを3点挙げて」といった比較解析も可能。市場調査や報告資料作りに応用できます。
📱 モバイル端末での活用
 iPhoneやiPadでも軽快に動く設計なので、現場でのデータ確認やオフライン利用にも強い。

まとめ

MiniCPM-V-4は小型ながら図表解析に強く、グラフの要点をしっかり拾える。
・Colab 上でも軽快に動作し、OCRや表・グラフ解析にすぐ使える。
・ビジネスレポート、教育現場、モバイルアシスタントなど、多彩な場面で実用性が高い。


フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。

Twitter
Medium

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?