如何使用 Tensorflow 2 对象检测 API 恢复微调模型以进行测试?

Posted

技术标签:

【中文标题】如何使用 Tensorflow 2 对象检测 API 恢复微调模型以进行测试?【英文标题】:How to restore a fine-tuned model with Tensorflow 2 Object Detection API for testing? 【发布时间】:2021-12-18 18:15:05 【问题描述】:

我已经成功训练(微调)并验证了来自 Tensorflow Model Zoo 2 的对象检测模型,使用以下配置:

... 
train_input_reader: 
  label_map_path: "/label_map.pbtxt"
  tf_record_input_reader 
    input_path: "/train.record"
  


eval_config: 
  metrics_set: "coco_detection_metrics" #coco_detection_metrics
  use_moving_averages: false
  batch_size: 1;


eval_input_reader: 
  label_map_path: "/label_map.pbtxt"
  shuffle: false
  num_epochs: 1
  tf_record_input_reader 
    input_path: "/validation.record"
  

...

然后我通过分析 Tensorboard 上的性能注意到,基于 eval loss 的最佳模型位于步骤 13k 即 ckpt-14。 但是,我也有 /test.record,我想在其上测试基于 ckpt.14 的模型。我能做什么?我尝试使用 ckpt-14.index e ckpt-14.data-... 创建一个单独的文件夹,并且名为“checkpoint”的文件仅包含 ckpt-14 及其时间戳,然后通过将validation.record替换为测试记录。在 tf_record_input_reader 中。

正确吗?有没有正确的方法来测试基于带有 tensorflow 2 对象检测 api 的检查点的模型?

【问题讨论】:

【参考方案1】:

您可以同时在同一个模型上训练和测试......但是如果您有一个 GPU,并且使用大型数据集进行训练,则可能无法使用同一个 GPU 运行测试,因为它会导致内存错误.....一个好方法是使用相同的代码并使用变通方法使用 CPU 进行测试.......测试周期每 1000 步在 Tensorboard 上进行一次,你可以看到测试和评估,你还会看到并排的边界框和ground truth……

我将尝试分享并发训练和测试的代码.....训练使用GPU,测试使用CPU......它一直在为我工作,没有怀疑,它也应该对你有用.....

【讨论】:

以上是关于如何使用 Tensorflow 2 对象检测 API 恢复微调模型以进行测试?的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用 tensorflow 对象检测来仅检测人员?

使用 Tensorflow 2 对象检测 API 冻结了哪些层?

如何解决 Tensorflow 2 对象检测 API 中的 UnicodeError

如何修改 ssd mobilenet 配置以使用 tensorflow 对象检测 API 检测小对象?

如何在 tensorflow 对象检测 API 中使用“忽略”类?

Tensorflow 对象检测 api:如何使用 imgaug 进行增强?