多模态大模型-MiniCPM-V

news2024/11/18 5:26:54

1. 简介

本文主要探索如何在性能和效果之间的权衡,希望能在合适的性能下,模型效果有大幅的提升。主要贡献点有:

  • 通过模型结构,数据,训练策略等优化,让MiniCPM-Lllama3-V 2.5[1]在OpenCompass评测上超过了GPT-4V-1106,Gemini Pro和Claude3;
  • 有很强的OCR能力,在1.8M任意分辨率图片数据的支持下,使MiniCPM-Llama3-V 2.5在OCRBench上超过了GPT-4V,Gemini Pro和Qwen-VL-Max。支持table到markdown等能力;
  • 在RLAIF-V[3]和RLHF-V[2]技术加持下,让MiniCPM模型有更强的真实表现,幻觉问题低于GPT-4V-1106等;
  • 支持多语言;
  • 有效的端侧模型部署;

2. 模型

在这里插入图片描述

2.1 模型结构

  • Adaptive Visual Encoding
    • 一个好的视觉编码应该尽量保持原始输入的长宽比及视觉信息;
    • Image Partition:假定一个图像分辨率为 ( W I , H I ) (W_I,H_I) (WI,HI),ViT预训练的图片分辨率为 ( W v , H v ) (W_v,H_v) (Wv,Hv),那么理想的patch数是 N = W I ∗ H I W v ∗ H v N=\frac{W_I*H_I}{W_v*H_v} N=WvHvWIHI。在得到总共的patch数N后,需要选择合适的 m , n m,n m,n,且 N = m ∗ n N=m*n N=mn。为了得到合适的m和n,可以通过下面的公式:
      在这里插入图片描述
      在这里插入图片描述
    • Slice Encoding:因为可能截取的patch大小跟ViT输入size不一致,所以需要对每个patch按比例进行resize,然后对ViT的位置编码进行插值来适应patch的比例。
    • Token Compression:在经过ViT之后,每个patch会得到1024个token。因为token太大,会使用perceiver resampler进行压缩。在MiniCPM V1和V2中token数被压缩到64个token,在MiniCPM-Llama3-V2.5中token数被压缩到96个token。
    • Spatial Schema:用和<\slice>作为每个图的开始和结尾,图中每行用\n分割。
  • ViT:使用SigLIP SoViT-400m/14作为ViT,从llava等模型的评测来看,目前使用这个是效果最好的。
  • compression layer:perceiver resampler
  • LLM:eg. llama3 or Qwen2

3. 训练

模型训练包括三个阶段,pre-training,supervised fine-tuning和RLAIF-V。

3.1 Pre-training

  • Stage-1
    • 目的和动作:训练compression layer,能连接visual encoder和LLM;随机初始化compression layer参数,固定住其他模块参数。
    • 参数:ViT分辨率设置为224*224;
    • 数据:随机选择200M caption数据,会执行数据清理,包括删除相关性差的图像-文本对和格式错误的数据。具体数据如下:
      在这里插入图片描述
  • Stage-2
    • 目的和动作:增加预训练输入图片的分辨率,从224224到448448,仅训练visual encoder。
    • 数据:从上表中选择200M的caption数据。
  • Stage-3
    • 目的和动作:为了适应不同高分辨率图片的比例,训练ViT和compression layer。
    • 数据:使用OCR和caption数据
  • Caption Rewriting:因为一些caption数据质量比较低,所以使用模型对caption进行改写。例如,GPT-4模型。
  • Data Packing:将长度类似的sample放到一个sample中,增加模型的训练效率。同时需要修改position ids和attention mask策略避免不同样本之间互相干扰。
  • Multilingual Generalization:在pretrain阶段仅使用english和chinese多模态数据进行训练,在sft阶段,通过high-quality multilingual supervised fine-tuning对齐到目标语言。VisCPM证明了多模态能力可以通过强大的LLM进行有效的泛化。

3.2 Supervised fine-tuning

  • Trainable Modules:训练ViT,compression layer和LLM
  • Data:
    • 部分1: 增强模型的基本能力,包括短回复的传统的QA和caption数据;
    • 部分2: 增强模型生成详细回复和指令遵循能力,包括长回复的复交交互数据。
    • 在sft中,两部分数据会拼接起来,按顺序输入到模型中。
    • 对MiniCPM-Llama3-V2.5来说,从Cauldron dataset中抽取2M数据用于知识增强,搜集36种语言共90K数据用于增强多语言能力。

