每个火车时代之后的评估

时间:2018-10-29 19:13:06

标签: python tensorflow object-detection-api

尝试使用tensorflow对象检测API获取工作流。

我已经为我的训练集(4070张图像)和验证集(1080张图像)创建了tfrecords。

训练要进行400次迭代,然后切换到评估,这需要花费很长的时间(约10分钟),然后继续重复评估。我一直感到困惑,为什么我的成绩会变得很差,但是尽管我只跑了24小时,但我似乎只训练了10分钟。

评估配置为

   eval_config {
  num_visualizations: 30
  num_examples: 30
  eval_interval_secs: 600
  max_evals: 1
  include_metrics_per_category: true
  batch_size: 1
}
eval_input_reader {
  label_map_path: "D:/src/Wind/WindObjectDetector/data/labels.pbtxt"
  shuffle: false
  num_epochs: 1
  num_readers: 1
  tf_record_input_reader {
    input_path: "D:/src/Wind/WindObjectDetector/data/val.record"
  }
  sample_1_of_n_examples: 1
}

培训配置:

train_config {
  batch_size: 8
  data_augmentation_options {
    random_horizontal_flip {
    }
  }
  data_augmentation_options {
    ssd_random_crop {
    }
  }
  optimizer {
    rms_prop_optimizer {
      learning_rate {
        exponential_decay_learning_rate {
          initial_learning_rate: 0.0010000000474974513
          decay_steps: 1017
          decay_factor: 0.949999988079071
        }
      }
      momentum_optimizer_value: 0.8999999761581421
      decay: 0.8999999761581421
      epsilon: 1.0
    }
  }
  fine_tune_checkpoint: "D:/src/Wind/WindObjectDetector/experiments/test2/tl/model.ckpt"
  from_detection_checkpoint: true
  num_steps: 25400
}

我真正想要的是我进行常规图像分类和分割的工作流程。也就是说,训练一个时期(num_images // batch_size个迭代)。然后评估验证集一个时期,然后重复。因此,每个循环我都会看到每个图像一次,并对每个(验证)图像进行一次评估。此时,我很乐意接受培训。

1 个答案:

答案 0 :(得分:1)

训练和评估是对象检测API中两个独立的步骤。您必须运行train.py进行培训,并运行eval.py进行评估。如果要在训练过程中进行评估,则两个脚本必须并行运行。我真的不能说为什么您只训练10分钟,而没有看到配置文件的训练部分。您训练多少步?

如果要在每个时期之后进行评估,则必须在每个时期之后生成一个检查点(要更改检查点生成频率,请查看here)。生成新的检查点时,评估脚本将自动评估该新检查点。