当前位置: 首页 > news >正文

多模态大模型技术入门:让 AI 看见世界

多模态大模型技术入门让 AI 看见世界前言人类感知世界的方式是多模态的——我们能看到图像、听到声音、读到文字。多模态大模型Multimodal LLM正是让 AI 拥有类似能力的关键技术。从 GPT-4V 到 Claude 3从开源的 LLaVA 到 CogVim多模态大模型正在快速改变 AI 的应用格局。我最近在一个项目中集成了多模态能力让 AI 能够理解和分析用户上传的图片。这段经历让我对多模态技术有了更深入的理解。今天分享一些多模态大模型的基础知识和实战经验。什么是多模态模态的定义模态Modality指的是信息的不同形式或来源。常见的模态包括文本Text文字信息图像Image视觉信息音频Audio声音信息视频Video时空连续的视觉和声音信息语音Speech口语信息多模态学习的目标多模态学习旨在构建能够处理和关联多种模态信息的 AI 系统。核心挑战包括对齐Alignment不同模态的信息如何对应融合Fusion如何整合不同模态的信息翻译Translation如何从一种模态转换到另一种多模态模型架构经典架构Encoder-Decoder文本 → Text Encoder → Feature → Decoder → 输出 ↑ 图像 → Vision Encoder ───────────┘这是最直观的架构各模态分别编码然后在某个层面融合共同输入解码器生成输出。CLIP 范式CLIPContrastive Language-Image Pre-training开创了图文对齐的预训练范式import torch import torch.nn as nn class CLIP(nn.Module): def __init__(self, vision_model, text_model): super().__init__() self.vision_model vision_model self.text_model text_model self.vision_projection nn.Linear(vision_dim, embed_dim) self.text_projection nn.Linear(text_dim, embed_dim) self.temperature nn.Parameter(torch.ones([]) * 2.6592) def encode_image(self, image): features self.vision_model(image) features self.vision_projection(features) features features / features.norm(dim-1, keepdimTrue) return features def encode_text(self, text): features self.text_model(text) features self.text_projection(features) features features / features.norm(dim-1, keepdimTrue) return features def forward(self, images, texts): image_features self.encode_image(images) text_features self.encode_text(texts) # 计算相似度 logit_scale self.temperature.exp() logits_per_image logit_scale * image_features text_features.t() logits_per_text logit_scale * text_features image_features.t() return logits_per_image, logits_per_textLLaVA 架构LLaVALarge Language and Vision Assistant是开源多模态模型的代表图像 → Vision Encoder ( CLIP ) → Linear Projection → LLM ↑ 文本 → Tokenizer → LLM → 输出 │关键组件Vision Encoder使用预训练的 CLIP ViTProjection将图像特征映射到 LLM 的输入空间LLM大语言模型负责理解和生成class LLaVA(nn.Module): def __init__(self, vision_model, visionProjection, llm, tokenizer): super().__init__() self.vision_model vision_model self.vision_projection visionProjection self.llm llm self.tokenizer tokenizer def forward(self, images, input_ids, labelsNone): # 1. 图像编码 image_features self.vision_model(images) # 2. 投影到 LLM 空间 image_embeddings self.vision_projection(image_features) # 3. 获取文本 embeddings text_embeddings self.llm.get_input_embeddings()(input_ids) # 4. 融合图像和文本 # 在 [IMG] token 位置替换为图像 embeddings combined_embeddings self._combine_embeddings( text_embeddings, image_embeddings ) # 5. LLM 前向传播 outputs self.llm( inputs_embedscombined_embeddings, labelslabels ) return outputs主流多模态模型GPT-4VOpenAI 的 GPT-4 with Vision 能够理解图片内容并回答问题分析图表和数据阅读文档和截图识别手写内容使用方式from openai import OpenAI client OpenAI() response client.chat.completions.create( modelgpt-4-vision-preview, messages[ { role: user, content: [ {type: text, text: 描述这张图片}, { type: image_url, image_url: {url: https://example.com/image.jpg} } ] } ], max_tokens300 )Claude 3Anthropic 的 Claude 3 系列Haiku、Sonnet、Opus都具有视觉能力支持高达 200K 上下文优秀的图表理解能力准确的文本识别OCR开源多模态模型模型参数量特点LLaVA 1.57B/13B开源先驱效果好CogVLM17B国产优秀模型Qwen-VL7B/14B阿里开源支持中文InternVL20B腾讯开源对标 GPT-4VMiniGPT-47B轻量级多模态BakLLaVA7BMistral LLaVAHuggingFace 多模态实战使用 Transformers 加载多模态模型from transformers import AutoProcessor, AutoModelForCausalLM from PIL import Image import requests # 加载模型和处理器 model_name llava-hf/llava-1.5-7b-hf processor AutoProcessor.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float16, device_mapauto ) # 准备输入 prompt 描述这张图片的内容 image_url https://example.com/image.jpg image Image.open(requests.get(image_url, streamTrue).raw) inputs processor( textprompt, imagesimage, return_tensorspt ).to(cuda) # 生成 generate_ids model.generate( **inputs, max_length200 ) output processor.batch_decode( generate_ids, skip_special_tokensTrue )[0] print(output)微调多模态模型from peft import LoraConfig, get_peft_model from transformers import TrainingArguments, Trainer # 配置 LoRA lora_config LoraConfig( r8, lora_alpha16, target_modules[q_proj, v_proj, mlp.gate_proj, mlp.up_proj], lora_dropout0.05, biasnone ) # 应用 LoRA model get_peft_model(model, lora_config) # 训练配置 training_args TrainingArguments( output_dir./output, num_train_epochs3, per_device_train_batch_size4, gradient_accumulation_steps4, learning_rate2e-4, fp16True, logging_steps10, ) trainer Trainer( modelmodel, argstraining_args, train_datasettrain_dataset, data_collatordata_collator, ) trainer.train()多模态应用场景文档理解def analyze_document(image_path: str) - dict: 分析文档图片 prompt 请分析这张文档图片提取以下信息 1. 文档类型发票、合同、报告等 2. 关键信息日期、金额、签名等 3. 文档的主要内容摘要 以结构化 JSON 格式输出 image Image.open(image_path) inputs processor( textprompt, imagesimage, return_tensorspt ).to(cuda) outputs model.generate(**inputs, max_length500) result processor.decode(outputs[0], skip_special_tokensTrue) return parse_json_response(result)图表分析def analyze_chart(image_path: str) - dict: 分析图表 prompt 这张图表展示的是什么数据 请提取 1. 图表类型折线图、柱状图、饼图等 2. X 轴和 Y 轴表示的内容 3. 主要趋势和发现 4. 关键数据点最大值、最小值等 # ... 类似实现视觉问答def visual_qa(image_path: str, question: str) - str: 基于图片回答问题 prompt f图片显示了什么\n\n问题{question} image Image.open(image_path) inputs processor( textprompt, imagesimage, return_tensorspt ).to(cuda) outputs model.generate(**inputs) return processor.decode(outputs[0], skip_special_tokensTrue)多模态技术挑战幻觉问题多模态模型有时会生成与图片内容不符的描述。缓解方法def reduce_hallucination(image_path: str, prompt: str) - str: 减少多模态幻觉 # 使用更严格的 prompt strict_prompt f{prompt} 重要提醒 1. 只描述图片中确实存在的内容 2. 如果不确定请说图片中看不清... 3. 不要编造任何信息 回答 # ... 实现长文本输出多模态模型在生成长文本时可能出现重复或偏离。解决方案包括限制 max_length使用更强的解码策略Beam Search、Diverse Beam后处理过滤重复内容总结多模态大模型代表了 AI 发展的重要方向。通过让模型同时理解和处理多种模态的信息我们能够构建更加智能和实用的应用。关键要点CLIP 范式是多模态学习的基础LLaVA 等开源模型让多模态更加可及HuggingFace Transformers 提供了统一的多模态 APILoRA 等技术可以用于多模态模型的微调多模态技术仍在快速发展中期待看到更多创新应用。
http://www.zskr.cn/news/1341434.html

