Skip to content

Commit 02cf246

Browse files
committed
Changed the functions that transform between input tensor coordinates and
output tensor coordinates to use dpoint instead of point. This way, we can obtain sub-pixel coordinates if we need them.
1 parent 2883650 commit 02cf246

4 files changed

Lines changed: 82 additions & 82 deletions

File tree

dlib/dnn/layers.h

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,17 @@ namespace dlib
9090
void set_bias_learning_rate_multiplier(double val) { bias_learning_rate_multiplier = val; }
9191
void set_bias_weight_decay_multiplier(double val) { bias_weight_decay_multiplier = val; }
9292

93-
inline point map_input_to_output (
94-
point p
93+
inline dpoint map_input_to_output (
94+
dpoint p
9595
) const
9696
{
9797
p.x() = (p.x()+padding_x()-nc()/2)/stride_x();
9898
p.y() = (p.y()+padding_y()-nr()/2)/stride_y();
9999
return p;
100100
}
101101

102-
inline point map_output_to_input (
103-
point p
102+
inline dpoint map_output_to_input (
103+
dpoint p
104104
) const
105105
{
106106
p.x() = p.x()*stride_x() - padding_x() + nc()/2;
@@ -187,7 +187,7 @@ namespace dlib
187187
void backward(const tensor& gradient_input, SUBNET& sub, tensor& params_grad)
188188
{
189189
conv.get_gradient_for_data (true, gradient_input, filters(params,0), sub.get_gradient_input());
190-
// no point computing the parameter gradients if they won't be used.
190+
// no dpoint computing the parameter gradients if they won't be used.
191191
if (learning_rate_multiplier != 0)
192192
{
193193
auto filt = filters(params_grad,0);
@@ -374,17 +374,17 @@ namespace dlib
374374
void set_bias_learning_rate_multiplier(double val) { bias_learning_rate_multiplier = val; }
375375
void set_bias_weight_decay_multiplier(double val) { bias_weight_decay_multiplier = val; }
376376

377-
inline point map_output_to_input (
378-
point p
377+
inline dpoint map_output_to_input (
378+
dpoint p
379379
) const
380380
{
381381
p.x() = (p.x()+padding_x()-nc()/2)/stride_x();
382382
p.y() = (p.y()+padding_y()-nr()/2)/stride_y();
383383
return p;
384384
}
385385

386-
inline point map_input_to_output (
387-
point p
386+
inline dpoint map_input_to_output (
387+
dpoint p
388388
) const
389389
{
390390
p.x() = p.x()*stride_x() - padding_x() + nc()/2;
@@ -646,13 +646,13 @@ namespace dlib
646646
tt::resize_bilinear_gradient(sub.get_gradient_input(), gradient_input);
647647
}
648648

649-
inline point map_input_to_output (point p) const
649+
inline dpoint map_input_to_output (dpoint p) const
650650
{
651651
p.x() = p.x()*scale_x;
652652
p.y() = p.y()*scale_y;
653653
return p;
654654
}
655-
inline point map_output_to_input (point p) const
655+
inline dpoint map_output_to_input (dpoint p) const
656656
{
657657
p.x() = p.x()/scale_x;
658658
p.y() = p.y()/scale_y;
@@ -746,17 +746,17 @@ namespace dlib
746746
long padding_y() const { return padding_y_; }
747747
long padding_x() const { return padding_x_; }
748748

749-
inline point map_input_to_output (
750-
point p
749+
inline dpoint map_input_to_output (
750+
dpoint p
751751
) const
752752
{
753753
p.x() = (p.x()+padding_x()-nc()/2)/stride_x();
754754
p.y() = (p.y()+padding_y()-nr()/2)/stride_y();
755755
return p;
756756
}
757757

758-
inline point map_output_to_input (
759-
point p
758+
inline dpoint map_output_to_input (
759+
dpoint p
760760
) const
761761
{
762762
p.x() = p.x()*stride_x() - padding_x() + nc()/2;
@@ -943,17 +943,17 @@ namespace dlib
943943
long padding_y() const { return padding_y_; }
944944
long padding_x() const { return padding_x_; }
945945

946-
inline point map_input_to_output (
947-
point p
946+
inline dpoint map_input_to_output (
947+
dpoint p
948948
) const
949949
{
950950
p.x() = (p.x()+padding_x()-nc()/2)/stride_x();
951951
p.y() = (p.y()+padding_y()-nr()/2)/stride_y();
952952
return p;
953953
}
954954

955-
inline point map_output_to_input (
956-
point p
955+
inline dpoint map_output_to_input (
956+
dpoint p
957957
) const
958958
{
959959
p.x() = p.x()*stride_x() - padding_x() + nc()/2;
@@ -1155,8 +1155,8 @@ namespace dlib
11551155
void set_bias_learning_rate_multiplier(double val) { bias_learning_rate_multiplier = val; }
11561156
void set_bias_weight_decay_multiplier(double val) { bias_weight_decay_multiplier = val; }
11571157

1158-
inline point map_input_to_output (const point& p) const { return p; }
1159-
inline point map_output_to_input (const point& p) const { return p; }
1158+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
1159+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
11601160

11611161

11621162
template <typename SUBNET>
@@ -1696,8 +1696,8 @@ namespace dlib
16961696
tt::multiply(true, data_grad, mask, gradient_input);
16971697
}
16981698

1699-
inline point map_input_to_output (const point& p) const { return p; }
1700-
inline point map_output_to_input (const point& p) const { return p; }
1699+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
1700+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
17011701

17021702
const tensor& get_layer_params() const { return params; }
17031703
tensor& get_layer_params() { return params; }
@@ -1781,8 +1781,8 @@ namespace dlib
17811781
tt::affine_transform(output, input, val);
17821782
}
17831783

1784-
inline point map_input_to_output (const point& p) const { return p; }
1785-
inline point map_output_to_input (const point& p) const { return p; }
1784+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
1785+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
17861786

17871787
void backward_inplace(
17881788
const tensor& gradient_input,
@@ -1889,8 +1889,8 @@ namespace dlib
18891889

18901890
layer_mode get_mode() const { return mode; }
18911891

1892-
inline point map_input_to_output (const point& p) const { return p; }
1893-
inline point map_output_to_input (const point& p) const { return p; }
1892+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
1893+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
18941894

18951895
template <typename SUBNET>
18961896
void setup (const SUBNET& sub)
@@ -2256,8 +2256,8 @@ namespace dlib
22562256
tt::relu_gradient(data_grad, computed_output, gradient_input);
22572257
}
22582258

2259-
inline point map_input_to_output (const point& p) const { return p; }
2260-
inline point map_output_to_input (const point& p) const { return p; }
2259+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
2260+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
22612261

22622262
const tensor& get_layer_params() const { return params; }
22632263
tensor& get_layer_params() { return params; }
@@ -2336,8 +2336,8 @@ namespace dlib
23362336
gradient_input, params, params_grad);
23372337
}
23382338

2339-
inline point map_input_to_output (const point& p) const { return p; }
2340-
inline point map_output_to_input (const point& p) const { return p; }
2339+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
2340+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
23412341

23422342
const tensor& get_layer_params() const { return params; }
23432343
tensor& get_layer_params() { return params; }
@@ -2411,8 +2411,8 @@ namespace dlib
24112411
tt::sigmoid_gradient(data_grad, computed_output, gradient_input);
24122412
}
24132413

2414-
inline point map_input_to_output (const point& p) const { return p; }
2415-
inline point map_output_to_input (const point& p) const { return p; }
2414+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
2415+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
24162416

24172417
const tensor& get_layer_params() const { return params; }
24182418
tensor& get_layer_params() { return params; }
@@ -2464,8 +2464,8 @@ namespace dlib
24642464
{
24652465
}
24662466

2467-
inline point map_input_to_output (const point& p) const { return p; }
2468-
inline point map_output_to_input (const point& p) const { return p; }
2467+
inline dpoint map_input_to_output (const dpoint& p) const { return p; }
2468+
inline dpoint map_output_to_input (const dpoint& p) const { return p; }
24692469

24702470
void forward_inplace(const tensor& input, tensor& output)
24712471
{
@@ -2678,8 +2678,8 @@ namespace dlib
26782678
impl::concat_helper_impl<TAG_TYPES...>::split(gradient_input, sub, 0);
26792679
}
26802680

2681-
point map_input_to_output(point p) const { return p; }
2682-
point map_output_to_input(point p) const { return p; }
2681+
dpoint map_input_to_output(dpoint p) const { return p; }
2682+
dpoint map_output_to_input(dpoint p) const { return p; }
26832683

26842684
const tensor& get_layer_params() const { return params; }
26852685
tensor& get_layer_params() { return params; }

dlib/dnn/layers_abstract.h

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,8 @@ namespace dlib
349349
!*/
350350

351351

352-
point map_input_to_output(point p) const;
353-
point map_output_to_input(point p) const;
352+
dpoint map_input_to_output(dpoint p) const;
353+
dpoint map_output_to_input(dpoint p) const;
354354
/*!
355355
These two functions are optional. If provided, they should map between
356356
(column,row) coordinates in input and output tensors of forward(). Providing
@@ -857,8 +857,8 @@ namespace dlib
857857
template <typename SUBNET> void setup (const SUBNET& sub);
858858
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
859859
template <typename SUBNET> void backward(const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
860-
point map_input_to_output(point p) const;
861-
point map_output_to_input(point p) const;
860+
dpoint map_input_to_output(dpoint p) const;
861+
dpoint map_output_to_input(dpoint p) const;
862862
const tensor& get_layer_params() const;
863863
tensor& get_layer_params();
864864
/*!
@@ -1070,8 +1070,8 @@ namespace dlib
10701070
template <typename SUBNET> void setup (const SUBNET& sub);
10711071
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
10721072
template <typename SUBNET> void backward(const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
1073-
point map_input_to_output(point p) const;
1074-
point map_output_to_input(point p) const;
1073+
dpoint map_input_to_output(dpoint p) const;
1074+
dpoint map_output_to_input(dpoint p) const;
10751075
const tensor& get_layer_params() const;
10761076
tensor& get_layer_params();
10771077
/*!
@@ -1129,8 +1129,8 @@ namespace dlib
11291129
template <typename SUBNET> void setup (const SUBNET& sub);
11301130
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
11311131
template <typename SUBNET> void backward(const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
1132-
point map_input_to_output(point p) const;
1133-
point map_output_to_input(point p) const;
1132+
dpoint map_input_to_output(dpoint p) const;
1133+
dpoint map_output_to_input(dpoint p) const;
11341134
const tensor& get_layer_params() const;
11351135
tensor& get_layer_params();
11361136
/*!
@@ -1184,8 +1184,8 @@ namespace dlib
11841184
template <typename SUBNET> void setup (const SUBNET& sub);
11851185
void forward_inplace(const tensor& input, tensor& output);
11861186
void backward_inplace(const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
1187-
point map_input_to_output(point p) const;
1188-
point map_output_to_input(point p) const;
1187+
dpoint map_input_to_output(dpoint p) const;
1188+
dpoint map_output_to_input(dpoint p) const;
11891189
const tensor& get_layer_params() const;
11901190
tensor& get_layer_params();
11911191
/*!
@@ -1238,8 +1238,8 @@ namespace dlib
12381238
template <typename SUBNET> void setup (const SUBNET& sub);
12391239
void forward_inplace(const tensor& input, tensor& output);
12401240
void backward_inplace(const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
1241-
point map_input_to_output(point p) const;
1242-
point map_output_to_input(point p) const;
1241+
dpoint map_input_to_output(dpoint p) const;
1242+
dpoint map_output_to_input(dpoint p) const;
12431243
const tensor& get_layer_params() const;
12441244
tensor& get_layer_params();
12451245
/*!
@@ -1449,8 +1449,8 @@ namespace dlib
14491449
template <typename SUBNET> void setup (const SUBNET& sub);
14501450
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
14511451
template <typename SUBNET> void backward(const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
1452-
point map_input_to_output(point p) const;
1453-
point map_output_to_input(point p) const;
1452+
dpoint map_input_to_output(dpoint p) const;
1453+
dpoint map_output_to_input(dpoint p) const;
14541454
const tensor& get_layer_params() const;
14551455
tensor& get_layer_params();
14561456
/*!
@@ -1559,8 +1559,8 @@ namespace dlib
15591559
template <typename SUBNET> void setup (const SUBNET& sub);
15601560
void forward_inplace(const tensor& input, tensor& output);
15611561
void backward_inplace(const tensor& computed_output, const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
1562-
point map_input_to_output(point p) const;
1563-
point map_output_to_input(point p) const;
1562+
dpoint map_input_to_output(dpoint p) const;
1563+
dpoint map_output_to_input(dpoint p) const;
15641564
const tensor& get_layer_params() const;
15651565
tensor& get_layer_params();
15661566
/*!
@@ -1695,8 +1695,8 @@ namespace dlib
16951695
template <typename SUBNET> void setup (const SUBNET& sub);
16961696
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
16971697
template <typename SUBNET> void backward(const tensor& computed_output, const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
1698-
point map_input_to_output(point p) const;
1699-
point map_output_to_input(point p) const;
1698+
dpoint map_input_to_output(dpoint p) const;
1699+
dpoint map_output_to_input(dpoint p) const;
17001700
const tensor& get_layer_params() const;
17011701
tensor& get_layer_params();
17021702
/*!
@@ -1840,8 +1840,8 @@ namespace dlib
18401840
template <typename SUBNET> void setup (const SUBNET& sub);
18411841
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
18421842
template <typename SUBNET> void backward(const tensor& computed_output, const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
1843-
point map_input_to_output(point p) const;
1844-
point map_output_to_input(point p) const;
1843+
dpoint map_input_to_output(dpoint p) const;
1844+
dpoint map_output_to_input(dpoint p) const;
18451845
const tensor& get_layer_params() const;
18461846
tensor& get_layer_params();
18471847
/*!
@@ -1887,8 +1887,8 @@ namespace dlib
18871887
template <typename SUBNET> void setup (const SUBNET& sub);
18881888
void forward_inplace(const tensor& input, tensor& output);
18891889
void backward_inplace(const tensor& computed_output, const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
1890-
point map_input_to_output(point p) const;
1891-
point map_output_to_input(point p) const;
1890+
dpoint map_input_to_output(dpoint p) const;
1891+
dpoint map_output_to_input(dpoint p) const;
18921892
const tensor& get_layer_params() const;
18931893
tensor& get_layer_params();
18941894
/*!
@@ -1942,8 +1942,8 @@ namespace dlib
19421942
template <typename SUBNET> void setup (const SUBNET& sub);
19431943
void forward_inplace(const tensor& input, tensor& output);
19441944
void backward_inplace(const tensor& computed_output, const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
1945-
point map_input_to_output(point p) const;
1946-
point map_output_to_input(point p) const;
1945+
dpoint map_input_to_output(dpoint p) const;
1946+
dpoint map_output_to_input(dpoint p) const;
19471947
const tensor& get_layer_params() const;
19481948
tensor& get_layer_params();
19491949
/*!
@@ -1975,8 +1975,8 @@ namespace dlib
19751975
template <typename SUBNET> void setup (const SUBNET& sub);
19761976
void forward_inplace(const tensor& input, tensor& output);
19771977
void backward_inplace(const tensor& computed_output, const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
1978-
point map_input_to_output(point p) const;
1979-
point map_output_to_input(point p) const;
1978+
dpoint map_input_to_output(dpoint p) const;
1979+
dpoint map_output_to_input(dpoint p) const;
19801980
const tensor& get_layer_params() const;
19811981
tensor& get_layer_params();
19821982
/*!
@@ -2010,8 +2010,8 @@ namespace dlib
20102010
template <typename SUBNET> void setup (const SUBNET& sub);
20112011
void forward_inplace(const tensor& input, tensor& output);
20122012
void backward_inplace(const tensor& computed_output, const tensor& gradient_input, tensor& data_grad, tensor& params_grad);
2013-
point map_input_to_output(point p) const;
2014-
point map_output_to_input(point p) const;
2013+
dpoint map_input_to_output(dpoint p) const;
2014+
dpoint map_output_to_input(dpoint p) const;
20152015
const tensor& get_layer_params() const;
20162016
tensor& get_layer_params();
20172017
/*!
@@ -2235,8 +2235,8 @@ namespace dlib
22352235
template <typename SUBNET> void setup (const SUBNET& sub);
22362236
template <typename SUBNET> void forward(const SUBNET& sub, resizable_tensor& output);
22372237
template <typename SUBNET> void backward(const tensor& gradient_input, SUBNET& sub, tensor& params_grad);
2238-
point map_input_to_output(point p) const;
2239-
point map_output_to_input(point p) const;
2238+
dpoint map_input_to_output(dpoint p) const;
2239+
dpoint map_output_to_input(dpoint p) const;
22402240
const tensor& get_layer_params() const;
22412241
tensor& get_layer_params();
22422242
/*!

0 commit comments

Comments
 (0)