用于生成视频嵌入的最佳模型通常分为三类:3D 卷积神经网络 (CNN)、基于 Transformer 的架构以及结合视觉和时间处理的混合模型。 这些模型旨在捕获视频中的空间(视觉)和时间(运动)信息,这对于诸如动作识别、视频检索或基于内容的推荐系统之类的任务至关重要。 选择取决于诸如计算资源、数据集大小和特定用例之类的因素。
对于 3D CNN,诸如 C3D 和 I3D(膨胀的 3D ConvNet)之类的模型被广泛使用。 C3D 将 3D 卷积直接应用于视频片段,将时间视为与高度和宽度并列的第三个维度。 这使其可以学习时空特征,但需要大量的计算能力。 I3D 通过将 2D 卷积滤波器(例如,来自诸如 ResNet 之类的预训练图像模型)“膨胀”为 3D 来改进这一点,从而实现更好的初始化和性能。 另一个选择是 SlowFast 网络,它使用两个通路:一个用于空间细节的“慢速”流和一个用于运动的“快速”流,从而平衡了准确性和效率。 这些模型通常在诸如 Kinetics 之类的大型数据集上进行预训练,使其对于迁移学习非常有效。
诸如 ViViT (Video Vision Transformer) 和 TimeSformer 之类的基于 Transformer 的模型因其建模远程依赖关系的能力而受到关注。 ViViT 将视频划分为时空补丁,并使用自注意力处理它们,而 TimeSformer 通过在空间和时间上分割注意力来优化计算。 这些模型擅长捕获复杂的交互,但需要大量的内存。 对于轻量级解决方案,基于 CLIP 的方法(例如,VideoCLIP)通过训练视频文本对将图像文本对齐的想法扩展到视频,从而产生对于跨模态任务有用的嵌入。 诸如 PyTorch Video 或 Hugging Face Transformers 之类的库提供了实现,并且通常可以使用预训练的权重进行快速实验。
在实现视频嵌入时,请考虑使用来自诸如 TensorFlow Hub 或 TorchHub 之类的框架的预训练模型来节省训练时间。 例如,可以在几行代码中加载在 Kinetics 上预训练的 I3D,并在自定义数据上对其进行微调。 如果计算资源有限,诸如 MediaPipe 或 基于 OpenCV 的方法之类的特征提取工具可以提取关键帧或光流,以用于更简单的模型。 始终在下游任务上验证嵌入 - 测试与手工制作的特征相比,它们是否提高了检索或分类的准确性。 平衡模型大小、推理速度和任务要求将帮助您选择最佳方法。