Я хотел бы иметь свой собственный список метрик при оценке модели сегментации экземпляра в API обнаружения объектов Tensorflow, который можно суммировать следующим образом:
- Точность значений для операций ввода-вывода 0,5-0,95 сс приращениями 0,05
- Значения восстановления для IOU 0,5-0,95 с приращениями 0,05
- Значения AUC для точности и повторного вызова в диапазоне 0-1 с шагом 0,05
В настоящее время я протестировал модификацию уже существующих показателей оценки кокосов путем настройки некоторого кода PycocAPI в PythonAPI и файла дополнительных показателей в исследовательской модели Tensorflow.В настоящее время значения вывода по умолчанию для оценки COCO следующие:
Precision/mAP
Precision/mAP@.50IOU
Precision/mAP@.75IOU
Precision/mAP (small)
Precision/mAP (medium)
Precision/mAP (large)
Recall/AR@1
Recall/AR@10
Recall/AR@100
Recall/AR@100 (small)
Recall/AR@100 (medium)
Recall/AR@100 (large)
Поэтому я решил сначала использовать coco_detection_metrics
в моем поле eval_config
внутри файла .config, используемого для обучения
eval_config: {
metrics_set: "coco_detection_metrics"
}
И редактируйте cocoeval.py
и cocotools.py
несколько раз (пропорционально количеству значений), добавляя больше элементов в список статистики и общий словарь статистики, чтобы получить желаемый результат.В демонстрационных целях я собираюсь показать только один пример, добавив точность при IOU = 0,55 на вершину точности при IOU = 0,5.
Итак, это модифицированный метод класса COCOeval
внутри cocoeval.py
def _summarizeDets():
stats[1] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])
stats[12] = _summarize(1, iouThr=.5, maxDets=self.params.maxDets[2])
и отредактированные методы класса COCOEvalWrapper
внутри coco_tools.py
summary_metrics = OrderedDict([
('Precision/mAP@.50IOU', self.stats[1]),
('Precision/mAP@.55IOU', self.stats[12])
for category_index, category_id in enumerate(self.GetCategoryIdList()):
per_category_ap['Precision mAP@.50IOU ByCategory/{}'.format( category)] = self.category_stats[1][category_index]
per_category_ap['Precision mAP@.55IOU ByCategory/{}'.format( category)] = self.category_stats[12][category_index]
Было бы полезноЯ знаю более эффективный способ решения моей проблемы и легко запрашиваю список пользовательских метрик оценки без необходимости настраивать уже существующие файлы COCO.В идеале моя цель primary состоит в том, чтобы
- иметь возможность создавать настраиваемый вывод консоли на основе показателей, приведенных в начале вопроса
и мои второстепенные цели:
- Экспорт метрик с соответствующими значениями в формате JSON
- Визуализация трех графиков в Tensorboard