如何在Tensorflow Object Detection API v2中同时训练和评估

问题描述

我想知道如何在Tf2对象检测API中的每个检查点训练和评估模型。 他们在文档中建议先训练然后评估模型

培训

python object_detection/model_main_tf2.py \
    --pipeline_config_path=${PIPELINE_CONfig_PATH} \
    --model_dir=${MODEL_DIR} \
    --alsologtostderr

评估

python object_detection/model_main_tf2.py \
    --pipeline_config_path=${PIPELINE_CONfig_PATH} \
    --model_dir=${MODEL_DIR} \
    --checkpoint_dir=${CHECKPOINT_DIR} \
    --alsologtostderr

我想要做的是训练,并在创建每个检查点(1000个步骤)后进行评估。 我知道在TF-1对象检测API中,评估是在每1000个步骤中自动完成的,而我想在TF-2中复制的内容

解决方法

根据model_main_tf2.py,他们在每个时期都留下了一个评估标记,但仅适用于分布式训练: https://github.com/tensorflow/models/blob/master/research/object_detection/model_main_tf2.py#L37-L38

但是,我认为当他们通过包含评价数据添加一些标记时,他们正在尽快使之可用: https://github.com/tensorflow/models/blob/master/research/object_detection/model_main_tf2.py#L39-L44

有关更多详细信息,您可以查看他们的here的训练功能,有关其训练工作流程的介绍。您可以看到他们尚未实施评估: https://github.com/tensorflow/models/blob/master/research/object_detection/model_lib_v2.py#L419

因此,您必须通过使用lib here创建一个新的train_file来解决,该lib_ {3}}具有由他们创建的评估方法,并附加到您的训练文件中以评估每个时期。或者您可以等待:D