【多模态论文阅读系列二】— MiniCPM-V

embedded/2024/10/18 0:55:55/

校招/实习简历修改、模拟面试欢迎私信

《MiniCPM-V: A GPT-4V Level MLLM on Your Phone》

在这里插入图片描述
在本节中,我们介绍了MiniCPM-V的模型架构,概述了其总体结构和自适应高分辨率视觉编码方法。MiniCPM-V系列的设计理念是在性能和效率之间实现良好的平衡,这是一个更实用的目标,适用于更广泛的现实世界应用,在架构设计、训练、推理和部署中实现。

3.1 architecture

该模型包括三个关键模块:视觉编码器、压缩层和LLM。输入图像首先由视觉编码器利用自适应视觉编码方法进行编码。具体来说,我们采用SigLIP SoViT-400m/14[115]作为视觉编码器。然后,压缩层对视觉标记进行压缩,压缩层采用具有一层交叉注意力的感知重采样器结构。最后,压缩的视觉标记与文本输入一起被馈送到LLM中,用于条件文本生成。

3.2 Adaptive Visual Encoding

最近,人们对视觉编码在MLLM性能中的基本作用越来越达成共识[76,68],特别是对于OCR等细粒度功能。为了有效,一个好的视觉编码策略应该既尊重输入的原始纵横比,又保留足够的视觉细节(高分辨率)。为了提高效率,图像编码的视觉标记数量应该适中,以便在终端设备上负担得起。为此,我们利用了LLaVA UHD[107]提出的自适应视觉编码方法。

在这里插入图片描述

在实践中,我们设置N<10,在编码过程中最多支持180万像素(例如1344×1344分辨率)。尽管我们可以包含更多的图像切片以获得更高的分辨率,但我们故意强加了这个分辨率上限,因为它已经很好地覆盖了大多数现实世界的应用场景,考虑到性能和开销,进一步提高编码分辨率的好处微乎其微。

Slice Encoding 虽然图像分割可以确保切片和ViT预训练设置之间的良好匹配,但每个切片的大小并不完全等于(Wv,Hv)。为了将切片馈送到ViT中,我们首先通过按比例调整每个切片的大小来调整它,使得到的区域大小与ViT预训练区域大小Wv×Hv相匹配。这种调整有助于防止编码补丁的数量与ViT的预训练设置之间出现显著差距注意,这里不一定是与VIT输入等大小参考这里。

随后,我们插值ViT的位置嵌入以适应切片的比率。这涉及将ViT的1D嵌入P1∈RQ×l重新整形为其2D格式P2∈Rq×q×l,其中位置嵌入的数量q=q×q。然后,我们通过2D插值来插值P2以适应每个切片的大小。我们还将原始图像作为附加切片,以提供有关整个图像的整体信息。

在这里插入图片描述

token compression。视觉编码后,每个切片被编码为1024个令牌,其中10个切片可以共同产生超过10k个令牌。我们采用了一个压缩模块,该模块由一层交叉注意力和适量查询组成,在实践中,通过这一层,每个切片的视觉标记被压缩为64个MiniCPM V1&2查询和96个MiniCPM-Llama3-V 2.5查询。

4.Training

The model training consists of 3 phases: the pre-training phase, the supervised fine-tuning phase, and the RLAIF-V phase.

4.1 Pre-training

在这个阶段,我们利用大规模的图像文本对进行MLLM预训练。该阶段的主要目标是将视觉模块(即视觉编码器和压缩层)与LLM的输入空间对齐,并学习基础的多模态知识。预训练阶段又分为3个阶段。

第一阶段。第一阶段的作用是warm up 压缩层,主要连接视觉编码器和LLM。 (1) 可训练模块。我们随机初始化压缩层,并在第一阶段训练该模块,保持其他参数frozen。视觉编码器的分辨率设置为224×224。

在这里插入图片描述
第二阶段。在压缩层的预热训练之后,第二阶段的作用是扩展预训练的视觉编码器的输入分辨率。(1) 可训练模块。在第二阶段,我们将图像分辨率从224×224扩展到448×448。整个视觉编码器经过训练,其他参数frozen。

