Qwen2-VL: 视频理解模型,用于视频理解的模型

2024/10/10 21:03:13

本文主要是介绍Qwen2-VL: 视频理解模型,用于视频理解的模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我们展示如何用Qwen2-VL搭建您自己的视频理解流程,与您的自定义视频进行互动。

Qwen2-VL管道:查询模型关于长视频

Qwen2-VL,一个基于Qwen2 [1] 的高级视觉语言模型,在图像理解方面,尤其是在不同分辨率和比例上,设立了新的基准,同时还能处理更广泛的视频内容。

虽然Qwen2-V在很多方面都很出色,这篇文章将探讨该模型的创新特点及其在视频理解和问答领域的潜在应用。

🔥 这里是一个常见的网络用语 "TL;DR",通常表示“太长了,没看完”。🔥

🔥 TL;DR 通常表示“太长了,没看完”。🔥

  • 我们设置了一条管道,使用Qwen2-VL查询自定义视频,并共享了代码,以便快速简单地完成设置。
  • Qwen2-VL在图像理解基准测试(MathVista、DocVQA、RealWorldQA)中取得了最先进的结果。
  • 它可以处理20分钟以上的视频。
  • 支持的多语言包括英语、中文、日语、韩语、阿拉伯语以及大多数欧洲语言的文字识别。
  • Claude 3.5 Sonnet和GPT-4o可以处理图像(即帧),但无法像Qwen2-VL一样处理视频。

了解我们CVPR 2024系列中的多模态和基础模型的最新进展:

  • 图像和视频搜索与理解 (RAG、多模态、嵌入等)。
  • 你必须知道的亮点 — 具身AI、GenAI、基础模型和视频理解。

⭐️ 千万不要错过我们的 SAM 2 分段模型系列,

  • SAM 2 + GPT-4o 通过视觉引导级联基础模型:阅读更多 第一篇 和 第二篇。
内容目录:
  1. Qwen2-VL简介及视觉语言模型介绍

2. 视频理解和问答任务的Qwen2-VL

3. 接下来会怎样?

1. Qwen2-VL和视觉语言模型介绍
1.1 视觉语言模型简介

视觉语言模型(VLMs)弥合了视觉与文本信息之间的鸿沟。与为特定任务训练的传统模型不同,VLMs 设计来适应各种视觉-语言应用(见图1)。

图1. VLM强大的视觉元素使其非常适合实际视觉任务

VLMs 在海量的图文对数据集上进行训练,以学习图文之间的对应关系。它们使用不同的学习方法:

  • 对比学习: 区分匹配的图像-文本对和不匹配的图像-文本对。示例:CLIP [2]。

  • 掩码目标: 根据可见的上下文预测被掩码的视觉或文本元素。示例:FLAVA [3], MaskVLM [4]。

  • 生成建模: 根据文本描述生成图像,或反过来根据图像生成文本。示例:CoCa [5], CM3leon [6]。

  • 预训练骨干: 利用预训练的语言模型(LLMs)如Llama将图像特征映射成语言表示。示例:MiniGPT [7]。

另一方面,VLM的评测依赖于评估其结合视觉和文本信息能力的基准,例如下面这些基准:

  • i) 视觉-语言基准测试用于衡量图像描述、图像与文本的一致性、视觉问答、零样本分类和视觉推理的准确性。
  • ii) 幻觉测试基准用于评估视觉语言模型根据图像生成错误或无关的文本的倾向。
1.2 Qwen2-VL:目的和主要特点

Qwen2-VL是在Qwen2语言模型的基础上构建的,旨在实现对图片和视频的理解和互动方面的最先进的表现。

