VLM入門

画像を理解するAIの基礎知識

VLM入門

VLM(Vision Language Model)を使えば、AIが画像を理解して質問に答えられます。この記事では、VLMの基礎知識とローカルでの活用方法を解説します。

VLMとは

概要

VLM(Vision Language Model)は、画像とテキストの両方を理解できるAIモデルです。

【従来のLLM】
テキスト → AI → テキスト

【VLM】
画像 + テキスト → AI → テキスト

LLMとの違い

項目 LLM VLM
入力 テキストのみ 画像 + テキスト
処理 言語理解 画像 + 言語理解
用途 文章生成・分析 画像分析・説明
サイズ 比較的小さい 大きめ

仕組み

【処理の流れ】
1. 画像を画像エンコーダーで処理
2. 画像の特徴を抽出
3. テキストと統合
4. 言語モデルで処理
5. 回答を生成

VLMでできること

画像の説明

【入力】写真 + 「この画像を説明して」
【出力】「この画像には青い空の下に
        白い建物が写っています...」

質問応答

【入力】グラフ画像 + 「売上が最も高い月は?」
【出力】「7月が最も高く、約500万円です」

文字認識(OCR)

【入力】文書画像 + 「書かれている内容は?」
【出力】「書類のタイトルは...内容は...」

図面・地図の読み取り

【入力】地図画像 + 「主要な道路を教えて」
【出力】「画像には国道○号線が
        南北に走っており...」

具体的な活用シーン

シーン 活用例
現場写真分析 状況の自動説明
図面読み取り 仕様の抽出
帳票処理 データ抽出
品質検査 異常検出
地図分析 地物の特定

主なVLMモデル

LLaVA

特徴

  • オープンソース
  • バランスの良い性能
  • 日本語対応あり
  • サイズ:7B, 13B, 34B
Ollama
ollama pull llava
ollama pull llava:13b

Qwen2-VL

特徴

  • Alibaba開発
  • 日本語性能が高い
  • 高い画像理解能力
Ollama
ollama pull qwen2-vl

Llama 3.2 Vision

特徴

  • Meta開発
  • 最新のVLM
  • 高性能
Ollama
ollama pull llama3.2-vision

比較

モデル 日本語 性能 サイズ
LLaVA 7B 4.5GB
LLaVA 13B 8GB
Qwen2-VL 5GB
Llama 3.2 Vision 6GB

ローカルでの利用方法

Ollamaでの利用

bash
# モデルのダウンロード
ollama pull llava

# 対話モードで起動
ollama run llava

# 画像を指定して質問
>>> /image C:\path\to\photo.jpg
>>> この画像を説明してください

Pythonからの利用

python
import requests
import base64

def analyze_image(image_path, prompt):
    # 画像をBase64エンコード
    with open(image_path, 'rb') as f:
        image_data = base64.b64encode(f.read()).decode('utf-8')

    # Ollama APIを呼び出し
    response = requests.post(
        'http://localhost:11434/api/generate',
        json={
            'model': 'llava',
            'prompt': prompt,
            'images': [image_data],
            'stream': False
        }
    )

    return response.json()['response']

# 使用例
result = analyze_image(
    'photo.jpg',
    'この画像を日本語で説明してください'
)
print(result)

バッチ処理

python
import os

def process_images(folder_path, prompt):
    results = []

    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.jpg', '.png', '.jpeg')):
            image_path = os.path.join(folder_path, filename)
            result = analyze_image(image_path, prompt)
            results.append({
                'filename': filename,
                'analysis': result
            })

    return results

# フォルダ内の画像を一括処理
results = process_images(
    'photos/',
    'この現場写真の状況を説明してください'
)

実践的な使い方

現場写真の分析

python
def analyze_site_photo(image_path):
    prompt = """
    この現場写真を分析してください:
    1. 作業の状況
    2. 確認できる設備・機材
    3. 安全面で気になる点
    4. 天候・時間帯の推測
    """
    return analyze_image(image_path, prompt)

図面からの情報抽出

python
def extract_from_drawing(image_path):
    prompt = """
    この図面から以下を読み取ってください:
    1. 図面のタイトル
    2. 縮尺
    3. 主な寸法
    4. 特記事項
    """
    return analyze_image(image_path, prompt)

帳票のデータ抽出

python
def extract_form_data(image_path):
    prompt = """
    この帳票から情報を抽出してください。
    JSON形式で回答:
    {
        "日付": "",
        "担当者": "",
        "項目": [],
        "金額": ""
    }
    """
    return analyze_image(image_path, prompt)

地図の分析

python
def analyze_map(image_path):
    prompt = """
    この地図画像を分析してください:
    1. 表示されている地域
    2. 主な道路・鉄道
    3. 目立つ施設・建物
    4. 地形の特徴
    """
    return analyze_image(image_path, prompt)

活用のコツ

プロンプトの工夫

具体的に指示する

  • × 「画像を分析して」
  • ○ 「画像に写っている建物の数と種類を教えて」

形式を指定する

  • 「箇条書きで回答してください」
  • 「JSON形式で回答してください」

観点を示す

  • 「安全面の観点から分析してください」
  • 「コスト削減の観点から評価してください」

画像の前処理

効果的な画像

  • 明るく鮮明
  • 対象が中央に
  • 適切な解像度

避けるべき画像

  • 暗すぎる/明るすぎる
  • ぼやけている
  • 対象が小さすぎる

複数回の分析

python
def detailed_analysis(image_path):
    # 1回目:全体概要
    overview = analyze_image(image_path, "全体を説明して")

    # 2回目:詳細分析
    details = analyze_image(image_path, "詳細を分析して")

    # 3回目:特定の観点
    specific = analyze_image(image_path, "問題点を指摘して")

    return {
        'overview': overview,
        'details': details,
        'specific': specific
    }

注意点と限界

VLMの限界

苦手なこと

  • 小さな文字の読み取り
  • 複雑な図面の完全な理解
  • 正確な数値の読み取り
  • 専門的な判断

得意なこと

  • 概要の把握
  • 大まかな分類
  • 説明文の生成
  • 簡単なOCR

精度について

確認が必要なケース

  • 数値データ
  • 専門的な内容
  • 重要な判断
  • 法的に重要な情報

そのまま使えるケース

  • 概要説明
  • 分類・タグ付け
  • 下書き作成

リソース要件

項目 推奨スペック
GPU 8GB VRAM以上推奨
メモリ 16GB以上
ストレージ モデルサイズ+α
処理内容 時間の目安
簡単な分析 数秒
詳細な分析 10〜30秒
バッチ処理 画像あたり10〜30秒

まとめ

VLMの特徴

  • 画像とテキストを同時に理解
  • 画像の説明・分析が可能
  • OCR機能も備える
  • ローカルで動作可能

活用シーン

  • 現場写真の分析
  • 図面の読み取り
  • 帳票のデータ抽出
  • 地図の分析

始め方

1. Ollamaをインストール
2. ollama pull llava
3. 画像を指定して質問
4. 徐々に活用範囲を広げる

関連記事

お問い合わせ

VLMの活用についてのご相談は、お気軽にお問い合わせください。

  • 導入コンサルティング
  • カスタマイズ開発
  • 技術サポート

お問い合わせはこちら