0

我使用了 tensorflow 对象检测 API。
这是我的环境。
所有图片均来自 coco API

Tensorflow version : 1.13.1
Tensorboard version : 1.13.1
Number of test images : 3000
Number of train images : 24000
Pre-trained model : SSD mobilenet v2 quantized 300x300 coco
Number of detecting class : 1(person)

这是我的 train_config。

train_config: {
  batch_size: 6
  optimizer {
    adam_optimizer: {
        learning_rate {
            exponential_decay_learning_rate: {
        initial_learning_rate:0.000035
        decay_steps: 7
        decay_factor: 0.98      
          }
        }
      }
    }
  fine_tune_checkpoint: "D:/TF/models/research/object_detection/ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03/model.ckpt"
  fine_tune_checkpoint_type:  "detection"
  num_steps: 200000
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    ssd_random_crop {
    }
  }
}

我找不到优化的学习率、适当的衰减步骤和因子。
所以我做了很多训练,但结果总是相似的。
我怎样才能解决这个问题??
我已经为这个问题花了一周的时间。
在另一篇文章中,有人建议向数据集(图像)添加噪声。
但我不知道这意味着什么。
我怎样才能做到这一点?

4

1 回答 1

0

我认为另一篇文章中引用的是通过向训练数据集中添加一些嘈杂的图像来进行一些数据增强。这意味着您对输入应用一些随机变换,以便模型旨在更好地泛化。可以使用的一种噪声是随机高斯噪声 ( https://en.wikipedia.org/wiki/Gaussian_noise ),它通过对象检测 API 中的补丁应用。尽管您似乎有足够的训练图像,但值得一试。噪音看起来像:

...
data_augmentation_options {
  random_horizontal_flip {
  }
}
data_augmentation_options {
  ssd_random_crop {
  }
}
data_augmentation_options {
  randompatchgaussian {
    // The patch size will be chosen to be in the range
    // [min_patch_size, max_patch_size). 
    min_patch_size: 300;
    max_patch_size: 300; //if you want the whole image to be noisy
  }
}
...

对于数据增强列表,您可以查看: https ://github.com/tensorflow/models/blob/master/research/object_detection/protos/preprocessor.proto

关于学习率,一种常见的策略是尝试较大的学习率(例如 0.02)和一个非常小的学习率,就像您已经尝试过的一样。我建议您尝试使用 0.02,将其保留一段时间或使用指数衰减学习率来查看结果是否更好。

更改 batch_size 也有一些好处,尝试使用 batch_size = 2 而不是 6。

我还建议您离开培训以获得更多步骤,直到您发现培训完全没有改进,也许将其保留到您的配置中定义的 200000 个步骤。

一些更深层次的策略可以帮助模型更好地执行,他们已经在这个答案中说过:https ://stackoverflow.com/a/61699696/14203615

话虽如此,如果您的数据集制作正确,您应该在测试集上获得良好的结果。

于 2020-09-14T15:09:16.257 回答