Skip to content

Commit 556307a

Browse files
committed
Merge pull request #1004 from dkurt:missed_layer_params
2 parents 06752e5 + d95fdc7 commit 556307a

File tree

2 files changed

+49
-16
lines changed

2 files changed

+49
-16
lines changed

modules/dnn/src/caffe/layer_loaders.cpp

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,22 @@ Ptr<Layer> createLayerFromCaffe<PoolingLayer>(LayerParams &params)
7272
pad.height, pad.width, stride.height, stride.width, padMode);
7373
//getCaffeConvParams(params, kernel, pad, stride);
7474

75+
Ptr<Layer> l;
7576
if (!globalPooling)
76-
return Ptr<Layer>(PoolingLayer::create(type, kernel, stride, pad, padMode));
77+
l = PoolingLayer::create(type, kernel, stride, pad, padMode);
7778
else
78-
return Ptr<Layer>(PoolingLayer::createGlobal(type));
79+
l = PoolingLayer::createGlobal(type);
80+
l->setParamsFrom(params);
81+
return l;
7982
}
8083

8184
template<>
8285
Ptr<Layer> createLayerFromCaffe<SoftmaxLayer>(LayerParams &params)
8386
{
8487
int axis = params.get<int>("axis", 1);
85-
return Ptr<Layer>(SoftmaxLayer::create(axis));
88+
Ptr<Layer> l(SoftmaxLayer::create(axis));
89+
l->setParamsFrom(params);
90+
return l;
8691
}
8792

8893
template<> //InnerProduct specialization
@@ -129,17 +134,21 @@ Ptr<Layer> createLayerFromCaffe<LRNLayer>(LayerParams& params)
129134
double bias = params.get<double>("bias", 1);
130135
bool normBySize = params.get<bool>("norm_by_size", true);
131136

132-
return Ptr<Layer>(LRNLayer::create(type, size, alpha, beta, bias, normBySize));
137+
Ptr<Layer> l(LRNLayer::create(type, size, alpha, beta, bias, normBySize));
138+
l->setParamsFrom(params);
139+
return l;
133140
}
134141

135142
template<>
136143
Ptr<Layer> createLayerFromCaffe<MVNLayer>(LayerParams &params)
137144
{
138-
return Ptr<Layer>(MVNLayer::create(
145+
Ptr<Layer> l(MVNLayer::create(
139146
params.get<bool>("normalize_variance", true),
140147
params.get<bool>("across_channels", false),
141148
params.get<double>("eps", 1e-9)
142149
));
150+
l->setParamsFrom(params);
151+
return l;
143152
}
144153

145154
/* Reshape layers */
@@ -164,13 +173,17 @@ Ptr<Layer> createLayerFromCaffe<ReshapeLayer>(LayerParams &params)
164173
else
165174
newShape = Shape::all(0);
166175

167-
return Ptr<Layer>(ReshapeLayer::create(newShape, applyingRange, enableReordering));
176+
Ptr<Layer> l(ReshapeLayer::create(newShape, applyingRange, enableReordering));
177+
l->setParamsFrom(params);
178+
return l;
168179
}
169180

170181
template<>
171182
Ptr<Layer> createLayerFromCaffe<ConcatLayer>(LayerParams& params)
172183
{
173-
return Ptr<Layer>(ConcatLayer::create(params.get<int>("axis", 1)));
184+
Ptr<Layer> l(ConcatLayer::create(params.get<int>("axis", 1)));
185+
l->setParamsFrom(params);
186+
return l;
174187
}
175188

176189
template<>
@@ -189,17 +202,20 @@ Ptr<Layer> createLayerFromCaffe<SplitLayer>(LayerParams &params)
189202
outputsCount = -1;
190203
}
191204

192-
return Ptr<Layer>(SplitLayer::create(outputsCount));
205+
Ptr<Layer> l(SplitLayer::create(outputsCount));
206+
l->setParamsFrom(params);
207+
return l;
193208
}
194209

