VLM入門【画像を理解するAIの基礎知識】

VLM入門【画像を理解するAIの基礎知識】のアイキャッチ画像
目次

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での利用

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

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

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

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)

バッチ処理

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/',
    'この現場写真の状況を説明してください'
)

実践的な使い方

現場写真の分析

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

図面からの情報抽出

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

帳票のデータ抽出

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

地図の分析

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

活用のコツ

プロンプトの工夫

【具体的に指示する】
× 「画像を分析して」
○ 「画像に写っている建物の数と種類を教えて」

【形式を指定する】
「箇条書きで回答してください」
「JSON形式で回答してください」

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

画像の前処理

【効果的な画像】
・明るく鮮明
・対象が中央に
・適切な解像度

【避けるべき画像】
・暗すぎる/明るすぎる
・ぼやけている
・対象が小さすぎる

複数回の分析

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の活用についてのご相談は、お気軽にお問い合わせください。

お問い合わせはこちら →


最終更新: 2025年1月

この記事をシェア

関連デモ・ツール

技術選定からご相談ください

発注範囲が決まっていなくても、現在の業務と判断したいことから整理します。

相談内容を送る

GIS・AI・業務自動化に関するご相談は お問い合わせページ からお気軽にどうぞ。