我基于ssd-moblienet算法训练了一个模型,并使用eval.py脚本评估了模型的mAP。
我需要在iOS上使用此模型,因此我将其转换为tflite模型,并且现在可以使用。
我想分析在模型转换前后通过mAP值转换模型时的精度损失。是否有类似于eval.py的脚本可以计算tflite模型的mAP值?
或者还有其他更好的方法吗?
我是使用tensorflow的新手,谢谢您的回答。
答案 0 :(得分:1)
没有任何官方脚本。您将编写一个自定义脚本,该脚本使用在model/research/object_detection/metrics
处找到的Tensorflow的指标API,将检测结果和groundtruth作为参数传递。
一个例子
# Append to $PYTHONPATH path to models/research and cocoapi/PythonAPI
from object_detection.metrics import coco_evaluation
from object_detection.core import standard_fields
from object_detection.utils.label_map_util import create_categories_from_labelmap, get_label_map_dict
def evaluate_single_image(image_path, annotation_path, label_file):
""" Evaluate mAP on image
args:
image_path: path to image
annotation_path: path to groundtruth in Pascal VOC format .xml
label_file: path to label_map.pbtxt
"""
categories = create_categories_from_labelmap(label_file)
label_map_dict = get_label_map_dict(label_file)
coco_evaluator = coco_evaluation.CocoDetectionEvaluator(categories)
image_name = os.path.basename(image_path).split('.')[0]
# Read groundtruth (here, an XML file in Pascal VOC format)
gt_boxes, gt_classes = voc_parser(annotation_path, label_map_dict)
# Get the detection after post processing
dt_boxes, dt_classes, dt_scores, num_det = postprocess_output(image_path)
coco_evaluator.add_single_ground_truth_image_info(
image_id=image_name,
groundtruth_dict={
standard_fields.InputDataFields.groundtruth_boxes:
np.array(gt_boxes),
standard_fields.InputDataFields.groundtruth_classes:
np.array(gt_classes)
})
coco_evaluator.add_single_detected_image_info(
image_id=image_name,
detections_dict={
standard_fields.DetectionResultFields.detection_boxes:
dt_boxes,
standard_fields.DetectionResultFields.detection_scores:
dt_scores,
standard_fields.DetectionResultFields.detection_classes:
dt_classes
})
coco_evaluator.evaluate()
这是最小的inference script,它具有针对单个图像的输入预处理,输出后处理,事实真相解析和mAP评估。
有关其他指标,请参考model/research/object_detection/metrics/*_test.py
。
答案 1 :(得分:0)
要评估您的tflite模型,可以使用TensorFlow Lite Python interpreter。 该解释器使用tflite模型预测结果,从而给出准确的输出。