1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_proposal_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
11 using namespace InferenceEngine;
13 Builder::ProposalLayer::ProposalLayer(const std::string& name): LayerDecorator("Proposal", name) {
14 getLayer()->getOutputPorts().resize(1);
15 getLayer()->getInputPorts().resize(3);
18 Builder::ProposalLayer::ProposalLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
19 checkType("Proposal");
22 Builder::ProposalLayer::ProposalLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
23 checkType("Proposal");
26 Builder::ProposalLayer& Builder::ProposalLayer::setName(const std::string& name) {
27 getLayer()->setName(name);
31 const std::vector<Port>& Builder::ProposalLayer::getInputPorts() const {
32 return getLayer()->getInputPorts();
35 Builder::ProposalLayer& Builder::ProposalLayer::setInputPorts(const std::vector<Port> &ports) {
36 if (ports.size() != 3)
37 THROW_IE_EXCEPTION << "Incorrect number of inputs for Proposal getLayer().";
38 getLayer()->getInputPorts() = ports;
42 const Port& Builder::ProposalLayer::getOutputPort() const {
43 return getLayer()->getOutputPorts()[0];
46 Builder::ProposalLayer& Builder::ProposalLayer::setOutputPort(const Port &port) {
47 getLayer()->getOutputPorts()[0] = port;
51 size_t Builder::ProposalLayer::getPostNMSTopN() const {
52 return getLayer()->getParameters().at("post_nms_topn");
54 Builder::ProposalLayer& Builder::ProposalLayer::setPostNMSTopN(size_t topN) {
55 getLayer()->getParameters()["post_nms_topn"] = topN;
58 size_t Builder::ProposalLayer::getPreNMSTopN() const {
59 return getLayer()->getParameters().at("pre_nms_topn");
61 Builder::ProposalLayer& Builder::ProposalLayer::setPreNMSTopN(size_t topN) {
62 getLayer()->getParameters()["pre_nms_topn"] = topN;
65 float Builder::ProposalLayer::getNMSThresh() const {
66 return getLayer()->getParameters().at("nms_thresh");
68 Builder::ProposalLayer& Builder::ProposalLayer::setNMSThresh(float thresh) {
69 getLayer()->getParameters()["nms_thresh"] = thresh;
72 size_t Builder::ProposalLayer::getBaseSize() const {
73 return getLayer()->getParameters().at("base_size");
75 Builder::ProposalLayer& Builder::ProposalLayer::setBaseSize(size_t baseSize) {
76 getLayer()->getParameters()["base_size"] = baseSize;
79 size_t Builder::ProposalLayer::getMinSize() const {
80 return getLayer()->getParameters().at("min_size");
82 Builder::ProposalLayer& Builder::ProposalLayer::setMinSize(size_t minSize) {
83 getLayer()->getParameters()["min_size"] = minSize;
86 size_t Builder::ProposalLayer::getFeatStride() const {
87 return getLayer()->getParameters().at("feat_stride");
89 Builder::ProposalLayer& Builder::ProposalLayer::setFeatStride(size_t featStride) {
90 getLayer()->getParameters()["feat_stride"] = featStride;
93 const std::vector<float> Builder::ProposalLayer::getScale() const {
94 return getLayer()->getParameters().at("scale");
96 Builder::ProposalLayer& Builder::ProposalLayer::setScale(const std::vector<float>& scales) {
97 getLayer()->getParameters()["scale"] = scales;
100 const std::vector<float> Builder::ProposalLayer::getRatio() const {
101 return getLayer()->getParameters().at("ratio");
103 Builder::ProposalLayer& Builder::ProposalLayer::setRatio(const std::vector<float>& ratios) {
104 getLayer()->getParameters()["ratio"] = ratios;
108 REG_CONVERTER_FOR(Proposal, [](const CNNLayerPtr& cnnLayer, Builder::Layer& layer) {
109 layer.getParameters()["post_nms_topn"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("post_nms_topn", 0));
110 layer.getParameters()["pre_nms_topn"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("pre_nms_topn", 0));
111 layer.getParameters()["nms_thresh"] = cnnLayer->GetParamAsFloat("nms_thresh", 0);
112 layer.getParameters()["min_size"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("base_size", 0));
113 layer.getParameters()["max_size"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("max_size", 0));
114 layer.getParameters()["max_size"] = static_cast<size_t>(cnnLayer->GetParamAsUInt("feat_stride", 0));
115 layer.getParameters()["scale"] = cnnLayer->GetParamAsFloats("scale");
116 layer.getParameters()["ratio"] = cnnLayer->GetParamAsFloats("ratio");