图像检测和分类 - 一般方法?



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

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

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

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

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

  • 我应该构建 2 个单独的模型吗?(一个用于检测/定位,一个用于分类?

  • 我应该像方法(3(那样使用注释文件注释我的图像吗?

  • 我必须在任何阶段重塑我的图像吗?

谢谢

附言。在我的所有方法中,我都增强了图像,每类生成~500-1000张图像。

要回答您的问题:

  • 不,您不必构建两个单独的模型。您所描述的称为对象检测,即分类和定位。有许多型号可以做到这一点:Mask_RCNN,Yolo,Detectron,SSD等。

  • 是的,您确实需要注释图像,以便为自定义类训练模型。上面提到的每个模型都需要不同的注释方式。

  • 不,您无需进行任何图像大小调整。大多数情况下,它是在模型加载数据以进行训练或推理时完成的。

您尝试MaskRCNN是正确的轨道。

除了MaskRCNN,你也可以试试Yolo。还有一个易于使用的注释工具Yolo-Mark。

如果你读完本教程,你就会明白你关心什么。 如何使用 TensorFlow 的对象检测器 API 训练自己的对象检测器

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

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

相关内容

  • 没有找到相关文章

最新更新