1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <builders/ie_prior_box_clustered_layer.hpp>
6 #include <ie_cnn_layer_builder.h>
11 using namespace InferenceEngine;
13 Builder::PriorBoxClusteredLayer::PriorBoxClusteredLayer(const std::string& name): LayerDecorator("PriorBoxClustered", name) {
14 getLayer()->getOutputPorts().resize(1);
15 getLayer()->getInputPorts().resize(2);
18 Builder::PriorBoxClusteredLayer::PriorBoxClusteredLayer(const Layer::Ptr& layer): LayerDecorator(layer) {
19 checkType("PriorBoxClustered");
22 Builder::PriorBoxClusteredLayer::PriorBoxClusteredLayer(const Layer::CPtr& layer): LayerDecorator(layer) {
23 checkType("PriorBoxClustered");
26 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setName(const std::string& name) {
27 getLayer()->setName(name);
31 const std::vector<Port>& Builder::PriorBoxClusteredLayer::getInputPorts() const {
32 return getLayer()->getInputPorts();
35 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setInputPorts(const std::vector<Port> &ports) {
36 if (ports.size() != 2)
37 THROW_IE_EXCEPTION << "Incorrect number of inputs for PriorBoxClustered getLayer().";
38 getLayer()->getInputPorts() = ports;
42 const Port& Builder::PriorBoxClusteredLayer::getOutputPort() const {
43 return getLayer()->getOutputPorts()[0];
46 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setOutputPort(const Port &port) {
47 getLayer()->getOutputPorts()[0] = port;
51 float Builder::PriorBoxClusteredLayer::getVariance() const {
52 return getLayer()->getParameters().at("variance");
54 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setVariance(float variance) {
55 getLayer()->getParameters()["variance"] = variance;
59 float Builder::PriorBoxClusteredLayer::getOffset() const {
60 return getLayer()->getParameters().at("offset");
62 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setOffset(float offset) {
63 getLayer()->getParameters()["offset"] = offset;
67 float Builder::PriorBoxClusteredLayer::getWidth() const {
68 return getLayer()->getParameters().at("width");
70 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setWidth(float width) {
71 getLayer()->getParameters()["width"] = width;
75 float Builder::PriorBoxClusteredLayer::getHeight() const {
76 return getLayer()->getParameters().at("height");
78 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setHeight(float height) {
79 getLayer()->getParameters()["height"] = height;
83 const std::vector<float> Builder::PriorBoxClusteredLayer::getSteps() const {
84 return {getLayer()->getParameters().at("step_h"), getLayer()->getParameters().at("step_w")};
86 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setSteps(const std::vector<float> steps) {
87 if (steps.size() != 2)
88 THROW_IE_EXCEPTION << "PriorBoxClusteredLayer supports sizes only for height and width dimensions!";
89 getLayer()->getParameters()["step_h"] = steps[0];
90 getLayer()->getParameters()["step_w"] = steps[1];
94 const std::vector<float> Builder::PriorBoxClusteredLayer::getImgSizes() const {
95 return {getLayer()->getParameters().at("img_h"), getLayer()->getParameters().at("img_w")};
97 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setImgSizes(const std::vector<float> sizes) {
98 if (sizes.size() != 2)
99 THROW_IE_EXCEPTION << "PriorBoxClusteredLayer allows to specify only height and width dimensions of an input image!";
100 getLayer()->getParameters()["img_h"] = sizes[0];
101 getLayer()->getParameters()["img_w"] = sizes[1];
105 float Builder::PriorBoxClusteredLayer::getStep() const {
106 return getLayer()->getParameters().at("step");
108 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setStep(float step) {
109 getLayer()->getParameters()["step"] = step;
113 bool Builder::PriorBoxClusteredLayer::getClip() const {
114 return getLayer()->getParameters().at("clip");
116 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setClip(bool flag) {
117 getLayer()->getParameters()["clip"] = flag;
121 bool Builder::PriorBoxClusteredLayer::getFlip() const {
122 return getLayer()->getParameters().at("flip");
124 Builder::PriorBoxClusteredLayer& Builder::PriorBoxClusteredLayer::setFlip(bool flag) {
125 getLayer()->getParameters()["flip"] = flag;
129 REG_CONVERTER_FOR(PriorBoxClustered, [](const CNNLayerPtr& cnnLayer, Builder::Layer& layer) {
130 layer.getParameters()["flip"] = cnnLayer->GetParamAsBool("flip", false);
131 layer.getParameters()["clip"] = cnnLayer->GetParamAsBool("clip", false);
132 layer.getParameters()["step"] = cnnLayer->GetParamAsFloat("step");
133 layer.getParameters()["img_h"] = cnnLayer->GetParamAsFloat("img_h", 0);
134 layer.getParameters()["img_w"] = cnnLayer->GetParamAsFloat("img_w", 0);
135 layer.getParameters()["step_h"] = cnnLayer->GetParamAsFloat("step_h", 0);
136 layer.getParameters()["step_w"] = cnnLayer->GetParamAsFloat("step_w", 0);
137 layer.getParameters()["height"] = cnnLayer->GetParamAsFloat("height", 0);
138 layer.getParameters()["width"] = cnnLayer->GetParamAsFloat("width", 0);
139 layer.getParameters()["offset"] = cnnLayer->GetParamAsFloat("offset", 0);
140 layer.getParameters()["variance"] = cnnLayer->GetParamAsFloat("variance", 0);