一、简介

对比语言-图像预训练(CLIP) 已被广泛研究和应用于众多应用。然而,在预训练期间强调简短摘要文本会阻止CLIP理解长描述。这个问题对于视频尤其严重,因为视频通常包含丰富的详细内容。

VideoCLIP-XL 模型,旨在释放视频CLIP模型的长描述理解能力。还使用自动数据收集系统收集并发布了包含超过200万视频和长描述对的新的预训练数据集VILD。

本文提出 TPCM 用于动态特征学习,同时扩展长描述能力。还提出了两个新任务(即DDR和HDR),以进一步建模有效属性,从而更好地表示学习长描述。

为了更好地评估视频CLIP模型的长描述能力,提出 LVDR 基准测试进行长描述排名。

广泛的实验表明,VideoCLIP-XL 在各种任务和基准测试上明显优于最先进的模型。

论文地址:https://arxiv.org/pdf/2410.00741

模型地址:https://huggingface.co/alibaba-pai/VideoCLIP-XL

VILD数据集地址:https://huggingface.co/alibaba-pai/VILD

LVDR基准地址:https://huggingface.co/alibaba-pai/LVDR

二、引言

本文解决的问题主要是现有的 CLIP 模型在预训练过程中过于强调简短的总结文本,导致其难以理解长描述,特别是在视频领域,视频通常包含丰富的细节内容。

CLIP模型的文本编码器依赖于最大位置嵌入,长度限制为77,这极大地限制了输入文本的长度;现有研究揭示CLIP模型在实际应用中有效的token限制约为20个词;CLIP模型的训练过程强调简短的总结文本,导致其倾向于关注文本/视觉输入的主要特征,而忽略较小的关键细节。

CLIP模型是一种基于对比学习的跨模态预训练模型,广泛应用于零样本分类、文本图像检索和文本到图像生成等任务。然而,CLIP模型在处理长文本描述方面存在局限性。现有的长文本CLIP模型缺乏在高维特征空间中动态适应分布变化的能力。

三、方法概述

VideoCLIP-XL 模型,用于解决视频CLIP模型在理解长描述方面的能力不足问题。具体来说,

**数据收集系统:**首先,作者建立了一个自动数据收集系统,从多个数据源聚合超过2M的视频和长描述对,形成了VILD预训练数据集。

大模型开源项目 | 多模态大模型 VideoCLIP-XL:一种新的视频 CLIP 模型_AI大模型

图1:VILD数据集的自动数据收集系统

文本相似性引导的主成分匹配(TPCM): 为了更好地学习特征空间的分布并扩展长描述能力,作者提出了一种新的方法——TPCM。该方法利用文本相似性信号来指导主成分提取(PCE)过程,使得模型能够动态地适应高维特征空间的分布变化。

大模型开源项目 | 多模态大模型 VideoCLIP-XL:一种新的视频 CLIP 模型_ai_02

图2:基于文本相似性的主成分匹配(TPCM)技术

描述排序任务: 为了进一步建模长描述的有效属性,作者引入了两种新任务:细节感知描述排序(DDR)和幻觉感知描述排序(HDR)。DDR任务要求模型能够正确排序具有不同细节水平的多个描述,而HDR任务则要求模型能够区分具有相同细节水平但准确性和幻觉程度不同的描述。

大模型开源项目 | 多模态大模型 VideoCLIP-XL:一种新的视频 CLIP 模型_AI大模型_03

图3:为(a)幻觉感知和(b)细节感知描述排名任务生成的文本样本示例。蓝色和绿色词汇分别指代被替换的幻觉内容和需要删除的详细内容。

四、实验细节

数据集: 使用了VILD预训练数据集,该数据集通过自动数据收集系统从多个数据源聚合了超过2M的视频和长描述对。

模型结构: 采用了CLIP的模型结构,使用ViT-L/14作为视频编码器,并在视频编码器中引入时空注意力机制,权重初始化来自ViCLIP。

预训练过程: 在VILD数据集上对VideoCLIP-XL进行2轮预训练。所有实验均在PyTorch中实现,并在NVIDIA Tesla A100-80G GPU上运行。

评估任务: 在传统的文本视频检索基准(如MSRVTT、LSMDC、DiDeMo、MSVD和ActivityNet)上进行零样本和微调后的文本视频检索任务评估。此外,还在LVDR基准上进行长视频描述排序任务的评估。

五、实验结果分析

传统基准上的性能: VideoCLIP-XL在所有的传统基准上均表现出色,优于现有的最先进模型。例如,在MSRVTT数据集上,VideoCLIP-XL在零样本设置下的T2V R@1得分为50.1,在微调设置下的T2V R@1得分为49.5,相较于之前的ViCLIP模型分别提高了7.7和8.6个百分点。

长描述基准上的性能: 在Shot2Story数据集上,VideoCLIP-XL在长描述设置下也表现出色,无论是使用整个视频片段还是每个镜头进行文本视频检索任务,均优于其他竞争模型。

LVDR基准上的性能: 在LVDR基准上,VideoCLIP-XL能够更准确地识别不准确的内容,并赋予它们较低的相似度得分。例如,在4x1设置下,VideoCLIP-XL的排名得分(RS)为91.67,显著高于Long-CLIP模型的84.87。

