Files
openvino/model-optimizer/extensions/ops/DetectionOutput.py
T

57 lines
1.9 KiB
Python
Raw Normal View History

# Copyright (C) 2018-2021 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
2018-10-16 13:45:03 +03:00
2020-02-11 22:48:49 +03:00
import numpy as np
2018-10-16 13:45:03 +03:00
from mo.front.common.partial_infer.multi_box_detection import multi_box_detection_infer
2021-01-29 10:08:06 +03:00
from mo.front.extractor import bool_to_str
2020-02-11 22:48:49 +03:00
from mo.graph.graph import Graph, Node
2018-10-16 13:45:03 +03:00
from mo.ops.op import Op
class DetectionOutput(Op):
op = 'DetectionOutput'
enabled = True
2019-04-12 18:25:53 +03:00
def __init__(self, graph: Graph, attrs: dict):
2018-10-16 13:45:03 +03:00
super().__init__(graph, {
2020-02-11 22:48:49 +03:00
'type': self.op,
'op': self.op,
'version': 'opset1',
2019-04-12 18:25:53 +03:00
'in_ports_count': 3,
'out_ports_count': 1,
2018-10-16 13:45:03 +03:00
'infer': multi_box_detection_infer,
2019-01-21 21:31:31 +03:00
'input_width': 1,
'input_height': 1,
2021-01-29 10:08:06 +03:00
'normalized': True,
'share_location': True,
'clip_after_nms': False,
'clip_before_nms': False,
'decrease_label_id': False,
'variance_encoded_in_target': False,
2020-02-11 22:48:49 +03:00
'type_infer': self.type_infer,
2018-10-16 13:45:03 +03:00
}, attrs)
def supported_attrs(self):
return [
'background_label_id',
2021-01-29 10:08:06 +03:00
('clip_after_nms', lambda node: bool_to_str(node, 'clip_after_nms')),
('clip_before_nms', lambda node: bool_to_str(node, 'clip_before_nms')),
2018-10-16 13:45:03 +03:00
'code_type',
'confidence_threshold',
2021-01-29 10:08:06 +03:00
('decrease_label_id', lambda node: bool_to_str(node, 'decrease_label_id')),
2018-10-16 13:45:03 +03:00
'input_height',
'input_width',
'keep_top_k',
'nms_threshold',
2021-01-29 10:08:06 +03:00
('normalized', lambda node: bool_to_str(node, 'normalized')),
2018-10-16 13:45:03 +03:00
'num_classes',
2021-01-29 10:08:06 +03:00
('share_location', lambda node: bool_to_str(node, 'share_location')),
2018-10-16 13:45:03 +03:00
'top_k',
2021-01-29 10:08:06 +03:00
('variance_encoded_in_target', lambda node: bool_to_str(node, 'variance_encoded_in_target')),
2019-04-12 18:25:53 +03:00
'objectness_score',
2018-10-16 13:45:03 +03:00
]
2020-02-11 22:48:49 +03:00
@staticmethod
def type_infer(node: Node):
node.out_port(0).set_data_type(np.float32)