【问题标题】:Image Detection & Classification - general approach?图像检测和分类 - 一般方法?
【发布时间】:2020-05-18 14:43:42
【问题描述】:

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

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

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

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

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

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

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

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

谢谢,

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

【问题讨论】:

标签: tensorflow keras object-detection image-recognition faster-rcnn


【解决方案1】:

如果您阅读本教程,您就会明白您关心的是什么。 How to train your own Object Detector with TensorFlow’s Object Detector API

SSD 模型很小,因此不需要太多时间进行训练。 There are some object detection models.

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

【讨论】:

    【解决方案2】:

    回答您的问题:

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

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

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

    您在尝试 MaskRCNN 时走在正确的轨道上。

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

    【讨论】:

    • 谢谢。我正在阅读这些博文:machinelearningmastery.com/…towardsdatascience.com/… 这两个都指的是“对象检测”作为在同一图像中检测多个对象的方案,而我只对单个类感兴趣。有没有比 MaskRCNN 更快的算法可以做到这一点?还是还是像 YOLOv3 之类的框架我应该坚持?
    • 你可以只用一个类来训练上面提到的任何物体检测器。我不知道您在上面的评论中所说的 MaskRCNN 算法和 Yolov3 框架是什么意思。它们都是我的深度学习模型。对于初学者,我想说,尝试上面链接的任何一个 github 存储库,看看哪个更容易实现。
    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2012-11-11
    • 2020-08-04
    • 2021-10-02
    相关资源
    最近更新 更多