首页 > 解决方案 > 图像检测和分类 - 一般方法?

问题描述

我正在尝试建立一个检测+分类模型,该模型将识别图像中的对象并将其分类。在我的 10 个类中,每个图像最多包含 1 个对象(即同一图像不能包含 2 个类)。但是,图像可以不包含我的任何类/对象。我正在努力解决这个问题的一般方法,特别是由于我的问题的性质;我的对象有不同的大小。这是我尝试过的:

  1. 用只包含我的对象/类的图像训练了一个分类器,即每个图像都是预先去除背景的对象本身。现在,由于对象/图像具有不同的形状(纵横比),我不得不将图像重塑为相同的大小(破坏纵横比)。如果我的目的只是构建一个分类器,这会很好用,但由于我还需要检测对象,所以效果不太好。

  2. 第二种方法类似于(1),除了我没有天真地重塑对象,而是通过用 0(黑色)填充图像来保持纵横比。这完全破坏了我的分类器表现良好的能力(准确率 < 5%)。

  3. Mask RCNN - 我按照这篇博文尝试在同一模型中构建检测器 + 分类器。这种方法花了很长时间,我不确定这是正确的方法。我什至使用外部工具 (RectLabel) 来生成带注释的图像文件,其中包含有关边界框的信息。

问题:在一般层面上,我应该如何解决这个问题:

谢谢,

PS。在我的所有方法中,我都对图像进行了扩充,以每类生成约 500-1000 张图像。

标签: tensorflowkerasobject-detectionimage-recognitionfaster-rcnn

解决方案


如果您阅读本教程,您将了解您关心的内容。 如何使用 TensorFlow 的对象检测器 API 训练您自己的对象检测器

SSD 模型很小,因此不需要太多时间进行训练。 有一些对象检测模型。

在 RectLabel 上,您可以将边界框保存为 PASCAL VOC 格式。您可以为 Tensorflow 导出 TFRecord。 https://rectlabel.com/help#tf_record


推荐阅读