鸟类视频分类

数据挖掘 机器学习 深度学习 分类 预处理
2022-01-31 23:50:25

我正在做一个项目,任务是对鸟类的视频进行分类并预测物种。我尝试使用最初设计用于深度动作识别并针对我的数据集进行调整的机器学习模型。

数据集

该数据集由 9 个不同的类组成,大约有 3000 个带有标签的视频:

  • 比约克特拉斯特 (Fieldfare)
  • 科尔特拉斯特(黑鸟)
  • Nötväcka (五子雀)
  • Pilfink(树麻雀)
  • 穆斯(鼠标)
  • Blåmes(蓝雀)
  • 罗德哈克(罗宾)
  • 卡特(猫)
  • 获取对象(无对象)

这是一个示例数据集的视频,其中包含我的深度学习模型应该能够预测的不同类:

https://www.youtube.com/watch?v=4iNpw7J5q9I]

方法

目前,我已将此代码库用于时间段网络来训练我的模型,我自己的数据集的结果准确度约为 87%(仅使用 RGB,不使用光流)。虽然取决于天气条件和照明,但准确度可能会有很大差异。

我使用以下技术将数据集扩展到大约 30 000 个视频:

  • 将 RGB 噪声添加到训练数据集中已有的视频中。
  • 向训练数据集中的视频添加随机扭曲和扭曲。

问题

我有几个关于做视频分类来预测鸟类的问题:

  • 与使用时间段网络相比,是否有更好的视频分类技术?
  • 是否应该执行任何预处理步骤来提高准确性?
  • 如何训练模型更好地泛化以降低对照明和天气的敏感度?
  • 如何训练模型对未知物种进行分类?
  • 除了上面提到的之外,还有其他方法可以扩展数据集吗?

简而言之:鸟类视频分类的最佳深度学习模型是什么?

2018 年 4 月 17 日更新:我发现模型的准确度显着降低,因为物体挡住了与要识别的鸟类类别颜色相似的相机。这通常会导致模型错误地标记视频并设置高置信度。

1个回答

与使用时间段网络相比,是否有更好的视频分类技术?

我建议训练网络在没有时间维度的情况下检测图像空间中的鸟类。这将使网络有更少的参数来调整,你可能会得到更好的结果。然后对于一个新颖的视频,您可以检测每一帧的物种并进行多数投票来决定视频中的物种。

是否应该执行任何预处理步骤来提高准确性?

如果您在图像空间中进行训练,那么您可以在图像上使用 DataGenerator 并以各种方式对其进行转换,鸟类的位置和旋转不会影响物种。这可以通过 Keras 管道完成。您可以在此处查看一般如何执行此操作

如何训练模型更好地泛化以降低对照明和天气的敏感度?

您可以尝试将图像通过一些预训练的分割网络来识别背景和前景,然后将该区域设置为静态颜色。可能是黑色(即全为 0)。这将使网络的决策边界更容易。但是,我认为您应该关注其他点,网络应该固有地检测哪些特征对于区分不同物种最显着,如果您有足够的训练样本,天气和背景将是低信息特征,因此不会被使用。

如何训练模型对未知物种进行分类?

这将被称为异常检测。这是一个困难得多的问题。如果您的数据集中有其他物种的鸟类,那么您可以为其他鸟类添加类别标签。这仍然是标准的监督学习。如果这不可用,那将非常困难。大多数异常检测算法不适用于高维数据集。然后,您将需要一种方法来压缩输入图像中的信息。这可以通过在自然图像(如 ImageNET)上训练的预训练自编码器网络上进行一些迁移学习来实现,然后您可以使用鸟类图像使用迁移学习来进一步调整网络以适应您的特定用例。然后,您可以使用我在此处描述的异常检测技术之一来使用此压缩特征空间