Я настроил модель Fast_rcnn_resnet101, доступную в модели Zoo для обнаружения моих пользовательских объектов. У меня были данные, разделенные на набор train и eval, и я использовал их в файле конфигурации во время обучения. Теперь, после завершения обучения, я хочу протестировать свою модель на невидимых данных (я называю это тестовыми данными). Я использовал несколько функций, но не могу точно определить, какой код использовать из API-интерфейса tenorflow для оценки производительности тестового набора данных. Вот то, что я пробовал:
- Я использовал функцию object_detection / metrics / offline_eval_map_corloc.py, чтобы получить оценку тестового набора данных. Код работает нормально, но я имею отрицательные значения или AR и AP для ограничивающих прямоугольников большого и среднего размера.
Средняя точность (AP) @ [IoU = 0,50: 0,95 | площадь = все | maxDets = 100] = 0,459
Средняя точность (AP) @ [IoU = 0,50 | площадь = все | maxDets = 100] = 0,601
Средняя точность (AP) @ [IoU = 0,75 | площадь = все | maxDets = 100] = 0,543
Средняя точность (AP) @ [IoU = 0,50: 0,95 | площадь = малая | maxDets = 100] = 0,459
Средняя точность (AP) @ [IoU = 0,50: 0,95 | площадь = средняя | maxDets = 100] = -1,000
Средняя точность (AP) @ [IoU = 0,50: 0,95 | площадь = большая | maxDets = 100] = -1,000
Средний отзыв (AR) @ [IoU = 0,50: 0,95 | площадь = все | maxDets = 1] = 0,543
Средний отзыв (AR) @ [IoU = 0,50: 0,95 | площадь = все | maxDets = 10] = 0,627
Средний отзыв (AR) @ [IoU = 0,50: 0,95 | площадь = все | maxDets = 100] = 0,628
Средний отзыв (AR) @ [IoU = 0,50: 0,95 | площадь = малая | maxDets = 100] = 0,628
Средний отзыв (AR) @ [IoU = 0,50: 0,95 | площадь = средняя | maxDets = 100] = -1,000
Средний отзыв (AR) @ [IoU = 0,50: 0,95 | площадь = большая | maxDets = 100] = -1,000
Теперь я знаю, что mAP и AR не могут быть отрицательными, и что-то не так. Я хочу знать, почему я вижу отрицательные значения при выполнении автономной оценки тестового набора данных?
Запрос, который я использовал для запуска этого конвейера: SPLIT = test.
echo "
label_map_path: '/training_demo/annotations/label_map.pbtxt'
tf_record_input_reader: { input_path: '/training_demo/Predictions/test.record' }
" > /training_demo/${SPLIT}_eval_metrics/${SPLIT}_input_config.pbtxt
echo "
metrics_set: 'coco_detection_metrics'
" > /training_demo/${SPLIT}_eval_metrics/${SPLIT}_eval_config.pbtxt
python object_detection/metrics/offline_eval_map_corloc.py \
--eval_dir='/training_demo/test_eval_metrics' \
--eval_config_path='training_demo/test_eval_metrics/test_eval_config.pbtxt' \
--input_config_path='/training_demo/test_eval_metrics/test_input_config.pbtxt'
- Я также пробовал object_detection / legacy / eval.py, но получаю отрицательные значения для показателей оценки:
DetectionBoxes_Recall / AR @ 100 (средний): -1.0 DetectionBoxes_Recall / AR @ 100 (маленький): -1.0 DetectionBoxes_Precision / mAP @ .50IOU: -1.0 DetectionBoxes_Precision / mAP (средний): -1,0 и т. Д.
Я использовал конвейер, python eval.py \ --logtostderr \ --checkpoint_dir = обученные-выводы-графики / output_inference_graph / \ --eval_dir = test_eval_metrics \ --pipeline_config_path = training / fast_rcnn_resnet101_coco-Copy1.config
Eval_input_reader в fast_rcnn_resnet101_coco-Copy1.config указывает на тестовый TFRecord с достоверной информацией и информацией об обнаружении.
- Я также попробовал object_detection / utils / object_detection_evaluation, чтобы получить оценку. Это ничем не отличается от первого подхода, потому что в нем бесполезны одни и те же базовые функции - evalator.evaluate ()
Буду признателен за любую помощь в этом.