python - Tensorflow 对象检测培训最佳实践问题

标签 python tensorflow conv-neural-network object-detection

大规模图像训练:

我正在尝试在 4K 分辨率图像上训练车辆检测器,每个图像大约有 100 辆小型车辆(车辆大小约为 100x100 像素)。

我目前使用的是全分辨率,这会消耗大量内存。我正在使用 32 核和 128 GB RAM 进行训练。当前的架构是 Faster RCNN。我可以使用 12 的第二阶段批量大小和 50 的first_stage_mini_batch_size 进行训练。(我将两者缩小,直到我的内存足够)。

  1. 我认为我应该增加 RPN 提案的最大数量。哪个尺寸合适?
  2. 这种方法有意义吗?

难度、截断、标签和姿势:

我目前仅将数据集分为三类(汽车、卡车、货车)。

  • 我假设提供其他信息,例如:

    • 困难(对于大多数隐藏的车辆),并且
    • 截断(我目前没有选择截断对象,但我可以)
  • 将改进培训过程。

  • 截断是否会包括重叠的车辆?

  • 诸如 View /姿势和其他标签之类的附加信息也会改善训练过程,还是会使训练变得更加困难?

  • 向训练集中添加新数据:

  • 是否可以将新图像和对象添加到训练和验证记录文件中,并使用训练目录中的最新检查点文件自动恢复训练?或者“fine_tune_checkpoint”选项和“from_detection_checkpoint”是否必要?
  • 如果随机分离训练数据和验证数据会选择与之前训练中不同的数据集,会造成损害吗?
  • 最佳答案

    对于您的问题,由于图像的高分辨率和小型汽车,开箱即用的配置文件不会很好地工作。我推荐:

    • 裁剪训练 --- 将图像切成更小的裁剪,使汽车的分辨率与现在大致相同。
    • 对裁剪进行评估 --- 在推理时,将图像分割成一堆重叠的裁剪,并对每一个裁剪进行推理。通常人们使用非最大抑制将多种裁剪的检测结合起来。请参阅slide 25这里有一个说明。
    • 强烈建议使用 GPU 或更好的多个 GPU 进行训练。
    • 一开始就避免调整batch_size参数——它们设置为开箱即用,可以很好地工作,更改它们通常会导致调试变得困难。
    • 目前,训练期间不会使用困难/截断/姿势字段,因此包含它们不会产生影响。

    关于python - Tensorflow 对象检测培训最佳实践问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276140/

    相关文章:

    python - 打开简历,img [x,y]总是返回0

    python - Python 当前用户的环境变量

    tensorflow - 如何在tensorflow中设置特定的gpu?

    python - 如何为 1D CNN 格式化 1D 数组数据

    python - 在 map 投影后不连续时修复形状多边形对象

    python - 如何将 sympy codegen 与包含已实现函数的表达式一起使用

    python - 用于 DQN 强化学习的 Keras Tensorboard

    tensorflow - 使用 feed_dict 比使用数据集 API 快 5 倍以上?

    python - 堆叠卷积层如何在 CNN 中工作?

    python - 如何在Keras模型中添加卷积层?