195210
template<>
196211
Ptr<Layer> createLayerFromCaffe<SliceLayer>(LayerParams& params)
197212
{
198213
int axis = params.get<int>("axis", 1);
199214

215+
Ptr<Layer> l;
200216
if (!params.has("slice_point"))
201217
{
202-
return Ptr<Layer>(SliceLayer::create(axis));
218+
l = SliceLayer::create(axis);
203219
}
204220
else
205221
{
@@ -208,8 +224,10 @@ Ptr<Layer> createLayerFromCaffe<SliceLayer>(LayerParams& params)
208224
for (int i = 0; i < indicesValue.size(); i++)
209225
sliceIndices[i] = indicesValue.get<int>(i);
210226

211-
return Ptr<Layer>(SliceLayer::create(axis, sliceIndices));
227+
l = SliceLayer::create(axis, sliceIndices);
212228
}
229+
l->setParamsFrom(params);
230+
return l;
213231
}
214232

215233
/* Activation layers */
@@ -224,7 +242,9 @@ template<> //ReLU specialization
224242
Ptr<Layer> createLayerFromCaffe<ReLULayer>(LayerParams& params)
225243
{
226244
float negative_slope = params.get<float>("negative_slope", 0.f);
227-
return Ptr<Layer>(ReLULayer::create(negative_slope));
245+
Ptr<Layer> l(ReLULayer::create(negative_slope));
246+
l->setParamsFrom(params);
247+
return l;
228248
}
229249

230250
template<> //Power specialization
@@ -233,7 +253,9 @@ Ptr<Layer> createLayerFromCaffe<PowerLayer>(LayerParams& params)
233253
float power = params.get<float>("power", 1.0f);
234254
float scale = params.get<float>("scale", 1.0f);
235255
float shift = params.get<float>("shift", 0.0f);
236-
return Ptr<Layer>(PowerLayer::create(power, scale, shift));
256+
Ptr<Layer> l(PowerLayer::create(power, scale, shift));
257+
l->setParamsFrom(params);
258+
return l;
237259
}
238260

239261
template<> //CropLayer specialization
@@ -249,7 +271,9 @@ Ptr<Layer> createLayerFromCaffe<CropLayer>(LayerParams& params)
249271
offset.push_back(paramOffset->get<int>(i));
250272
}
251273

252-
return Ptr<Layer>(CropLayer::create(start_axis, offset));
274+
Ptr<Layer> l(CropLayer::create(start_axis, offset));
275+
l->setParamsFrom(params);
276+
return l;
253277
}
254278

255279
template<> //Eltwise specialization
@@ -279,7 +303,9 @@ Ptr<Layer> createLayerFromCaffe<EltwiseLayer>(LayerParams& params)
279303
coeffs[i] = paramCoeff.get<int>(i);
280304
}
281305
}
282-
return Ptr<Layer>(EltwiseLayer::create(op, coeffs));
306+
Ptr<Layer> l(EltwiseLayer::create(op, coeffs));
307+
l->setParamsFrom(params);
308+
return l;
283309
}
284310

285311
template<> //BatchNormLayer specialization
@@ -313,6 +339,7 @@ Ptr<Layer> createLayerFromCaffe<MaxUnpoolLayer>(LayerParams& params)
313339
Size outSize(params.get<int>("out_w"),
314340
params.get<int>("out_h"));
315341
Ptr<MaxUnpoolLayer> l = MaxUnpoolLayer::create(outSize);
342+
l->setParamsFrom(params);
316343

317344
return Ptr<Layer>(l);
318345
}

modules/dnn/src/layers/elementwise_layers.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ Ptr<_Layer> _Layer::create() { \
1414

1515
Ptr<ReLULayer> ReLULayer::create(double negativeSlope)
1616
{
17-
return Ptr<ReLULayer>(new ElementWiseLayer<ReLUFunctor>(ReLUFunctor(negativeSlope)));
17+
Ptr<ReLULayer> layer(new ElementWiseLayer<ReLUFunctor>(ReLUFunctor(negativeSlope)));
18+
layer->negativeSlope = negativeSlope;
19+
return layer;
1820
}
1921

2022
Ptr<TanHLayer> TanHLayer::create()
@@ -40,7 +42,11 @@ Ptr<BNLLLayer> BNLLLayer::create()
4042
Ptr<PowerLayer> PowerLayer::create(double power /*= 1*/, double scale /*= 1*/, double shift /*= 0*/)
4143
{
4244
const PowerFunctor f(power, scale, shift);
43-
return Ptr<PowerLayer>(new ElementWiseLayer<PowerFunctor>(f));
45+
Ptr<PowerLayer> layer(new ElementWiseLayer<PowerFunctor>(f));
46+
layer->power = power;
47+
layer->scale = scale;
48+
layer->shift = shift;
49+
return layer;
4450
}
4551

4652
////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)