1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_roi_pooling_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
10 using namespace InferenceEngine;
12 Builder::ROIPoolingLayer::ROIPoolingLayer(const std::string& name): LayerDecorator("ROIPooling", name) {
13 getLayer()->getOutputPorts().resize(1);
17 Builder::ROIPoolingLayer::ROIPoolingLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
18 checkType("ROIPooling");
21 Builder::ROIPoolingLayer::ROIPoolingLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
22 checkType("ROIPooling");
25 Builder::ROIPoolingLayer& Builder::ROIPoolingLayer::setName(const std::string& name) {
26 getLayer()->setName(name);
29 const std::vector<Port>& Builder::ROIPoolingLayer::getInputPorts() const {
30 return getLayer()->getInputPorts();
32 Builder::ROIPoolingLayer& Builder::ROIPoolingLayer::setInputPorts(const std::vector<Port>& ports) {
33 if (ports.size() != 2)
34 THROW_IE_EXCEPTION << "ROIPoolingLayer should have 2 inputs!";
35 getLayer()->getInputPorts() = ports;
38 const Port& Builder::ROIPoolingLayer::getOutputPort() const {
39 return getLayer()->getOutputPorts()[0];
41 Builder::ROIPoolingLayer& Builder::ROIPoolingLayer::setOutputPort(const Port& port) {
42 getLayer()->getOutputPorts()[0] = port;
45 float Builder::ROIPoolingLayer::getSpatialScale() const {
46 return getLayer()->getParameters().at("spatial_scale");
48 Builder::ROIPoolingLayer& Builder::ROIPoolingLayer::setSpatialScale(float spatialScale) {
49 getLayer()->getParameters()["spatial_scale"] = spatialScale;
52 const std::vector<int> Builder::ROIPoolingLayer::getPooled() const {
53 return {getLayer()->getParameters().at("pooled_h"),
54 getLayer()->getParameters().at("pooled_w")};
56 Builder::ROIPoolingLayer& Builder::ROIPoolingLayer::setPooled(const std::vector<int>& pooled) {
57 if (pooled.size() != 2)
58 THROW_IE_EXCEPTION << "ROIPoolingLayer supports only pooled for height and width dimensions";
59 getLayer()->getParameters()["pooled_h"] = pooled[0];
60 getLayer()->getParameters()["pooled_w"] = pooled[1];
64 REG_CONVERTER_FOR(ROIPooling, [](const CNNLayerPtr& cnnLayer, Builder::Layer& layer) {
65 layer.getParameters()["pooled_h"] = cnnLayer->GetParamAsInt("pooled_h", 0);
66 layer.getParameters()["pooled_w"] = cnnLayer->GetParamAsInt("pooled_w", 0);
67 layer.getParameters()["spatial_scale"] = cnnLayer->GetParamAsFloat("spatial_scale");