Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dlib
Commits
7352ef0e
Commit
7352ef0e
authored
Oct 04, 2017
by
Davis King
Browse files
merged
parents
2425dcaf
ea9aae0f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
58 additions
and
22 deletions
+58
-22
dlib/dnn/layers.h
dlib/dnn/layers.h
+24
-18
dlib/dnn/layers_abstract.h
dlib/dnn/layers_abstract.h
+31
-0
tools/python/src/face_recognition.cpp
tools/python/src/face_recognition.cpp
+3
-4
No files found.
dlib/dnn/layers.h
View file @
7352ef0e
...
...
@@ -164,7 +164,6 @@ namespace dlib
// set the initial bias values to zero
biases
(
params
,
filters
.
size
())
=
0
;
}
template
<
typename
SUBNET
>
...
...
@@ -346,17 +345,22 @@ namespace dlib
static_assert
(
0
<=
_padding_x
&&
_padding_x
<
_nc
,
"The padding must be smaller than the filter size."
);
cont_
(
num_con_outputs
o
)
:
learning_rate_multiplier
(
1
),
weight_decay_multiplier
(
1
),
bias_learning_rate_multiplier
(
1
),
bias_weight_decay_multiplier
(
0
),
num_filters_
(
o
.
num_outputs
),
padding_y_
(
_padding_y
),
padding_x_
(
_padding_x
)
{
DLIB_CASSERT
(
num_filters_
>
0
);
}
long
num_filters
()
const
{
return
_num_filters
;
}
cont_
()
:
cont_
(
num_con_outputs
(
_num_filters
))
{}
long
num_filters
()
const
{
return
num_filters_
;
}
long
nr
()
const
{
return
_nr
;
}
long
nc
()
const
{
return
_nc
;
}
long
stride_y
()
const
{
return
_stride_y
;
}
...
...
@@ -364,6 +368,14 @@ namespace dlib
long
padding_y
()
const
{
return
padding_y_
;
}
long
padding_x
()
const
{
return
padding_x_
;
}
void
set_num_filters
(
long
num
)
{
DLIB_CASSERT
(
num
>
0
);
DLIB_CASSERT
(
get_layer_params
().
size
()
==
0
,
"You can't change the number of filters in cont_ if the parameter tensor has already been allocated."
);
num_filters_
=
num
;
}
double
get_learning_rate_multiplier
()
const
{
return
learning_rate_multiplier
;
}
double
get_weight_decay_multiplier
()
const
{
return
weight_decay_multiplier
;
}
void
set_learning_rate_multiplier
(
double
val
)
{
learning_rate_multiplier
=
val
;
}
...
...
@@ -402,6 +414,7 @@ namespace dlib
weight_decay_multiplier
(
item
.
weight_decay_multiplier
),
bias_learning_rate_multiplier
(
item
.
bias_learning_rate_multiplier
),
bias_weight_decay_multiplier
(
item
.
bias_weight_decay_multiplier
),
num_filters_
(
item
.
num_filters_
),
padding_y_
(
item
.
padding_y_
),
padding_x_
(
item
.
padding_x_
)
{
...
...
@@ -427,6 +440,7 @@ namespace dlib
weight_decay_multiplier
=
item
.
weight_decay_multiplier
;
bias_learning_rate_multiplier
=
item
.
bias_learning_rate_multiplier
;
bias_weight_decay_multiplier
=
item
.
bias_weight_decay_multiplier
;
num_filters_
=
item
.
num_filters_
;
return
*
this
;
}
...
...
@@ -434,18 +448,18 @@ namespace dlib
void
setup
(
const
SUBNET
&
sub
)
{
long
num_inputs
=
_nr
*
_nc
*
sub
.
get_output
().
k
();
long
num_outputs
=
_
num_filters
;
long
num_outputs
=
num_filters
_
;
// allocate params for the filters and also for the filter bias values.
params
.
set_size
(
num_inputs
*
_
num_filters
+
_
num_filters
);
params
.
set_size
(
num_inputs
*
num_filters
_
+
num_filters
_
);
dlib
::
rand
rnd
(
std
::
rand
());
randomize_parameters
(
params
,
num_inputs
+
num_outputs
,
rnd
);
filters
=
alias_tensor
(
sub
.
get_output
().
k
(),
_
num_filters
,
_nr
,
_nc
);
biases
=
alias_tensor
(
1
,
_
num_filters
);
filters
=
alias_tensor
(
sub
.
get_output
().
k
(),
num_filters
_
,
_nr
,
_nc
);
biases
=
alias_tensor
(
1
,
num_filters
_
);
// set the initial bias values to zero
biases
(
params
,
_num_
filters
)
=
0
;
biases
(
params
,
filters
.
size
()
)
=
0
;
}
template
<
typename
SUBNET
>
...
...
@@ -484,7 +498,7 @@ namespace dlib
{
serialize
(
"cont_1"
,
out
);
serialize
(
item
.
params
,
out
);
serialize
(
_
num_filters
,
out
);
serialize
(
item
.
num_filters
_
,
out
);
serialize
(
_nr
,
out
);
serialize
(
_nc
,
out
);
serialize
(
_stride_y
,
out
);
...
...
@@ -503,7 +517,6 @@ namespace dlib
{
std
::
string
version
;
deserialize
(
version
,
in
);
long
num_filters
;
long
nr
;
long
nc
;
int
stride_y
;
...
...
@@ -511,7 +524,7 @@ namespace dlib
if
(
version
==
"cont_1"
)
{
deserialize
(
item
.
params
,
in
);
deserialize
(
num_filters
,
in
);
deserialize
(
item
.
num_filters
_
,
in
);
deserialize
(
nr
,
in
);
deserialize
(
nc
,
in
);
deserialize
(
stride_y
,
in
);
...
...
@@ -526,14 +539,6 @@ namespace dlib
deserialize
(
item
.
bias_weight_decay_multiplier
,
in
);
if
(
item
.
padding_y_
!=
_padding_y
)
throw
serialization_error
(
"Wrong padding_y found while deserializing dlib::con_"
);
if
(
item
.
padding_x_
!=
_padding_x
)
throw
serialization_error
(
"Wrong padding_x found while deserializing dlib::con_"
);
if
(
num_filters
!=
_num_filters
)
{
std
::
ostringstream
sout
;
sout
<<
"Wrong num_filters found while deserializing dlib::con_"
<<
std
::
endl
;
sout
<<
"expected "
<<
_num_filters
<<
" but found "
<<
num_filters
<<
std
::
endl
;
throw
serialization_error
(
sout
.
str
());
}
if
(
nr
!=
_nr
)
throw
serialization_error
(
"Wrong nr found while deserializing dlib::con_"
);
if
(
nc
!=
_nc
)
throw
serialization_error
(
"Wrong nc found while deserializing dlib::con_"
);
if
(
stride_y
!=
_stride_y
)
throw
serialization_error
(
"Wrong stride_y found while deserializing dlib::con_"
);
...
...
@@ -592,6 +597,7 @@ namespace dlib
double
weight_decay_multiplier
;
double
bias_learning_rate_multiplier
;
double
bias_weight_decay_multiplier
;
long
num_filters_
;
int
padding_y_
;
int
padding_x_
;
...
...
dlib/dnn/layers_abstract.h
View file @
7352ef0e
...
...
@@ -941,6 +941,24 @@ namespace dlib
- #get_bias_weight_decay_multiplier() == 0
!*/
cont_
(
num_con_outputs
o
);
/*!
ensures
- #num_filters() == o.num_outputs
- #nr() == _nr
- #nc() == _nc
- #stride_y() == _stride_y
- #stride_x() == _stride_x
- #padding_y() == _padding_y
- #padding_x() == _padding_x
- #get_learning_rate_multiplier() == 1
- #get_weight_decay_multiplier() == 1
- #get_bias_learning_rate_multiplier() == 1
- #get_bias_weight_decay_multiplier() == 0
!*/
long
num_filters
(
)
const
;
/*!
...
...
@@ -950,6 +968,19 @@ namespace dlib
of filters.
!*/
void
set_num_filters
(
long
num
);
/*!
requires
- num > 0
- get_layer_params().size() == 0
(i.e. You can't change the number of filters in cont_ if the parameter
tensor has already been allocated.)
ensures
- #num_filters() == num
!*/
long
nr
(
)
const
;
/*!
...
...
tools/python/src/face_recognition.cpp
View file @
7352ef0e
...
...
@@ -166,7 +166,7 @@ boost::python::list chinese_whispers_clustering(boost::python::list descriptors,
edges
.
push_back
(
sample_pair
(
i
,
j
));
}
}
const
auto
num_clusters
=
chinese_whispers
(
edges
,
labels
);
chinese_whispers
(
edges
,
labels
);
for
(
size_t
i
=
0
;
i
<
labels
.
size
();
++
i
)
{
clusters
.
append
(
labels
[
i
]);
...
...
@@ -242,7 +242,6 @@ boost::python::list get_face_chips (
boost
::
python
::
list
chips_list
;
int
num_faces
=
faces
.
size
();
std
::
vector
<
chip_details
>
dets
;
for
(
auto
&
f
:
faces
)
dets
.
push_back
(
get_face_chip_details
(
f
,
size
,
padding
));
...
...
@@ -253,9 +252,9 @@ boost::python::list get_face_chips (
{
boost
::
python
::
list
img
;
for
(
in
t
row
=
0
;
row
<
size
;
row
++
)
{
for
(
size_
t
row
=
0
;
row
<
size
;
row
++
)
{
boost
::
python
::
list
row_list
;
for
(
in
t
col
=
0
;
col
<
size
;
col
++
)
{
for
(
size_
t
col
=
0
;
col
<
size
;
col
++
)
{
rgb_pixel
pixel
=
chip
(
row
,
col
);
boost
::
python
::
list
item
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment