【多模态】多模态大模型MiniCPM-V技术学习

目前性价比最高的多模态模型

Minicpm-V-2.6参数8B,int4版本推理显存仅7GB,并且在幻觉数据集上效果好于其他模型,测试下来效果非常好,官方演示里面还给出了手机上端侧运行的图片和视频推理示例
p.s.Qwen2-VL和Minicpm-V-2.6头对头对比报告上看效果在某些方面超过cpm,应该主要是OCR方面,自己测试下来cpm的OCR的效果不是特别好,但是cpm更擅长图片内容理解
p.s. Minicpm-3.0(4B)纯语言模型出来了,效果对标gpt-3.5,测了下效果确实比较好,语义理解上比Qwen-2.5-3B效果好,比Minicpm-2.0好很多,啥时候加成到Minicpm-V上得到更小更强的多模态模型(Minicpm-V的LLM目前是Qwen2,大小7B)
p.s.Qwen2.5-VL这几天出来了,更新好快啊,不知道效果怎么样,学…学不过来啊
在这里插入图片描述

模型架构 ViT+LLM

Minicpm-V-2.6采用的图片编码器是siglip-400M,LLM是qwen2-7B
Minicpm-V整体架构
具体而言,图片切片输入siglip得到图片向量,经过resampler进行压缩后得到最终的图片编码;图片占位符和文本输入到LLM的embedding模块中编码得到文本编码,最后将图片编码插入到对应的图片占位符的位置得到最终的vllm编码,输入LLM解码得到文本输出
Minicpm-V流程

图片切片

Minicpm-V的一个创新是额外设计了图片切片的方式,深入探究了切片方式差异对结果的影响。一方面,图片编码器能识别的最大分辨率为448*448,输入图片不一定正好这么大,也不一定正好是正方形的。超过大小的部分如果直接放缩细节损失较多,直接填充容易出现幻觉。并且图片不一定是方形的,直接缩放为方形,形变对效果影响较大。此外,如果进行图片切片,采用类似声音片段切片重叠切片的方式,会导致模型在数物体数量上出现幻觉。
在这里插入图片描述

图片切片方式

核心的思想:让每个小图的尺寸尽量吻合ViT预训练的分辨率,尽量保持原图长宽比

  • 输入图片如果比ViT预训练的分辨率大,需要把它切成子图,每个子图缩放为ViT的分辨率后进行编码
  • 给定输入图片原始大小为 [ W I , H I ] [W_I,H_I] [WI,HI] V i T ViT ViT预训练的分辨率为 [ W V , H V ] [W_V,H_V] [WV,HV],先粗略计算能够把输入图片切成 N N N份,例如 N = ⌈ 6.5 ⌉ N=\lceil 6.5 \rceil N=6.5时取 N = 6 N=6 N=6 N = 8 N=8 N=8进行尝试,计算所有可能的切分 m × n = N m \times n=N m×n=N
  • 判断这些切分方式组合中,哪种方式缩放最能保持图片的长宽比,找到让 S ( m , n ) S(m,n) S(m,n)值最大的 m × n m \times n m×n的切割方式
    S ( m , n ) = − ∣ l o g W I / m H i / n − l o g W V H V ∣ S(m,n)=-|log\frac{W_I/m}{H_i/n}-log\frac{W_V}{H_V}| S(m,n)=logHi/nWI/mlogHVWV
  • 第一个切片取原图,并把原图大小缩放为 [ W V , H V ] [W_V,H_V] [WV,HV]
  • 后面的切片通过切割得到 m × n m \times n m×n个子图,每个子图大小都缩放为 [ W V , H V ] [W_V,H_V] [WV,HV]
  • 把这 1 + m × n 1+m \times n 1+m×n张图输入到 V i T ViT ViT
    在这里插入图片描述

图片和文本编码流程

默认参数:Siglip的输入图片尺寸image_size是448*448,patch_size=14;LLM的embedding的维度为3584

  • 如果输入一张比较大的图片,和对应文本“what”,首先会解析输入,看是否有图片
  • 解析时会进行一些替换和预留,得到的input_ids会是这样:
    在这里插入图片描述
  • 只有1张图片,所以<image_id>只有1个;图片切成了1+8张slice,所以有1+8和image/slice标记
  • 可以看到,里面有<unk>这样的占位符,这些进行文本编码后对应的向量后续会填入为图片向量
  • <unk>有64个,也就是每个图片切片会占用64个数量的文本token

