过去2个月,我一直在尝试训练对象检测模型,并通过遵循此tutorial终于成功。
这是我的colab,其中包含我的所有作品。
问题是,显示了训练损失,并且平均在减少,但是没有验证损失。
在pipeline.config
文件中,我确实输入了评估TFRecord文件(我假设它是验证数据输入),如下所示:
eval_config {
metrics_set:“ coco_detection_metrics”
use_moving_averages:假
}
eval_input_reader {
label_map_path:“注释/label_map.pbtxt”
随机播放:false
num_epochs:1
tf_record_input_reader {
input_path:“注释/测试记录”
}
}
我通读了model_main_tf2.py,它似乎在训练时不会评估,而只会在提到checkpoint_dir时评估。
因此,我只能监视训练集上的损失,而不能监视验证集上的损失。
结果,我不知道是否合适。
您有没有人成功使用model_main_tf2.py查看验证丢失?
此外,很高兴在训练中看到mAP分数。
我知道keras训练允许在张量板上看到所有这些内容,但是OD API似乎要困难得多。
感谢您的时间,如果您仍然对某些事情感到困惑,请告诉我。
答案 0 :(得分:1)
您必须打开另一个终端,然后运行此命令
python model_main_tf2.py \
--model_dir=models/my_ssd_resnet50_v1_fpn \
--pipeline_config_path=models/my_ssd_resnet50_v1_fpn/pipeline.config \
--checkpoint_dir=models/my_ssd_resnet50_v1_fpn
该API tutorial在该主题上不清楚。我有完全一样的问题。
事实证明,评估过程未包含在训练循环中,您必须以并行方式启动它。
它将等待并说出waiting for new checkpoint
,这意味着您将使用以下内容开始培训:
python model_main_tf2.py --model_dir=models/my_ssd_resnet50_v1_fpn --pipeline_config_path=models/my_ssd_resnet50_v1_fpn/pipeline.config # note that the checkpoint_dir argument is not there
您的eval_interval_secs
中的每个eval_config
将运行一次评估。
根据文档,评估指标将存储在eval_0目录中您的检查点旁边,然后您就可以在tensorboard中进行绘制。
我同意这很难理解,因为它在文档中不是很清楚,并且也不太方便,因为我不得不分配另一个GPU进行评估以避免CUDA内存不足的问题
祝你有美好的一天