【发布时间】:2020-05-18 14:43:42
【问题描述】:
我正在尝试构建一个检测 + 分类模型,该模型将识别图像中的对象并对其进行分类。在我的 10 个类中,每个图像最多包含 1 个对象(即同一图像不能包含 2 个类)。但是,图像可以不包含我的任何类/对象。我正在努力解决这个问题的一般方法,特别是由于我的问题的性质;我的对象有不同的大小。这是我尝试过的:
使用仅包含我的对象/类的图像训练了一个分类器,即每个图像都是预先移除背景的对象本身。现在,由于对象/图像具有不同的形状(纵横比),我不得不将图像重塑为相同的大小(破坏纵横比)。如果我的目的只是构建一个分类器,这会很好用,但由于我还需要检测对象,所以效果不太好。
第二种方法类似于(1),除了我没有天真地重新塑造对象,而是通过用 0(黑色)填充图像来保持纵横比。这完全破坏了我的分类器表现良好的能力(准确率
Mask RCNN - 我关注 this 博客文章尝试在同一模型中构建检测器 + 分类器。这种方法花了很长时间,我不确定这是正确的方法。我什至使用外部工具 (RectLabel) 来生成带注释的图像文件,其中包含有关边界框的信息。
问题: 在一般层面上,我应该如何解决这个问题:
我应该构建 2 个单独的模型吗? (一个用于检测/定位,一个用于分类?)
我应该像方法 (3) 那样使用注释文件来注释我的图像吗?
我是否必须在任何阶段重塑我的图像?
谢谢,
PS。在我的所有方法中,我都对图像进行了扩充,以每类生成约 500-1000 张图像。
【问题讨论】:
-
你试过github.com/matterport/Mask_RCNN中的实现了吗?看起来不错,还有一个自定义数据集的例子。
标签: tensorflow keras object-detection image-recognition faster-rcnn