如何评估转换后的ftlite模型的准确性损失?

时间:2019-03-12 11:36:06

标签: tensorflow object-detection tensorflow-lite

我基于ssd-moblienet算法训练了一个模型,并使用eval.py脚本评估了模型的mAP。

我需要在iOS上使用此模型,因此我将其转换为tflite模型,并且现在可以使用。

我想分析在模型转换前后通过mAP值转换模型时的精度损失。是否有类似于eval.py的脚本可以计算tflite模型的mAP值?

或者还有其他更好的方法吗?

我是使用tensorflow的新手,谢谢您的回答。

2 个答案:

答案 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模型预测结果,从而给出准确的输出。