Project 01 / VLM Data Engineering

基于 Qwen3-VL 的电商多模态商品理解系统

这一页展示主页没有展开的工程设计:我把“商品图文理解”拆成数据标准化、五类 SFT 任务构造、批量推理、JSON 解析、六维评测、Qwen-VL 微调格式转换和测试覆盖。当前 baseline 用于证明链路可跑通,真实模型接入和 LoRA 微调被清楚地留在后续接口中。

工程总览

Raw Products读取本地商品图、标题、OCR、描述和属性字段。
Product Indexnormalize_product 与 image_utils 统一字段和图片路径。
Five SFT Tasksattribute、evidence、risk、selling points、agent action 五条任务线。
Inference Adapterbatch_infer 调用 Qwen3VLInferencer,先用 heuristic backend 打通端到端。
Eval & Train Formatrun_eval 输出 6 类指标,convert_to_qwenvl 生成微调入口。
src/data_build/build_product_index.py商品索引入口把原始商品记录转成统一 product index,是后续 SFT、推理和评测共享的事实源。
src/data_build/build_sft_dataset.py五任务聚合器调用各任务 builder,形成 all_sft.jsonl,避免每类任务各自维护一套样本格式。
src/infer/batch_infer.py批量推理调度按样本循环构造 prompt,调用推理器,写出 baseline predictions。
src/eval/run_eval.py统一评测入口集中读取 prediction 与 label,汇总 JSON、类目、属性、证据、风险、agent action 指标。

结果快照

Products10

本地商品图文样本。

SFT Samples50

5 类任务构造出的训练样本。

Split40 / 5 / 5

train / val / test。

Metrics6

覆盖格式、属性、证据、风险和动作建议。

这里的 6 项指标均为 1.0,定位是小样本链路验证,不包装成真实大模型公开成绩;它证明的是数据构造、推理输出、解析和评测闭环已经能稳定运行。

脚本职责与数据流

normalize_product.py字段标准化从 title、category、description、attributes、ocr_text 等字段中取可用信息,保证样本结构统一。
image_utils.py图片路径治理normalize_image_paths 与 image_paths_exist 负责把相对路径、列表字段和文件存在性统一处理。
sft_common.pySFT 共享模板first_image、product_context、make_sample 让 5 类任务共用 image、prompt、assistant、metadata 格式。
任务脚本样本目标输出关注点
build_sft_attribute.py属性抽取类目、颜色、材质、风格等结构化字段。
build_sft_evidence.py视觉证据把属性判断对应到图像/OCR/描述证据。
build_sft_risk.py风险识别使用 infer_risk 生成风险类型和解释。
build_sft_selling_points.py卖点生成从图文信息提炼适合电商场景的表达。
build_sft_agent.py运营动作生成补图、改标题、补属性等 agent action。
prompts.py任务 prompt 构造build_prompt 按 task、title、category、ocr_text、description 生成统一输入。
qwen3vl_infer.py模型适配层Qwen3VLInferencer 保留真实模型接口,同时内置 heuristic backend 用于链路 smoke test。
parse_json.py输出解析parse_model_json 与 utils/json_utils 负责从模型文本中提取可评测 JSON。
{
  "input": "商品图像 + 标题 + OCR + 类目",
  "prompt": "请完成 attribute / evidence / risk / selling_points / agent_action",
  "assistant": "结构化 JSON 输出",
  "prediction": "baseline.jsonl",
  "next": "run_eval.py"
}
json_valid_rate
1.00
category_accuracy
1.00
attribute_f1
1.00
evidence_consistency
1.00
risk_macro_f1
1.00
agent_action_accuracy
1.00
  • metrics_json.py检查输出是否可被稳定解析。
  • metrics_attribute.py评估类目准确率与属性 F1。
  • metrics_evidence.py比较视觉证据和结构化属性的一致性。
  • metrics_risk.py / metrics_agent.py覆盖风险识别和运营动作建议。
split_dataset.py切分数据生成 train_sft、val_sft、test_sft。
convert_to_qwenvl.py微调格式convert_sample 把 image + conversation 转成 Qwen-VL 训练格式。
tests/test_*.py回归测试覆盖预处理、SFT builder、推理、指标、转换和工具函数。
data/processed/all_sft.jsonl data/outputs/predictions/baseline.jsonl data/outputs/metrics/metrics.json qwenvl_train.json tests/test_sft_builders.py tests/test_qwenvl_conversion.py

运行链路

  1. 商品索引raw products -> normalized product index。
  2. SFT 构造五类任务 builder 汇总为 all_sft.jsonl。
  3. 数据切分40 / 5 / 5,用于训练、验证和测试。
  4. 批量推理batch_infer 生成 baseline predictions。
  5. 指标评测run_eval 输出 metrics.json。
  6. 微调入口convert_to_qwenvl 生成 Qwen-VL 格式。

样本与局限

样本展示

当前素材主要用于说明图文输入如何进入任务链路。页面展示的是小样本工程闭环,而不是把 heuristic baseline 当成真实模型能力。

10 products 50 SFT samples 5 task types 6 metrics
ABO 灰色针织休闲鞋商品理解样本
商品样本用于属性、证据、风险和卖点等任务的图像输入。
ABO 家居床榻场景商品理解样本
图文对齐样本通过 product_context 统一图像、标题、OCR 和描述。