MCPcopy Create free account
hub / github.com/Xilinx/CHaiDNN / ExtractPriorBoxParameters

Function ExtractPriorBoxParameters

software/xtract/caffe_network_parser.cpp:2197–2395  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2195}
2196
2197void ExtractPriorBoxParameters(const caffe::LayerParameter& src, XGraph& graph)
2198{
2199 // Map the Caffe layer type to anonymoX layer type
2200 caffe::PriorBoxParameter src_parameter = src.prior_box_param();
2201 mapStrStr::const_iterator it_type = CaffeLayerMap.find(src.type());
2202 string xlayerType = it_type->second;
2203
2204 // Parse the input/output connections
2205 checkNumberOfTopAndBottom(src, 2, 1);
2206
2207 // Create new XLayer
2208 XLayer* dst = new XLayer(src.name(), xlayerType, src.top(0));
2209
2210 // min_size [MANDATORY] TODO : Currently one & only-one value of min_size is allowed
2211 ASSERT( src_parameter.min_size_size() > 0, EP043, "min_size is not specified for PriorBox Layer: " << src.name())
2212 std::copy(src_parameter.min_size().begin(), src_parameter.min_size().end(), std::back_inserter(dst->priorbox_params->min_size));
2213
2214 // max_size [OPIONAL as per SSDv3. MANDATORY as per SSDv4]. What TODO?
2215 // ASSERT( src_parameter.max_size_size() > 0, EP044, "max_size is not specified for PriorBox Layer: " << src.name())
2216 std::copy(src_parameter.max_size().begin(), src_parameter.max_size().end(), std::back_inserter(dst->priorbox_params->max_size));
2217
2218 // aspect_ratio [OPTIONAL]
2219 if(src_parameter.aspect_ratio_size() > 0)
2220 {
2221 std::copy(src_parameter.aspect_ratio().begin(), src_parameter.aspect_ratio().end(), std::back_inserter(dst->priorbox_params->aspect_ratio));
2222 }
2223
2224 // flip [OPTIONAL, default = true]
2225 dst->priorbox_params->flip = src_parameter.has_flip() ? src_parameter.flip() : true;
2226
2227 // clip [OPTIONAL, default = false]
2228 dst->priorbox_params->clip = src_parameter.has_clip() ? src_parameter.clip() : false;
2229
2230 // step [OPTIONAL as per SSDv3]
2231 ELOG( src_parameter.has_step() && (src_parameter.has_step_h() || src_parameter.has_step_w()), EP103,
2232 "Please specify either step or step_h/step_w for PriorBox Layer: " << src.name() << ". Not both.")
2233 // #. Check if only one of step_h and step_w is provided.
2234 ELOG( (src_parameter.has_step_h() != src_parameter.has_step_w()), EP104,
2235 "Please specify both step_h and step_w for PriorBox Layer: " << src.name())
2236 ELOG( src_parameter.has_step() && src_parameter.step() <= 0, EP108, "step should be >0 for PriorBox Layer: " << src.name())
2237 ELOG( src_parameter.has_step_h() && src_parameter.step_h() <= 0, EP109, "step_h should be >0 for PriorBox Layer: " << src.name())
2238 ELOG( src_parameter.has_step_w() && src_parameter.step_w() <= 0, EP110, "step_w should be >0 for PriorBox Layer: " << src.name())
2239
2240 if(src_parameter.has_step())
2241 {
2242 dst->priorbox_params->step = src_parameter.step();
2243 dst->priorbox_params->step_h = src_parameter.step();
2244 dst->priorbox_params->step_w = src_parameter.step();
2245 }
2246 else if(src_parameter.has_step_h() && src_parameter.has_step_w())
2247 {
2248 dst->priorbox_params->step = 0;
2249 dst->priorbox_params->step_h = src_parameter.step_h();
2250 dst->priorbox_params->step_w = src_parameter.step_w();
2251 }
2252 else
2253 {
2254 dst->priorbox_params->step = 0;

Callers 1

ExtractParametersFunction · 0.85

Calls 15

nameIndexClass · 0.85
computePriorBoxesFunction · 0.85
min_size_sizeMethod · 0.80
min_sizeMethod · 0.80
aspect_ratio_sizeMethod · 0.80
aspect_ratioMethod · 0.80
has_flipMethod · 0.80
has_clipMethod · 0.80
clipMethod · 0.80
has_stepMethod · 0.80
has_step_hMethod · 0.80

Tested by

no test coverage detected