相关文章:

  • 2026年成都本地打印机租赁公司实力排行盘点:佳能复印机租售服务商/成都办公设备电脑租赁供应商推荐/成都彩色打印机出租/选择指南 - 优质品牌商家
  • 2025-2026年上海吉日搬场有限公司电话查询:预约前请核实服务范围与收费标准 - 品牌推荐
  • 大规模数据降维中迹比率问题与非负矩阵分解的快速算法【附代码】
  • 芬兰语语音合成落地难题全解析,从API限流、重音标记缺失到Sami语系兼容性解决方案
  • 从物理光学到AI生成:揭秘玻璃折射率n=1.52如何映射为--s 750 + --iw 1.8的底层逻辑
  • 2026现阶段保山岩板选购指南:核心供应商深度评估与决策清单 - 2026年企业推荐榜
  • 2025-2026年中国办公家具十大厂家推荐:十大品牌专业评测企业采购性价比高选择指南 - 品牌推荐
  • 键芯造物:百元内的设计感键帽,凭什么让玩家反复回购? - 小狐狸在吃饭
  • Agent爆发才刚开始,skill+Hermes还只是L3级agent
  • Kimi LeetCode 2547. 拆分数组的最小代价 C++实现
  • 2026 最新最全行业测评及攻略|全球/国内GEO公司排名前十,看谁在主宰AI流量时代入口? - 互联网科技品牌测评
  • 教育/教培行业专属:2026企业微信SCRM选型指南
  • 零售/电商/门店连锁行业专属:企业微信SCRM选型指南
  • 为开源工具OpenClaw配置Taotoken作为后端模型提供商
  • 2026年GEO优化服务商/公司/厂家最专业靠谱推荐:国内五家知名主流头部优选服务商综合解读+GEO优化FAQ - 互联网科技品牌测评
  • AutoGen实战:微软的多Agent对话编程指南
  • AcFunDown终极指南:三步学会免费下载A站视频的完整教程
  • py之代码实现获取字符串中每个字符的unicode值
  • c语言之pubnub库代码示例
  • 进程与线程管理原理
  • 2026年5月游戏鼠标品牌推荐:十大排行评测电竞防误触专业性价比高市场份额 - 品牌推荐
  • 2026哈尔滨过期虫草回收服务商合规排行盘点:重庆发霉虫草回收/重庆同仁堂虫草回收/重庆老酒回收/重庆过期虫草回收/选择指南 - 优质品牌商家
  • Windows系统终极优化神器:3步完成一键安装与系统管理
  • “#FF6B6B”能直接输入吗?Midjourney色彩控制的5个致命误区(第3个90%用户正在踩坑)
  • 【Midjourney洛可可风格创作指南】:20年AI艺术总监亲授7大黄金参数+3类易踩雷区
  • Django 从 0 到 1 打造完整电商平台:个人中心与用户信息修改
  • day031
  • 2026年当前天津至周边城市干线直达物流服务深度解析与厂家推荐 - 2026年企业推荐榜
  • 2025-2026年马赛克瓷砖品牌推荐:五大评测市场份额特点厨房卫浴防霉耐脏注意事项 - 品牌推荐
  • 聊一聊5家软件许可优化公司,哪个更适合你?