大模型开源项目 | 多模态大模型 VideoCLIP-XL:一种新的视频 CLIP 模型_AI大模型_04

大模型开源项目 | 多模态大模型 VideoCLIP-XL:一种新的视频 CLIP 模型_AI大模型_05

在Shot2Story基准上文本到视频检索的定性示例

六、总结

VideoCLIP-XL 模型,通过建立自动数据收集系统和引入文本相似性引导的主成分匹配(TPCM)技术,扩展了视频CLIP模型的长描述理解能力。此外,通过引入细节感知描述排序(DDR)和幻觉感知描述排序(HDR)任务,进一步提升模型的表现。实验结果表明,VideoCLIP-XL在各种任务和基准上均优于现有的最先进模型。

未来的研究方向包括优化预训练方法和增加数据量和模型规模,以及探索将交叉编码器和大型语言模型(LLMs)的架构整合到VideoCLIP-XL中。

七、项目部署

  1. 安装基础环境
# 1. Create your environment
# 2. Install torch
# 3. Then:
pip install -r requirements.txt
  1. 部分代码示例
def _frame_from_video(video):
    while video.isOpened():
        success, frame = video.read()
        if success:
            yield frame
        else:
            break
        
        
v_mean = np.array([0.485, 0.456, 0.406]).reshape(1,1,3)
v_std = np.array([0.229, 0.224, 0.225]).reshape(1,1,3)
def normalize(data):
    return (data / 255.0 - v_mean) / v_std
        
    
def video_preprocessing(video_path, fnum=8):
    video = cv2.VideoCapture(video_path)
    frames = [x for x in _frame_from_video(video)]
    step = len(frames) // fnum
    frames = frames[::step][:fnum]

    vid_tube = []
    for fr in frames:
        fr = fr[:,:,::-1]
        fr = cv2.resize(fr, (224, 224))
        fr = np.expand_dims(normalize(fr), axis=(0, 1))
        vid_tube.append(fr) 
    vid_tube = np.concatenate(vid_tube, axis=1)
    vid_tube = np.transpose(vid_tube, (0, 1, 4, 2, 3))
    vid_tube = torch.from_numpy(vid_tube)
    
    return vid_tube


videoclip_xl = VideoCLIP_XL()
state_dict = torch.load("./VideoCLIP-XL.bin", map_location="cpu")
videoclip_xl.load_state_dict(state_dict)
videoclip_xl.cuda().eval()

       
videos = [
    "/path/to/video-1.mp4",
    "/path/to/video-2.mp4",
]

texts = [
    "text-1",
    "text-2",
    "text-3",
]

with torch.no_grad():
    video_inputs = torch.cat([video_preprocessing(video) for video in videos], 0).float().cuda()
    video_features = videoclip_xl.vision_model.get_vid_features(video_inputs).float()
    video_features = video_features / video_features.norm(dim=-1, keepdim=True)

    text_inputs = text_encoder.tokenize(texts, truncate=True).cuda()
    text_features = videoclip_xl.text_model.encode_text(text_inputs).float()
    text_features = text_features / text_features.norm(dim=-1, keepdim=True)

Tmp = 100.

sim_matrix = (text_features @ video_features.T) * Tmp

print(sim_matrix)

八、提炼关键问题

问题1:现有CLIP模型在处理长描述时的局限性是什么?

现有CLIP模型在预训练过程中主要依赖于简短的摘要文本,这限制了它们处理长描述的能力。具体来说,这些模型的文本编码器依赖于最大位置嵌入,长度为77,这导致输入文本的长度受到严格限制,通常只有约20个token。

此外,现有的视频CLIP模型在处理视频时,往往采用简化的“概念袋”方法,难以准确捕捉复杂的细节和关系。

问题2:VideoCLIP-XL模型是如何解决长描述理解问题的?

  1. VideoCLIP-XL模型通过以下几个方法来解决长描述理解问题:
  2. 建立自动数据收集系统: 从多个数据源收集视频和长描述对,创建了一个大规模的预训练数据集VILD。
  3. 引入文本相似度引导的主成分匹配(TPCM): 在扩展长描述能力的同时,更好地学习特征空间的分布。
  4. 提出两个新的任务: 细节感知描述排序(DDR)和幻觉感知描述排序(HDR),以进一步改进表示学习。
  5. 构建长视频描述排序(LVDR)基准: 用于更全面地评估视频CLIP模型的长描述能力。

问题3:VideoCLIP-XL模型在实验中的表现如何?

VideoCLIP-XL模型在多个文本-视频检索基准测试中表现出色,包括传统的短描述和长描述数据集(如MSR-VTT、LSMDC、DiDeMo、MSVD和ActivityNet),以及在LVDR基准上的表现。

实验结果表明,VideoCLIP-XL模型在零样本和微调设置下均优于现有的视频CLIP模型,显著提高了长描述的准确性和相关性。例如,在MSR-VTT数据集上,VideoCLIP-XL的零样本R@1得分达到了50.1,而ViCLIP为42.4。