Qwen2-VL的三大主要功能是:

  1. 高级图像和视频理解: Qwen2-VL在理解和分析图像和视频方面表现出色。它可以处理不同分辨率和比例的图像,超越了以前模型的限制。它可以理解长达20分钟以上的视频,从而能够回答复杂的问题。
  2. 多语言理解能力: Qwen2-VL支持多种语言的图像文本理解。它能够理解英语、中文、欧洲语言(如法语、德语等)、日语、韩语、阿拉伯语、越南语等多种语言。
  3. 多模态代理能力: Qwen2-VL不仅能够被动理解,还能成为主动的代理,通过视觉线索和指令与外界互动。
  • 功能调用能力: 该模型可以使用外部工具实时检索数据,通过分析图片中的航班信息或查询天气来响应用户查询。🛫 🌧
  • 视觉互动: Qwen2-VL接近人类感知的方式,允许与视觉刺激进行类似人类感知世界的互动。这开启了更直观和沉浸式的互动,模型可以积极地参与视觉体验。👓 🖼

函数调用指的是定义和描述外部应用程序编程接口(API)的能力。Microsoft

1.3 Qwen2-VL模型在当前人工智能领域的独特优势

在以前的帖子中,我们已经将它们进行了对比(即使用了简单的和复杂的提示来进行图像理解)。在这里,我们将简单地强调Qwen2-VL的强项。

图2展示了Qwen2-VL是如何在视觉理解方面区别于GPT4o和Claude 3.5 Sonnet的,如下所示,无论是视频还是高清的图像。

图2. Qwen2-VL与其他前沿模型的对比

2. Qwen2-VL 在视频理解和回答中的应用示例

注意: 请注意,Colab的免费版本可能只适用于Qwen2-VL 2B模型。Qwen2-VL 7B可能会耗尽Colab的免费图形处理单元RAM内存。

💻 您可以使用我们为您准备的这个Jupyter Notebook 快只需要速设置并进行推理。😎

图3。我们将用来自巴黎2024年的这段视频作为输入

🤖 我们将会使用上面的视频来问一些像这样的问题:

  • 这个活动是在哪个城市或国家举行的?
  • 体操选手穿的衣服是什么颜色的?
2.1 如何配置Qwen2-VL

要设置 Qwen2-VL :

  • 特定版本的transformer库
  • 用于与Qwen2-VL交互的工具库
你可以使用pip来安装git+https://github.com/huggingface/transformers@21fac7abba2a37fae86106f87fcf9974fd1e3830 accelerate,加速。

接着,你可以安装qwen-vl-utils。

接下来,Qwen2-VL 可以通过分析视频的每一帧或者直接处理整个视频文件来进行推断。因此,我们需要一个库来提取视频中的每一帧。

    # 在Colab笔记本中  
    pip install ffmpeg -q # 在Colab笔记本中使用  

    # 在你自己的GPU上,使用conda环境中的Jupyter笔记本  
    conda install -c conda-forge ffmpeg  

我们加载模型,这里使用的是Qwen2-VL 2B。您可以试试Qwen2-VL 7B,以及可通过API获取的72B版本(哇!)。

    从transformers库导入Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor  
    从qwen_vl_utils模块导入process_vision_info  

    # 使用预训练模型初始化model  
    model = Qwen2VLForConditionalGeneration.from_pretrained(  
        "Qwen/Qwen2-VL-2B-Instruct", torch_dtype="auto", device_map="auto"  
    )  

    # 加载预训练的处理器  
    processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-2B-Instruct")
# torch_dtype='auto', device_map='auto' 分别表示根据设备自动选择数据类型和设备映射

