视频帧或素材通过将像素数据转换为机器可以处理的数值数组来表示为向量。视频中的每一帧本质上都是一个图像,它是一个像素网格。对于灰度图像,每个像素都是一个单独的值(例如,0-255 表示强度)。对于彩色图像,像素表示为 RGB 元组(每个像素三个值)。要将帧转换为向量,像素值会被展平为一个 1D 数组。例如,一个 128x128 RGB 帧会变成一个具有 128x128x3 = 49,152 维度的向量。这个原始像素向量捕获了空间信息,但通常是高维的并且计算量大。
为了处理多个帧的时间信息(如运动),视频通常表示为向量序列。一种常见的方法是随着时间的推移堆叠帧向量。例如,一个 10 帧的视频剪辑可能是一个 10x49,152 的矩阵。或者,诸如光流向量之类的技术可以对帧之间的运动进行编码。光流计算连续帧之间像素移动的方向和速度,从而为每对帧生成一个 2D 向量场。这些运动向量可以与原始像素数据结合使用,以捕获外观和动态。在实践中,像 OpenCV 这样的库简化了这些特征的提取,而像 PyTorch 或 TensorFlow 这样的框架将它们作为张量(多维数组)处理,用于训练模型。
实际应用通常使用压缩的或学习的表示。模型(例如 CNN(卷积神经网络))提取特征,而不是原始像素。例如,一个预训练的 ResNet 模型可能会将一个帧缩减为 2048 维的向量,从而捕获高级模式。对于时间建模,诸如 3D CNN(处理视频立方体)或 RNN(处理帧序列)之类的架构会将空间和时间数据结合起来。一个实际的例子是视频分类:一个模型可能需要 16 帧的块,将每个块转换为特征向量,然后将它们聚合以预测动作。这种方法平衡了计算效率和信息保留,从而可以实现诸如手势识别或视频中的异常检测之类的任务。