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 许可。