如何确定视频中的汽车是否在移动?

人工智能 机器学习 卷积神经网络 视频分类
2021-11-13 23:21:58

从车内人员的角度来看,如何将给定的图像(视频)序列分类为移动或静止?

下面是 12 个动画图像序列的示例。

  1. 从车内人的角度出发。

0类:移动

  1. 从车内人的角度保持静止。

第一类:静止

我试图实现的方法:

  1. 一个简单的 CNN(带有 2d 卷积),这 12 张图像(灰度)堆叠在通道维度中(如 Deepmind 的 DQN)。CNN 的输入是(batch_size, 200, 200, 12).

  2. 具有 3d 卷积的 CNN。CNN 的输入是(batch_size, 12, 200, 200, 1).

  3. CNN+LSTM(时间分布的二维卷积)。神经网络的输入是(batch_size, 12, 200, 200, 1)

  4. 后期融合方法,即从序列中提取相隔一定时间步长的 2 帧,并将它们分别传递到 2 个 CNN(具有相同权重)中,并将它们连接到一个密集层中,如本文所述这也类似于没有 LSTM 部分的 CNN+LSTM。该网络的输入是(batch_size, 2, 200, 200, 1)-> 2 个图像是序列中的第一帧和最后一帧

我尝试的所有方法都未能实现我的目标。我尝试调整各种超参数,例如学习率、CNN 层中的过滤器数量等,但没有任何效果。

所有方法的 abatch_size为 8(由于内存限制)并且所有图像都是灰度的。我在最后一层使用 ReLU 进行激活和 softmax。没有使用池化层。

关于我的方法为什么失败的任何帮助或任何指向相关工作的指针

1个回答

CNN 是平移不变的。

你把问题复杂化了。您可以做的最简单的事情是定义引擎盖的感兴趣区域 (ROI)。在第一种情况下,汽车正在移动并且反射是动态的。在第二种情况下,它们是静态的。只需对引擎盖进行逐帧图像减法。如果车辆在移动,您将拥有大量的“边缘能量”。如果它不动,那将只是噪音。

您也可以将相同的方法应用于整个图像。在静态情况下,随着云层与车辆和行人一起移动,图像减法方法可能会变得混乱。对于这种情况,使用图像减法作为方法的输入。

另一种方法是运行图像稳定算法。OpenCV 有一个。查看转换输出(平移、旋转、缩放、刚性、相似性、仿射等)。如果您无法对它们进行简单的过滤以确定这两种情况,请训练分类器。