最后,下面这个函数包裹了一个执行推理的调用。

    def 定义查询视频(prompt, use_frames=True, frames_path="/home/qwen2_vl/content/frames", video_path=None):  
        if use_frames:  
            # 获取帧列表  
            选定的帧 = 获取帧列表(output_path)  

            # 创建帧的消息结构  
            消息 = [  
                {  
                    "role": "user",  
                    "content": [  
                        {  
                            "type": "视频",  
                            "视频": 选定的帧,  
                            "fps": 1.0,  
                        },  
                        {"type": "文本", "文本": prompt},  
                    ],  
                }  
            ]  
        else:  
            # 创建整个视频的消息结构  
            消息 = [  
                {  
                    "role": "user",  
                    "content": [  
                        {  
                            "type": "视频",  
                            "视频": f"file://{video_path}",  
                            "最大像素": 360 * 420,  
                            "fps": 1.0,  
                        },  
                        {"type": "文本", "文本": prompt},  
                    ],  
                }  
            ]  

        print(f"使用{'帧' if use_frames else '整个视频'}进行推理。")  

        # 准备推理  
        文本 = 处理器应用聊天模板(  
            消息, tokenize=False, add_generation_prompt=True  
        )  
        图像输入, 视频输入 = 处理视觉信息(消息)  
        输入 = 处理器(  
            文本=[文本],  
            图像=图像输入,  
            视频=视频输入,  
            padding=True,  
            return_tensors="pt",  
        )  
        输入 = 输入.to("cuda")  

        # 推理  
        with torch.no_grad():  # 使用no_grad节省推理期间的内存  
            生成的_ids_ = 模型.generate(**输入, 最大新令牌=128)  

        # 剪裁生成的输出以移除输入提示  
        修剪后的生成_ids = [  
            出_ids[len(入_ids_):] for 入_ids_, 出_ids in zip(输入.input_ids, 生成的_ids_)  
        ]  

        # 解码生成的文本  
        输出文本 = 处理器批量解码(  
            修剪后的生成_ids, skip_special_tokens=True, 清理标记化空间=False  
        )  

        print(输出文本)  
        torch.cuda.empty_cache()
2.2 视频理解(基于帧)

如图4所示,Qwen2-VL用帧来展示其回答。

图4。Qwen2-VL(帧级别模式)被要求详细描述这段视频

其他问题包括:

  • 用户: 体操运动员穿的是什么颜色的服装?
  • Qwen2-VL: 体操运动员穿的是白色的衣服,上面有红色和黑色的条纹。
  • 用户: 赛事是在哪个城市或国家举办的?
  • Qwen2-VL: 赛事在法国巴黎举行。

特别是考虑到我们使用的是2B模型选项,这些回答看起来相当准确。

如果我们向GPT-4o或Claude 3.5 Sonnet询问同样的问题,虽然一个是苹果一个是橙子(🍎🍊),会有怎样的结果?

图5. Claude 3.5 十四行 提供了类似 Qwen2-VL 的回答。

简而言之,如图5所示的,Claude 3.5 Sonnet 在单一帧上的表现似乎与 Qwen2-VL 不相上下。

但是,如果你想要询问视频中间或结尾的具体的问题?🤔 那么,Qwen2-VL就在这里大放异彩:你只需提出问题就行了! GPT-4o和Claude Sonnet 3.5还不能处理视频(至少还不行)。 📹

谷歌有一些早期的视频理解方案,不过我们会留到另一篇博客文章中再详细讨论。

2.3 视频理解(用整段视频)

如图6所示,不出意外地,Qwen2-VL也非常准确。它提供的细节甚至比帧级别版本更多。因为模型现在处理的是整个视频,因此能提供更详细的回答。

图6。当用“详细描述视频”查询时,Qwen2-VL(整个视频模式)提供了更详细的答案,比逐帧的替代方案更详细。

3. 下一步?

在这篇文章中,我们构建了Qwen2-VL,一种可以用于视频理解和生成的视觉语言模型。

视频搜索和理解技术是一个令人兴奋、亟待革新的领域。正如我们在系列文章《可扩展视频搜索:级联基础模型——第一部分》中提到的,视频无处不在,但支持大规模稳健搜索的基础设施仍在建设中。

参考

[1] Qwen2 的技术文档

[2] 利用自然语言监督学习可迁移的视觉模型技术

FLAVA,一种基础的语言和视觉对齐模型

[4], 掩码视觉与语言模型的多模态表示学习

[5] CoCa:对比式图文生成模型(一种图像文本基础模型)

[6] 自回归多模态模型的扩展性:预训练,与指令微调

[7] MiniGPT-4:利用先进大型语言模型增强视觉和语言的理解

作者: Dmitry Kazhdan, Jose Gabriel Islas Montero

若想了解更多关于Tenyks的内容,可以访问sandbox



这篇关于Qwen2-VL: 视频理解模型,用于视频理解的模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程