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

How to train and eval at the same time in 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

但是,我认为当他们通过包含 evaluation_data 添加一些标志时,他们很快就会提供它: 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

因此,您必须通过创建一个新的 train_file 来解决这个问题,它使用库 here 以及他们创建的一些评估方法,并将其附加到您的训练文件中以评估每个时期.或者你可以等待 :D