VLM-Auto-Insurance

0 downloads 0 likes on ModelScope updated

Model card

CASE-VLM:车险场景视觉语言模型应用

模型概述

CASE-VLM(Car Insurance Scenario VLM)是基于通义千问视觉语言模型(Qwen-VL 系列,API 调用 qwen-vl-max-2025-04-08)构建的车险全流程智能分析解决方案演示仓库。它将视觉语言大模型应用于汽车保险的承保、风险监控、理赔、反欺诈四大业务环节,覆盖 6 大类、12 个具体任务,展示 VLM 在保险垂直场景中"以图问数"的落地方式。

本仓库为应用案例型仓库(Application Case),包含:提示词模板(中/英文)、批量推理脚本、12 组车险业务图片、以及推理结果样例。

模型介绍

覆盖的车险业务任务

序号 业务环节 任务 输入图片 输出形式
1-2 承保 车辆里程表关键信息提取 仪表盘照片 结构化文本(总里程/速度/时间/档位等)
3 承保 多角度车辆照片承保信息分析 5 张多角度车辆照片 车型/品牌/车辆状况分析
4 风险监控 车内摄像头危险行为检测 车内照片 危险行为判断(如驾驶使用手机)
5-6 风险监控 行车记录仪危险驾驶行为分析 行车记录仪片段(抽帧图片) 驾驶行为风险评估
7-8 理赔 车祸现场损坏评估 事故现场照片 损坏部位/程度评估
9-10 理赔 事故要素结构化提取 事故现场照片 JSON 结构化输出(道路/天气/照明/受损部位/损害分类/预估费用等 10 个字段)
11-12 反欺诈 事故前后车辆同一性验证 事故前/后各 1 张照片 是否同一车辆的判断及依据

提示词工程要点

  • 采用角色设定 + 任务描述 + 输出格式约束的三段式提示词模式(如"你是一名汽车保险理赔处理专家……请以 JSON 格式提取以下信息……如果无法提取,请使用 N/A")。
  • 支持单图与多图输入:多图任务以 [img1, img2, ...] 列表形式传入,脚本自动拆分为多个 image_url 内容块。
  • 提供中/英双语模板(prompt_template_cn.xlsx / prompt_template_en.xlsx),便于对比模型的多语言能力。

模型训练

本案例为免训练(Training-free)的提示词工程应用,直接调用 qwen-vl-max-2025-04-08 商用 API 完成推理,未进行参数微调。

如需将本案例扩展为微调模型(例如基于 Qwen2.5-VL-3B-Instruct + LoRA,让小模型学会稳定输出第 9-10 任务的 JSON 结构化字段),可参考如下路线:

  • 训练数据:以本仓库的 12 组任务图片 + 提示词 + 期望输出构造指令微调样本;
  • 微调方法:LoRA(rank=16, alpha=32, dropout=0),3 epochs,batch_size=1,gradient_accumulation=4,learning_rate=2e-4;
  • 训练框架:Unsloth 加速 + transformers 原生 Trainer + UnslothVisionDataCollator(视觉模型建议避免使用 SFTTrainer 的 formatting_func 路径)。

模型推理

方式一:DashScope OpenAI 兼容接口(推荐,开箱即用)

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

def get_response(user_prompt, image_url):
    # 支持多图:image_url 形如 "[img1, img2]" 或单图 "img1"
    if image_url.startswith('[') and ',' in image_url:
        image_url_list = [u.strip() for u in image_url.strip()[1:-1].split(',')]
    else:
        image_url_list = [image_url]
    content = [{"type": "text", "text": user_prompt}]
    for temp_url in image_url_list:
        url = f"https://vl-image.oss-cn-shanghai.aliyuncs.com/{temp_url}.jpg"
        content.append({"type": "image_url", "image_url": {"url": url}})
    completion = client.chat.completions.create(
        model="qwen-vl-max-2025-04-08",
        messages=[{"role": "user", "content": content}],
    )
    return completion.choices[0].message.content

print(get_response(
    "你是一名汽车保险承保专家。这里有一张车辆里程表的图片。请从中提取关键信息。",
    "1-vehicle-odometer-reading",
))

方式二:ModelScope 本地部署推理

from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import Qwen2VLForConditionalGeneration, AutoProcessor
from PIL import Image
import torch

model_dir = "Qwen/Qwen2.5-VL-3B-Instruct"  # 或本地微调后模型路径
model = Qwen2VLForConditionalGeneration.from_pretrained(
    model_dir, torch_dtype=torch.bfloat16, device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_dir)

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "file:///path/to/9-extraction-of-auto-accident-elements.jpg"},
        {"type": "text", "text": "你是一名汽车保险理赔处理专家。请以JSON格式提取:道路状况、天气状况、照明条件、事故估计原因、受损部位、车辆品牌型号、损害程度、损害分类、预估费用。无法提取请使用N/A。"},
    ],
}]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=None, padding=True, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
print(processor.batch_decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0])

批量推理

仓库根目录运行:

pip install openai pandas openpyxl
export DASHSCOPE_API_KEY=sk-xxxx
python inference_demo.py            # 中文模板批量推理
python inference_demo.py --lang en  # 英文模板批量推理

模型效果

以下为 qwen-vl-max-2025-04-08 在部分任务上的真实推理结果摘录(完整结果见 prompt_template_cn_result.xlsx):

任务 2:里程表信息提取(英文表盘)

总里程 37,756 英里;当前速度 56.6 英里/小时;时间 11:14;温度 10.5°C;档位 D 档。

任务 9:事故要素结构化提取(JSON 输出)

{
  "道路状况": "湿滑",
  "天气状况": "阴天",
  "照明条件": "白天",
  "事故估计原因": "路面湿滑导致失控",
  "受损部位": ["前部"],
  "车辆品牌型号": "N/A",
  "损害程度": "严重",
  "损害分类": ["保险杠凹陷", "车门凹陷", "大灯破损"],
  "预估费用": "N/A"
}

任务 11:车辆同一性验证(反欺诈)

第一张为特斯拉 Model X(前部严重损毁),第二张为特斯拉 Model Y(外观完好),车型不同,判定不是同一辆车。

效果小结

  • 里程表读数、危险行为检测等感知类任务准确率高,中英文仪表盘均可识别;
  • JSON 结构化提取任务在明确列出字段清单 + N/A 兜底策略后输出稳定,可直接进入下游核赔系统;
  • 车辆同一性验证能综合车型、前脸设计、车身尺寸等多维度特征给出结论与依据;
  • 局限:预估费用等需要业务规则/区域定价知识的字段,模型通常返回 N/A,需结合规则引擎或检索增强。

引用与许可

  • 本仓库内容基于阿里云百炼(DashScope)Qwen-VL 系列模型的 API 调用实践整理,图片素材仅用于教学演示;
  • 代码与文档采用 Apache License 2.0 许可。