3.3 RLAIF-V

在这里插入图片描述

为了缓解幻觉问题,增加模型的可靠性,搜集高质量的反馈数据用于DPO训练。

  • Response Generation:用待对齐的模型对每个prompt生成10个response
  • Feedback Collection:使用divide-and-conquer策略用于回复打分,每个回复会被llama3-8B分成多个claims,然后将每个claims转成qa问题用开源模型来打分,最后,用不合理的claims数的负数当作最后的response的分数。
  • Direct Preference Optimization:构建了6K偏好数据

4. 结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 总结

  • 模型结构层面和llava类似,只不过connection layer一个是MLP,一个是perceiver resampler,但对模型效果影响不大;
  • 预训练阶段仅训练vit和compression layer;
  • 多语言能力仅靠LLM和sft阶段;
  • 为了降低幻觉使用了RLAIF-V;

目前MiniCPM-V2.6已经发布了,有了更强的OCR,多语言,可靠性,因为目前technical report还没发布,技术细节还不清楚。

6. 参考文献

  • [1] MiniCPM-V: A GPT-4V Level MLLM on Your Phone
  • [2] RLHF-V: Towards trustworthy MLLMs via behavior alignment from fine-grained correctional human feedback
  • [3] RLAIF-V: Aligning MLLMs through open-source AI feedback for super GPT-4V trustworthiness

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

03:手动可变电阻

可变电阻 1、电位器2、变阻器/数字电位器2.1&#xff1a;变阻器2.2&#xff1a;数字电位器 3、电位器锥度4、寄生电感/电容 1、电位器 如上图所示&#xff1a;将可变的电阻作为分压器&#xff0c;那么这种可变的电阻就是电位器。例如&#xff1a;将L1连接负极&#xff0c;L3连接…

SQLMAP windows10 安装记录

1.Windows系统下安装Sqlmap&#xff0c;需要安装python环境 python下载和安装 官方下载 https://www.python.org/downloads 建议直接下载安装版&#xff1a;installer 最后到这个界面正常是成功了&#xff0c;但也要校验一下 进入windows 命令窗口 正常输入你安装的python 版本…

OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植指南(二)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统芯片移植指南(一) Op…

数据库与表的操作

目录 1. 库的操作 1.1创建数据库案例 1.2字符集和校验规则 1.2.1查看系统默认字符集以及校验规则 1.2.2 查看数据库支持的字符集 1.2.3查看数据库支持的字符集校验规则 1.2.4校验规则对数据库的影响 1.3.1查看数据库 1.3.2显示创建语句 1.3.3修改数据库 1.3.4 数据…

将一句英文颠倒输出

例如&#xff1a; 输入&#xff1a;s “i am from beijing" 输出&#xff1a;”beijing form am i“ #include <stdio.h> #include <string.h>//i am form nanjing //ginjnan mrof ma i //nanjing form am i//逆序算法(首尾互换) void Reserve(char *s,in…

windows 创建新用户,并分配到指定组

右击电脑 -> 点击管理 在右边右击&#xff0c;选择新用户&#xff0c;输入相关信息创建 创建用户后&#xff0c;选择用户&#xff0c;右击&#xff0c;选择属性&#xff0c;添加 点击高级 点击立即查找&#xff0c;可以搜索出所有可用的组&#xff0c;为其选择即可

mosh java 2.4 inheritance继承

1.面向对象编程的第三个特点 继承 继承的好处 java不能继承多个父级 代码文件结构 1.main.java package org.example; //package org.codewithme;//import org.example.UIControl;//TIP To <b>Run</b> code, press <shortcut actionId"Run"/> or /…

《深度学习》PyTorch 手写数字识别 案例解析及实现 <上>

目录 一、了解MINIST数据集 1、什么是MINIST 2、查看MINIST由来 二、实操代码 1、下载训练数据集 2、下载测试数据集 运行结果&#xff1a; 3、展示手写数字图片 运行结果&#xff1a; 4、打包图片 运行结果&#xff1a; 5、判断当前pytorch使用的设备 1&#xff…

RK3568 外接摄像头预览方向错误

1.测试发现摄像头预览方向被旋转了90度 2.问题原因: device\rockchip\common\external_camera_config.xml 配置文件旋转了90度: 3.解决对策 修改orientation为0度

