【问题标题】:How to train your own(w/o YOLO etc.) object detector in tf/keras如何在 tf/keras 中训练自己的(不带 YOLO 等)对象检测器
【发布时间】:2020-09-20 01:30:54
【问题描述】:

我成功地训练了多分类器模型,这真的很容易,简单的类相关文件夹结构和keras.preprocessing.image.ImageDataGeneratorflow_from_directory (顺便说一句,没有one-hot编码!) compile fitevaluate - Keras 的管道做得非常好!

但是!当我决定制作自己的(不是猫,不是狗,不是 you_named) 对象检测器时 - 这变成了一场噩梦......

TFRecord 和 tf.Example 简直是疯了!但是好吧,我几乎明白了(我的数据集很小,我有很多内存,但谁在乎呢,写 f. 样板,这么多……)

主要的事情 - 我只是找不到任何文档/教程如何使用简单的 tf/keras 来制作它,每个人都只想在某个模型 YOLO SSD FRCNN 之上构建它,即使他们试图检测全新的对象!!!

官方文档中有两个关于OD的链接,下面都使用了一些模型。

所以我的主要问题 为什么 ???或者我只是瞎了..? -__-

【问题讨论】:

    标签: tensorflow machine-learning keras computer-vision object-detection


    【解决方案1】:

    这变成了一场噩梦,因为目标检测比分类困难得多。最简单的对象检测器是这样的:首先在所有对象上训练一个分类器。然后,当您想要检测图像中的对象时,在图像上滑动一个窗口,并对每个窗口进行分类。然后,如果您的分类器确定某个窗口是对象之一,则将其标记为成功检测。

    但是这种方法有很多问题,主要是它的方式(like waaaay)太慢了。因此,研究人员对其进行了改进并发明了 RCNN。这有问题,所以他们发明了 Faster-RCNN、YOLO 和 SSD,所有这些都是为了让它更快、更准确。 你不会在网上找到任何关于如何实现滑动窗口技术的教程,因为它无论如何都没有用,你也不会找到任何关于如何实现更高级的东西的教程,因为网络很快就会变得复杂。

    另请注意,使用YOLO 并不意味着您应该使用与YOLO 相同的weights。如果您愿意,可以通过随机初始化网络层中的所有权重来从头开始训练YOLO。所以你提到的even if they trying to detect completely new objects!!! 不是真的有效。另请注意,我仍然建议您使用他们在Yolo 网络中使用的权重。 Transfer Learning 通常被视为一个好主意,尤其是在刚开始时,尤其是在图像处理领域,因为许多图像具有共同的特征(例如边缘)。

    【讨论】:

    • 感谢您的澄清!幻灯片窗口已经在 OpenCV 模板匹配中实现。我还听说过 TL 和微调 - 数据必须相似,否则你必须冻结权重,但如果你这样做 - 你会失去准确性!我的数据是噪声符号,所以我决定制作自己的模型
    【解决方案2】:

    我遇到了几乎相同的问题,因为我的图像是黑白图表,与普通图片​​完全不同,我想只在图表上训练自定义模型。

    我在 Tensorflow 模型仓库中找到了这个文档部分: https://github.com/tensorflow/models/blob/master/research/object_detection/README.md

    它有几个部分解释了如何将您自己的模型和数据集带入“附加”中,这可能是一个起点。

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 2020-12-12
      • 1970-01-01
      • 2020-08-21
      • 2019-06-21
      • 2021-02-26
      • 2017-12-11
      • 2020-06-21
      • 1970-01-01
      相关资源
      最近更新 更多