使用 Keras 从头开始​​创建对象检测模型

数据挖掘 张量流 计算机视觉 特征提取 机器学习模型 物体检测
2021-09-25 11:42:24

我有一个包含 330 张包含枪支的图像的数据集。除了图像,我还有一个与每个图像文件相关联的文本文件,其中包含,

  • 图像中物体(枪)的数量。
  • 图像中枪周围边界框的坐标。

我需要训练一个模型,该模型将图像作为输入并输出 4 个整数值,它们是边界框的坐标(边界框的顶点)。

为了训练目标检测模型,是否应该将图像作为输入,将坐标作为模型的输出?是否应该有用于特征提取的卷积层,然后是用于学习产生 4 个输出(边界框坐标)的特征的 FC 层?

这种模型架构的概念是否正确?还有其他提示/建议吗?

我完全在 TensorFlow Keras 中创建这个模型,而不使用任何预训练的东西。

1个回答

在我回答你的问题之前,让我告诉你,你可以从头开始训练一个模型,但你最终肯定会使用其中一种对象检测架构,无论是 Mask R-CNN、Faster R-CNN、Yolo或固态硬盘。您的问题是这些架构试图解决的问题的简化版本。这些是通用对象检测器,其中一些支持更多 1k 类。你有一个单一的类别检测问题。

现在回到你的问题。

为了训练目标检测模型,是否应该将图像作为输入,将坐标作为模型的输出?是否应该有用于特征提取的卷积层,然后是用于学习产生 4 个输出(边界框坐标)的特征的 FC 层?不,事情没那么简单。训练 FCN 以输出 4 个值作为边界框不起作用。

前面提到的所有对象检测器都是基于假设,例如 Faster R-CNN 生成提议(区域),它的假设是这些区域很可能包含一个对象,然后通过对每个区域包含哪个类进行分类(你只有一类),最后精炼输出。Faster R-CNN 中最重要的是区域提议网络,它以滑动窗口的方式迭代最终卷积层,生成不同纵横比的提议,例如 1:1、1:2 和 2:1。

为什么我要说这一切?因为我想让你明白,问题并不像你想象的那么简单。

延伸阅读: