Я бы хотел оценить обученную пользователем модель обнаружения объектов Tensorflow на новом тестовом наборе с помощью Google Cloud.
Я получил начальные контрольные точки от:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
Я знаю, что API-интерфейс обнаружения объектов Tensorflow позволяет мне одновременно проводить обучение и оценку с помощью:
https://github.com/tensorflow/models/blob/master/research/object_detection/model_main.py
Чтобы начать такую работу, я отправляю следующую команду ml-engine:
gcloud ml-engine jobs submit training [JOBNAME]
--runtime-version 1.9
--job-dir=gs://path_to_bucket/model-dir
--packages dist/object_detection-
0.1.tar.gz,slim/dist/slim-0.1.tar.gz,pycocotools-2.0.tar.gz
--module-name object_detection.model_main
--region us-central1
--config object_detection/samples/cloud/cloud.yml
--
--model_dir=gs://path_to_bucket/model_dir
--pipeline_config_path=gs://path_to_bucket/data/model.config
Однако, после того, как я успешно обучил модели переноса, я хотел бы использовать расчетные метрики производительности, такие как COCO mAP (http://cocodataset.org/#detection-eval) или PASCAL mAP (http://host.robots.ox.ac.uk/pascal/VOC/pubs/everingham10.pdf)) в новом наборе тестовых данных который ранее не использовался (ни во время обучения, ни во время оценки).
Я видел, что в model_main.py:
есть возможный флаг
flags.DEFINE_string(
'checkpoint_dir', None, 'Path to directory holding a checkpoint. If '
'`checkpoint_dir` is provided, this binary operates in eval-only
mode, '
'writing resulting metrics to `model_dir`.')
Но я не знаю, действительно ли это означает, что model_main.py можно запустить в монопольном режиме оценки? Если да, то как мне отправить задание ML-Engine?
В качестве альтернативы, есть ли какие-либо функции в Tensorflow API, которые позволяют мне оценивать существующий выходной словарь (содержащий ограничивающие рамки, метки классов, оценки) на основе COCO и / или Pascal mAP? Если есть, я мог бы легко прочитать локально в файле записей Tensorflow, выполнить вывод и затем оценить выходной словарь.
Я знаю, как получить эти метрики для набора данных оценки, который оценивается во время обучения в model_main.py. Тем не менее, исходя из моего понимания, я все равно должен сообщать о производительности модели на новом наборе тестовых данных, поскольку я сравниваю несколько моделей и реализую некоторую оптимизацию гиперпараметров, и, таким образом, я не должен сообщать о наборе данных оценки, я прав? На более общей ноте: я действительно не могу понять, почему можно было бы перейти от отдельного обучения и оценки (как это происходит в унаследованном коде) к комбинированному сценарию обучения и оценки?
Edit:
Я нашел два связанных поста. Однако я не думаю, что предоставленные ответы полны:
как проверить обе тренировочные / тестовые характеристики в тензорном потоке object_detection
Как оценить предварительно обученную модель в API обнаружения объекта Tensorflow
Последний был написан, в то время как API обнаружения объектов TF все еще имел отдельные сценарии оценки и обучения. Это уже не так.
Большое спасибо за любую помощь.