第三阶段。在扩展了视觉编码器的主要输入分辨率后,我们最终使用自适应视觉编码策略训练视觉模块,该策略可以进一步适应任何宽高比的高分辨率输入。(1) 可训练模块。在第三阶段训练中,压缩层和视觉编码器都经过训练以适应语言模型嵌入空间。LLM保持冻结状态,以避免因相对低质量的预训练数据而干扰。(2) 数据。与之前只有图像字幕数据的阶段不同,在高分辨率预训练阶段,我们额外引入了OCR数据来增强视觉编码器的OCR能力。

在这里插入图片描述

4.3 RLAIF-V

在这里插入图片描述
MLLM通常容易出现幻觉问题,产生与输入图像不符的反应。这个问题极大地限制了MLLM的广泛应用。为了解决幻觉问题,我们采用了最近的RLAIF-V[112]方法(图4),其中关键是从开源模型中获得可扩展的高质量反馈,用于直接偏好优化(DPO)

Direct Preference Optimization.
在收集到高质量的人工智能反馈后,我们通过DPO方法进行偏好学习。DPO算法需要对偏好对进行训练,其中一个样本yw比另一个样本yl更受欢迎。为了组成偏好数据集,我们从每个响应集Y={y1,y2,··,yn}中随机抽样,并根据它们的相对得分确定(yw,yl)。最后,我们从3K个独特的图像中构建了一个由6K个偏好对组成的偏好数据集,用于偏好学习。


http://www.ppmy.cn/embedded/127205.html

相关文章

2024.10.12 java笔试面试

1.工厂模式 工厂模式是一种创建型设计模式&#xff0c;旨在通过将对象的创建过程与其使用分离。 简单工厂模式&#xff1a;又叫静态工厂方法&#xff0c;由一个工厂类根据参数决定创建哪种具体类的实例 工厂方法模式&#xff1a;定义一个用于创建对象的接口&#xff0c;将实…

大数据笔记之 Hadoop 常用 Shell 命令(一)

文章目录 前言一、HDFS上的操作1.1 查看文件或文件夹1.2 修改文件或目录权限1.3 创建或删除文件夹1.4 移动或创建文件1.5 信息统计1.6 设置 hdfs 中文件的副本数量 二、在本地上传或下载的操作2.1 从本地上传文件到HDFS2.2 从HDFS下载文件到本地 总结 前言 前无言 一、HDFS上的…

mysql数据备份

为什么写这个话题&#xff0c;原因很简单&#xff0c;在实现业务逻辑的时候很多更新操作没有校验where后面的条件&#xff0c;导致整个表的数据被更新了&#xff0c;工作这么多年了&#xff0c;从入行到现在还在不时的发生&#xff0c;当然避免的方式有很多&#xff0c;但是难免…

RK3588 buildroot 制作的系统增加 docker 支持

RK3588 buildroot 制作的系统增加 docker 支持 简介 使用 ubuntu 系统使用一个指令就可以安装 docker ,因为工作需要,系统不能使用 ubuntu 而只能使用buildroot 制作系统,下面我们就一起看下如果在 buildroot 系统上安装 docker 安装 docker 前的内核配置 运行 docker 需要…

【设计模式】装饰者模式

装饰者模式 角色和buff进行解释 步骤 角色和Buff共有一个Component&#xff0c;理解为有同一个操作&#xff0c;给予Buff里面可以填充角色。角色有一个基类&#xff0c;Buff有一个基类&#xff0c;因为有多种Buff 理解 不是常规理解上的给角色填装Buff&#xff0c;角色作为…

axios的使用

在 Vue 项目中&#xff0c;封装 Axios 并实现加密、重复请求优化、请求取消、页面切换时取消未完成的请求、以及区分上传和下载操作是非常常见的需求。下面将逐一讲解这些需求的实现方式。 1. Axios 的基本封装 首先&#xff0c;我们可以将 Axios 封装到一个服务层中&#xf…

鸿蒙--播放器状态控制

各个页面共享同一个播放状态,而且可以互相控制,如果传递来传递去会非常的麻烦,但是他们都是Tabs组件内的,我们在index页面提供一个状态,在各个组件接收即可 创建两个子组件,一个是播放控制的子组件,一个是背景播放的子组件 背景播放组件

【Linux】为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文解答)

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…