MultiSnapRecyclerView:让Android RecyclerView的滚动停靠更灵活

在Android应用开发中&#xff0c;RecyclerView是一个强大且灵活的组件&#xff0c;用于展示大量数据集合。然而&#xff0c;标准的RecyclerView只支持单一的滚动停靠点&#xff0c;这在某些场景下可能不够灵活。为了解决这个问题&#xff0c;TakuSemba开发了一个名为MultiSnapR…

Vue3+TS项目给el-button统一封装一个点击后转圈效果的钩子函数按钮防抖

前言 每个按钮都要单独定义一个loading变量&#xff0c;并且在接口请求前修改为true&#xff0c;接口响应后再修改为false&#xff0c;封装后这段重复的逻辑就可以统一管理不用每次都写一遍了。 效果 新建一个公共的src\common.ts import { ref } from "vue"expor…

Apache-wed服务器环境的安装

一。安装httpd并且开启httpd yum install httpd systemctl start httpd 二。关闭防火墙 systemctl stop firewall 三。常规配置wed服务 mkdir /www vim index.html&#xff08;里面写入自己的内容&#xff09; chmod 755 index.htm chmod 755 /www vim /etc/httpd/co…

管家婆云辉煌手机端怎么连接蓝牙打印机?

管家婆云辉煌手机端可以连接蓝牙打印机&#xff0c;这样手机可以发送打印任务到蓝牙打印机&#xff0c;完成打印任务。具体的设置步骤如下&#xff1a; 一、首先完成手机和蓝牙打印机配对&#xff0c;打开蓝牙打印机后。手机开启蓝牙和定位服务 点击手机设置&#xff0c;进入手…

价值流案例研究:实战经验与成功实践的深度解析

价值流在实际应用中的强大效益 在全球化和数字化竞争愈加激烈的背景下&#xff0c;企业正面临如何优化内部流程、提升客户体验、减少成本和提高效益的多重挑战。《价值流指南》不仅是一种理论工具&#xff0c;更为企业提供了系统化的实践框架&#xff0c;以实现从理论到实战的…

Threejs之加载3D模型(上)

本文目录 前言一、模型类型1.1 支持的模型类型1.2 模型加载器 二、常用模型加载器2.1 代码示例2.1.1 GLTFLoader2.1.1.1 代码2.1.1.2 效果 前言 Three.js 是一个基于 WebGL 的 JavaScript 3D 库&#xff0c;它提供了丰富的 API 来在网页上创建和显示 3D 图形。加载 3D 模型到 T…

(学习总结16)C++模版2

C模版2 一、非类型模板参数二、模板的特化1. 概念2. 函数模板特化3. 类模板特化全特化偏特化类模板特化应用示例 三、模板分离编译1. 什么是分离编译2. 模板的分离编译3. 解决方法 模板总结 以下代码环境为 VS2022 C。 一、非类型模板参数 模板参数分为类型形参与非类型形参。…

硬件实用技巧:螺丝M标准、螺丝长度以及螺帽M直径

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142205318 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

[LWIP] 如何实现LWIP热插拔功能

LWIP 1.4.1 硬件stm32f429 HAL 1.8.1 UCOSIII 步骤如下 1、在lwip的opt.h中使能宏定义LWIP_NETIF_LINK_CALLBACK 链接发生变化时调用回调函数 2、在初始化结束后调用函数netif_set_link_callback&#xff0c;为网卡设置一个回调函数&#xff0c;回调参考代码如下 /*** bri…

【诉讼流程-健身房-违约-私教课-多次沟通无效-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(1)】

【诉讼流程-健身房-违约-私教课-多次沟通无效-前期法律流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解&#xff08;1&#xff09;】 &#xff08;1&#xff09;前言说明1、目的2、说明1- 本章你将会看到的内容2 - 健身房其中一些套路1、先给予体验课。2、合同里的文字陷阱3、…

【DOA估计】一种基于高阶广义奇异值分解的多声源方向估计方法【附MATLAB代码】

微信公众号&#xff1a;EW Frontier QQ交流群&#xff1a;554073254 摘要 一种基于高阶广义奇异值分解的多声源方位估计方法本文提出了一种有效的宽带声源波达方向&#xff08;DOA&#xff09;估计方法。所提出的框架提供了一种有效的方法来构建一个宽带互相关矩阵从多个窄带互…