我训练了一个道路标志检测网络。在训练数据中,标志占据了整个框架,像这样:
然而,在我想要用于预测的图像中,道路标志占据的空间要小得多,例如:
对于这样的图像,预测效果不太好,但是如果我将图像裁剪到仅包含标志,预测结果就很好。
我该如何对更大的图像进行预测呢?
遗憾的是,我在类似的问题中找不到答案。
回答:
听起来你想要扩展对单个标志的分类,变成在更大的图像中“检测”和分类它们,这实际上是在解决一种不同类型的问题。
你有(至少)几个选择:
- 创建一个滑动窗口,扫描整个图像并在每个步骤进行分类。这样,当窗口扫到标志时,它会返回一个好的分类。但你很快会发现这种方法既不实用也不高效。窗口大小和步进大小变成了需要优化的新参数,而且如你将在下一个选项中看到的,已经有专门针对对象检测的方法在尝试解决这一特定问题。
- 你可以尝试使用对象检测架构。这将需要你创建一个与你在图像分类中使用的不同的训练数据集。你需要许多(数百或数千)包含(以及在某些情况下不包含)你想要识别的标志的“大”版本图像。你需要一个标注工具来定位和标记这些标志,然后你可以训练一个网络来定位和标记它们。
关于第二个选项,你可以参考的一些架构包括:YOLO,单发检测(SSD),更快的RCNN,仅举几例。