向量长度和大小

  • input_ids的长度为619
  • 图片输入模型后输入siglip进行图片编码,patch_size=14,image_size=448,对于单个大小为[3,H,W]的切片计算 tgt_size =[H//14,W//14],tgt_sizes=[[22,47], [31,33], …, [31,33]]
  • 9个图片切片编码后得到的图片向量 vision_embedding [9,1034,1152] (22 × \times × 47=1034, 31 × \times × 33 =1023)
  • 接着为了减小输入到LLM模块的向量大小,图片的编码结果会先进行压缩,使用一个类似Q-Former的resampler模块对vision_embedding 压缩(num_queries=64)
  • 压缩后得到的vision_embedding [9,64,3584]
  • 把vision_embedding 填入到文本的embedding对应位置得到最终的vllm_embedding [1,619,3584]

偏好对齐技术

整体训练包含三个阶段,第三个截断会进行偏好对齐

RLHF-V

  1. 如果只是使用DPO,一张图片给模型回答X和Y,告诉模型要accept Y,refuse X,模型学习效率低
  2. 可能X并不是全错,模型不知道Y比X好在哪里;当X和Y都有错误时候,标注也会模糊不确定X和Y谁好
  3. 如果把模型给出的回答A中错误的地方针对性地改正,得到A*,再对改正的位置设置更高的权重让模型学习效果会更好
    在这里插入图片描述

RLAIF-V

RLAIF-V包含3个步骤,这3个步骤为一个round,可以不停执行。回答和反馈是基于当时模型的分布,不是预先设定的人类标注;并且LLM和MLLM可以使用其他模型或者自身完成,无需人工,具体步骤为:

  1. 产生回答:使用高温度,让模型输出10个回答
  2. 收集反馈:(1)分而治之,对于每个回答,拆分为子句(例如用句号分割); (2) 把子句输入给任意的LLM,让LLM生成针对子句进行的是 或者 否的提问(降低问题难度,弱的模型也能解决);(3)把图片和生成的问题拿去问多模态大模型,让多模态大模型打分,对于一个回答,算出最终的分数;
  3. DPO:从10个回答中随机抽取一对对的回答对(分数的大小关系决定accept还是refuse)
    在这里插入图片描述

Minicpm-V相关论文

  • MiniCPM: Unveiling the Potential of Small Language Models with Scalable Training Strategies. 2024
  • RLHF-V: Towards Trustworthy MLLMs via Behavior Alignment from Fine-grained Correctional Human Feedback. CVPR 2024
  • LLaVA-UHD: an LMM Perceiving Any Aspect Ratio and High-Resolution Images. 2024.
  • Large Multilingual Models Pivot Zero-Shot Multimodal Learning across Languages. ICLR 2024.
  • MiniCPM-V: A GPT-4V Level MLLM on Your Phone. 2024.

ref

具体信息可以参考对应的论文、Minicpm的飞书技术文档、b站的openbmb的视频号等

### MiniCPM-V 的语音和视频解码技术支持与实现方式 尽管当前关于 **MiniCPM-Llama3-V2.5** 的主要讨论集中在其 OCR 和空间理解能力上[^1],但在更广泛的多模态领域中,该系列模型也具备一定的语音和视频解码功能。以下是对其可能的技术支持和实现方式进行分析: #### 一、语音解码的支持和技术细节 对于语音解码部分,虽然具体文档未提及 MiniCPM-V 的语音模块详情,但从类似的多模态大模型设计来看,通常会采用基于 Transformer 或改进版架构的端到端语音处理框架。这种框架能够直接将音频信号映射为文本或其他形式的表示。 - **前端特征提取**: 使用梅尔频率倒谱系数 (MFCC) 或其他先进的声学特征提取方法来预处理原始音频数据[^2]。 - **注意力机制增强**: 利用自注意力机制捕获长时间依赖关系,在语音转文字任务中表现出色。这使得模型可以更好地理解和解析复杂的语义结构。 - **微调策略**: 如果存在特定领域的语音数据集,则可以通过迁移学习的方式对该通用模型进一步优化以适应不同场景下的应用需求。 #### 二、视频解码的功能特点及其背后原理 针对视频解码而言,考虑到现代计算机视觉技术的发展趋势以及实际工程实践中的常见做法,推测如下几点可能是其实现的关键要素之一: - **时空建模能力**: 高效地对连续帧间变化规律进行表征至关重要。为此引入三维卷积神经网络(3D CNNs),或者通过扩展二维CNN至时间维度上来构建更加灵活有效的解决方案;同时还可以结合光流估计等辅助手段提升动作检测精度。 - **跨模态融合方案**: 当涉及到联合处理图像序列与其他非视觉信息源时(比如同步采集的声音片段),往往需要精心设计交叉注意层(cross-modal attention layers),从而促进异构数据间的交互作用并最终提高整体性能水平. ```python import torch.nn as nn class VideoDecoder(nn.Module): def __init__(self, input_dim=512, output_dim=768): super().__init__() self.conv_3d = nn.Conv3d(input_dim, output_dim, kernel_size=(3, 3, 3)) def forward(self, x): out = self.conv_3d(x) return out ``` 上述代码展示了一个简单的三维卷积操作作为视频解码器的一部分,用于捕捉视频的时间动态特性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值