ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何把发票、截图和视频帧喂给 Clef-Flash:images 与 videos 多模态输入实战教程(附示例)

如何把发票、截图和视频帧喂给 Clef-Flash:images 与 videos 多模态输入实战教程(附示例) 如何把发票、截图和视频帧喂给 Clef-Flashimages 与 videos 多模态输入实战教程附示例【免费下载链接】clef-flash项目地址: https://ai.gitcode.com/hf_mirrors/Cloudflare/clef-flashClef-Flash 是 Cloudflare 开源的 9B 多模态决策模型它能读取文本、JSON、图片images和视频帧videos并在一次前向推理里为每道题目输出各选项的概率。本教程手把手教你如何把发票、截图和视频帧喂给 Clef-Flash用images与videos多模态输入参数完成实战并附可运行示例。 先搞懂Clef-Flash 多模态输入是什么和普通看图说话的视觉大模型不同Clef-Flash 是一个决策模型你给它一个状态一段文字、一段 JSON、一张图或一段视频加一组带选项的题目它直接为每个选项算出概率而不需要你先生成自由文本再去解析。它的多模态输入由两个字段承载字段能喂什么典型场景imagesPIL 图像列表发票、收据、报错截图、单据照片videos视频帧数组列表监控视频、操作录屏、视频帧序列换句话说发票是一张图视频是一段帧它们都能和文字一起被看懂并参与决策。相关的编码逻辑都集中在 joint_schema_model.py 中图片/视频编码在_encode_media里完成。️ 一键准备环境依赖与模型加载步骤1安装运行所需依赖Clef-Flash 在torch 2.11transformers 5.10.2上验证通过只要用图片或视频就还需要pillow。pip install torch transformers huggingface_hub pillow2三步加载 Clef-Flash 模型用snapshot_download把模型权重拉到本地再调用仓库自带的load_release_model一键加载骨干网络、联合 schema 头和视觉处理器import sys import torch from huggingface_hub import snapshot_download path snapshot_download(Cloudflare/clef-flash) sys.path.insert(0, path) from joint_schema_model import load_release_model model, processor load_release_model(path, devicecuda)processor负责把图片、视频帧变成模型能吃的张量后面喂多模态输入时一定要把它传进去否则无法识别图片/视频。处理器参数细节见 processor_config.json。 把发票与截图喂给 Clef-Flashimages 参数完整示例这是最实用的场景——把一张发票图片或报错截图连同一段说明一起提交让模型做判断。核心做法把 PIL 图像放进record[images]再把processor传给encode_record。from PIL import Image from joint_schema_model import encode_record, collate_records record { state: {task: 请审核这张发票}, images: [Image.open(invoice.jpg)], # ← 发票 / 截图就放这里 questions: { overdue: {type: noul, instructions: 这张发票是否已逾期}, vendor: { type: choice, instructions: 供应商属于哪个类别, criteria: {office: 办公用品, it: IT 设备, other: 其他}, }, }, } # 编码把图片占位符 问题 状态拼成模型输入 encoded encode_record(processor.tokenizer, record, processorprocessor) batch collate_records([encoded], processor.tokenizer.pad_token_id, torch.device(cuda)) with torch.inference_mode(): logits model(batch)[0] # 逐题打印每个选项的概率 for q, q_logits in zip(encoded.questions, logits): probs q_logits.float().softmax(-1).tolist() print(q.question_id, dict(zip(q.option_ids, probs)))要点速记images是一个列表可以一次放多张图多张发票、多张截图。每道题的type可以是noul是/否、choice命名选项或score有序档位见encode_record。想控制输入长度可给encode_record传max_length默认 16384和max_state_tokens。️ 把视频帧喂给 Clef-Flashvideos 参数使用技巧视频不是直接塞一个.mp4而是拆成帧数组通常用 OpenCV 读成 numpy 数组后放进record[videos]。import cv2 cap cv2.VideoCapture(surveillance.mp4) frames [] while True: ok, frame cap.read() if not ok: break frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) cap.release() record { state: 请判断这段监控视频里是否出现异常行为。, videos: [frames], # ← 一段视频 一个帧数组放列表里 questions: { anomaly: {type: noul, instructions: 视频里是否出现异常行为}, }, } encoded encode_record(processor.tokenizer, record, processorprocessor)两个实用调参点视频处理器默认按fps2抽帧、最多768帧、最少4帧见 processor_config.json 里的video_processor。长视频想控制抽帧数量把参数放进media_kwargs即可record[media_kwargs] {fps: 2, max_frames: 768}images与videos可以在同一条记录里同时出现编码时会按图片占位符在前、视频占位符在后的顺序拼接。 文本与图片视频混合批处理一次跑完Clef-Flash 支持把纯文本记录和多模态记录混在同一个 batch里无需拆分。只需把多条encoded记录一起collaterecords [ {state: 纯文本订单, questions: {...}}, # 无图无视频 {state: 审核发票, images: [img1], questions: {...}}, # 带图 ] encoded_list [encode_record(processor.tokenizer, r, processorprocessor) for r in records] batch collate_records(encoded_list, processor.tokenizer.pad_token_id, torch.device(cuda))这让批量处理一堆发票 一堆文字工单这类任务变得非常自然。 Clef-Flash 多模态输入常见问题排查清单现象可能原因解决思路报需要 processor错误带了图片/视频却没传processor调用encode_record时加上processorprocessor图片不被识别忘记放images字段 / 传的不是 PIL 图确认Image.open(...)读出来的是 PIL 图像并放进images列表视频帧太多、显存吃紧帧数过高通过media_kwargs调小max_frames/fps输出概率和为 1 但选错选项描述不够清晰把criteria里每个选项的说明写得更具体输入超长被截断状态文本过大用max_state_tokens限制状态长度✅ 小结Clef-Flash 多模态输入三步走准备装好torch / transformers / pillow用load_release_model拿到model和processor。喂入发票、截图放images视频帧放videos并始终传入processor。决策encode_record→collate_records→ 前向推理直接得到每题每个选项的概率。把图片变成能被决策的输入就是 Clef-Flash 多模态输入的全部精髓。想进一步看完整调用方式可阅读 README.md 的 Images and video 章节或直接浏览 joint_schema_model.py 源码。【免费下载链接】clef-flash项目地址: https://ai.gitcode.com/hf_mirrors/Cloudflare/clef-flash创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表