点击下方卡片,关注「魔方AI空间」公众号
简介
对比语言-图像预训练(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预训练数据集。
文本相似性引导的主成分匹配(TPCM):为了更好地学习特征空间的分布并扩展长描述能力,作者提出了一种新的方法——TPCM。该方法利用文本相似性信号来指导主成分提取(PCE)过程,使得模型能够动态地适应高维特征空间的分布变化。
描述排序任务:为了进一步建模长描述的有效属性,作者引入了两种新任务:细节感知描述排序(DDR)和幻觉感知描述排序(HDR)。DDR任务要求模型能够正确排序具有不同细节水平的多个描述,而HDR任务则要求模型能够区分具有相同细节水平但准确性和幻觉程度不同的描述。
实验细节
数据集:使用了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 模型,通过建立自动数据收集系统和引入文本相似性引导的主成分匹配(TPCM)技术,扩展了视频CLIP模型的长描述理解能力。此外,通过引入细节感知描述排序(DDR)和幻觉感知描述排序(HDR)任务,进一步提升模型的表现。实验结果表明,VideoCLIP-XL在各种任务和基准上均优于现有的最先进模型。
未来的研究方向包括优化预训练方法和增加数据量和模型规模,以及探索将交叉编码器和大型语言模型(LLMs)的架构整合到VideoCLIP-XL中。
项目部署
安装基础环境
# 1. Create your environment
# 2. Install torch
# 3. Then:
pip install -r requirements.txt
部分代码示例
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模型是如何解决长描述理解问题的?
VideoCLIP-XL模型通过以下几个方法来解决长描述理解问题:
建立自动数据收集系统:从多个数据源收集视频和长描述对,创建了一个大规模的预训练数据集VILD。
引入文本相似度引导的主成分匹配(TPCM):在扩展长描述能力的同时,更好地学习特征空间的分布。
提出两个新的任务:细节感知描述排序(DDR)和幻觉感知描述排序(HDR),以进一步改进表示学习。
构建长视频描述排序(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。
技术交流
加入「AIGCmagic社区」群聊,一起交流讨论,涉及 AI视频、AI绘画、Sora技术拆解、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【m_aigc2022】,备注不同方向邀请入群!!
推荐阅读
• 半年耕耘,《AIGCmagic社区知识星球》重磅升级!限量活动中!
• MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型
• 多模态大模型:Video-LLaVA2 视频和图像的智能理解系统
• 多模态大模型:LLaVA-OneVision 轻松实现视觉任务迁移 | 单图、多图和视频理解
• 开源项目|多模态大模型:Show-o 统一多模态理解和生成
• 开源项目 | 多模态大模型VideoLLaMB:长上下文视频理解新框架