千问Vision模型的验证

文摘   2024-09-11 11:40   新加坡  


欢迎关注新书:

新书发布:大语言模型原理、训练及应用


上一篇介绍了CV的主要两个流派,卷积神经网络和ViT,本文介绍基于ViT模型的实践。

从零训练一个Vision Transformer

微软的Florence-2使用了基于Transformer的架构,但它具体采用的是DeiT(Data-efficient Vision Transformer)作为其视觉编码器。DeiT 的架构与 ViT 相同,只是在输入标记部分增加了一个蒸馏标记。由于 ViT 在数据量不足时表现不佳,蒸馏是一种改进训练效果的方法。

Florence-2 的模型架构采用序列到序列的学习方法。这意味着,该模型以循序渐进的方式处理输入序列(如带有文本提示的图像)并生成输出序列(如描述或标签)。在序列到序列框架中,每个任务都被视为一个翻译问题:模型接收输入图像和特定任务提示,并生成相应的输出。

Qwen2-VL采用了编码-解码器架构,结合了Vision Transformer(ViT)和Qwen2语言模型34。这种架构使得Qwen2-VL能够处理图像和视频输入,并支持多模态任务


Qwen2-VL 还利用了一种新的多模态旋转位置嵌入 (M-ROPE)。位置嵌入被分解为捕捉一维文本、二维视觉和三维视频位置信息的组件,从而提高模型处理多模态数据的能力。

Qwen2-VL 的训练

  1. 预训练阶段

  • 目标:在这个阶段,主要目标是优化视觉编码器和适配器,而语言模型(LLM)保持冻结状态。

  • 数据集:使用了一个大型且经过清理的图文对数据集。这些数据对模型理解视觉和文本之间的关系非常重要。

  • 优化目标:通过最小化文本标记的交叉熵来提高模型的文本生成能力。这意味着模型在给定图像的情况下,能够更准确地生成相关的文本描述。

  • 多任务预训练阶段

    • 训练整个模型:在这一阶段,整个模型,包括 LLM,都参与训练。

    • 任务类型:模型在多种视觉语言任务上进行训练,这些任务可能包括图像描述、视觉问答等。

    • 数据质量:使用高质量、细粒度的数据,这些数据能够提供更丰富的视觉和语言信息。

    • 输入分辨率:提高视觉编码器的输入分辨率,以减少信息损失。这有助于模型更好地捕捉图像中的细节。

  • 指令微调阶段

    • 目标:提高模型的对话和指令跟随能力。

    • 冻结视觉编码器:在这个阶段,视觉编码器保持冻结状态,重点优化 LLM 和适配器。

    • 数据类型:使用多模态和纯文本对话数据的混合进行优化。这种数据组合有助于模型在处理多模态输入时,能够更好地理解和生成自然语言。

    接下来我们看一下测试效果:

    ['在这张图片中,我看到两只狗。左边的狗看起来像是柯基犬,而右边的狗看起来像是约克夏梗犬。它们似乎在户外的环境中奔跑,可能是散步或玩耍。']


    模型支持分析视频,但也是采用拆帧的方式。模型并不能分析音频。

    ['视频中展示了一条繁忙的街道,车辆密集,交通堵塞。街道两旁是高楼大厦,天空阴沉,可能是傍晚或清晨。']


    本文涉及到的详细测试代码和测试步骤放置于:

    https://github.com/xinyuwei-david/david-share.git下的:Multimodal-Models/Training-VIT,本文中不再赘述代码实现。

    欢迎给repo点亮Star,您的点赞是作者持续创作的动力。


    大魏分享
    https://github.com/davidsajare/david-share.git
     最新文章