【问题标题】:Training with big class imbalance大班不平衡的训练
【发布时间】:2018-04-15 06:28:49
【问题描述】:

这是一个三部分的问题

1) 类大小 - 我正在 5 个类上训练 TF 对象检测 API,这些类的大小并不接近:

  1. 没有。 class1 中的图像数:401
  2. 没有。 class2 中的图像数:389
  3. 没有。 class3 中的图像数:532
  4. 没有。 class4 中的图像数:159393
  5. 没有。第 5 类中的图像:185313

(总计

这不是训练一个典型的图像分类器,所以我猜这不是真正的类不平衡问题,但我想知道它是否会影响结果模型

2) TF 对象检测 API 是否可以用于检测两个对象,其中 1 被另一个包围/包围?

例如。 face vs person - 脸在人的范围内

3) 这是continuation,我发现使用 Faster RCNN 意味着必须将 batch_size 设置为 1。

因此,我不确定这是否意味着我必须在训练期间等待全局步骤以匹配训练集中的图像数量(我的自定义数据集中大约 340k)。我在具有 4 个 vCPU 和 15gig RAM 的 Google 计算上使用具有 12 GB 内存的 Tesla k80 GPU。大约 2 天后,我看到损失远低于 1:

INFO:tensorflow:global step 264250: loss = 0.2799 (0.755 sec/step)

INFO:tensorflow:global step 264251: loss = 0.0271 (0.787 sec/step)

INFO:tensorflow:global step 264252: loss = 0.1122 (0.677 sec/step)

INFO:tensorflow:global step 264253: loss = 0.1709 (0.797 sec/step)

INFO:tensorflow:global step 264254: loss = 0.8366 (0.790 sec/step)

INFO:tensorflow:global step 264255: loss = 0.0541 (0.741 sec/step)

INFO:tensorflow:global step 264256: loss = 0.0760 (0.781 sec/step)

INFO:tensorflow:global step 264257: loss = 0.0621 (0.777 sec/step)

如何确定何时停止?直到这里我才注意到,我从最新的检查点文件生成的冻结推理图似乎只检测到具有最多图像(即面部)的类,并且没有检测到其他任何东西。

【问题讨论】:

  • 您是从头开始训练还是使用预训练模型?

标签: tensorflow keras object-detection


【解决方案1】:

1) 是的,它会以某种方式影响结果。更准确地说,您的模型将非常擅长识别第 5 类和第 4 类,并且它可能了解其他类型。考虑将 [4, 5] 的实例数限制为至少与其他类的数量级相同。这在开始时尤其有用,因此它可以平衡地表示每个类。

这里也很重要的是使用数据增强(参见this answer)。

3) 通常,您的模型应该需要几个 epoch 才能很好地训练,尤其是当您进行数据增强时。

这在 SO 和存储库中的问题上随处可见:你无法知道它是否仅从损失的值收敛!。考虑这种情况:您的输入图像有shuffle: True,第 4 类和第 5 类中有 344,706 个图像。如果将它们排列为使这些图像排在第 [1,2,3] 类中的图像之前,那么您的模型学到了一些好东西表示到目前为止,但是当它遇到第 1 类的图像时,如果会过冲,因为过拟合。所以你的损失会上升到一个非常高的价值。

解决方案是并行运行eval.py,因为这可以让您了解模型如何在所有类上执行。当您对该指标感到满意时,您可以停止。


请注意,如果 StackOverflow 涉及不同的主题,则提出单独的问题是正常的,因为我们正在为您回答问题,同时也为您当前职位的所有未来人员回答问题。

所以我会在另一个答案中回答 2) :)

【讨论】:

  • 谢谢。我让这个训练超过 360K 全局步骤(因为我认为 batch_size=1 意味着每个步骤 = 1 个图像)。但即便如此,导出的推理图似乎也不能只检测到人脸或人。你似乎是对的。这是单独的线程:stackoverflow.com/questions/47098549/…
猜你喜欢
  • 1970-01-01
  • 2013-06-11
  • 2015-03-16
  • 2016-04-21
  • 2018-07-26
  • 2020-04-15
  • 1970-01-01
  • 2016-05-05
  • 2017-11-09
相关资源
最近更新 更多