Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
D
dlib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
钟尚武
dlib
Commits
2ebafae7
Commit
2ebafae7
authored
Aug 24, 2014
by
Davis King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added missing asserts
parent
1037b661
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
134 additions
and
10 deletions
+134
-10
render_face_detections.h
dlib/image_processing/render_face_detections.h
+6
-0
shape_predictor.h
dlib/image_processing/shape_predictor.h
+116
-10
shape_predictor_abstract.h
dlib/image_processing/shape_predictor_abstract.h
+12
-0
No files found.
dlib/image_processing/render_face_detections.h
View file @
2ebafae7
...
...
@@ -18,6 +18,12 @@ namespace dlib
std
::
vector
<
image_window
::
overlay_line
>
lines
;
for
(
unsigned
long
i
=
0
;
i
<
dets
.
size
();
++
i
)
{
DLIB_CASSERT
(
dets
[
i
].
num_parts
()
==
68
,
"
\t
std::vector<image_window::overlay_line> render_face_detections()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
dets["
<<
i
<<
"].num_parts(): "
<<
dets
[
i
].
num_parts
()
);
const
full_object_detection
&
d
=
dets
[
i
];
for
(
unsigned
long
i
=
1
;
i
<=
16
;
++
i
)
lines
.
push_back
(
image_window
::
overlay_line
(
d
.
part
(
i
),
d
.
part
(
i
-
1
),
color
));
...
...
dlib/image_processing/shape_predictor.h
View file @
2ebafae7
...
...
@@ -171,7 +171,7 @@ namespace dlib
const
matrix
<
float
,
0
,
1
>&
to_shape
)
{
DLIB_
C
ASSERT
(
from_shape
.
size
()
==
to_shape
.
size
()
&&
(
from_shape
.
size
()
%
2
)
==
0
&&
from_shape
.
size
()
>
0
,
""
);
DLIB_ASSERT
(
from_shape
.
size
()
==
to_shape
.
size
()
&&
(
from_shape
.
size
()
%
2
)
==
0
&&
from_shape
.
size
()
>
0
,
""
);
std
::
vector
<
vector
<
float
,
2
>
>
from_points
,
to_points
;
const
unsigned
long
num
=
from_shape
.
size
()
/
2
;
from_points
.
reserve
(
num
);
...
...
@@ -415,7 +415,12 @@ namespace dlib
unsigned
long
depth
)
{
DLIB_CASSERT
(
depth
>
0
,
""
);
DLIB_CASSERT
(
depth
>
0
,
"
\t
void shape_predictor_trainer::set_cascade_depth()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
depth: "
<<
depth
);
_cascade_depth
=
depth
;
}
...
...
@@ -426,7 +431,12 @@ namespace dlib
unsigned
long
depth
)
{
DLIB_CASSERT
(
depth
>
0
,
""
);
DLIB_CASSERT
(
depth
>
0
,
"
\t
void shape_predictor_trainer::set_tree_depth()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
depth: "
<<
depth
);
_tree_depth
=
depth
;
}
...
...
@@ -437,7 +447,11 @@ namespace dlib
unsigned
long
num
)
{
DLIB_CASSERT
(
num
>
0
,
""
);
DLIB_CASSERT
(
num
>
0
,
"
\t
void shape_predictor_trainer::set_num_trees_per_cascade_level()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
num: "
<<
num
);
_num_trees_per_cascade_level
=
num
;
}
...
...
@@ -447,7 +461,12 @@ namespace dlib
double
nu
)
{
DLIB_CASSERT
(
nu
>
0
,
""
);
DLIB_CASSERT
(
nu
>
0
,
"
\t
void shape_predictor_trainer::set_nu()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
nu: "
<<
nu
);
_nu
=
nu
;
}
...
...
@@ -463,7 +482,12 @@ namespace dlib
unsigned
long
amount
)
{
DLIB_CASSERT
(
amount
>
0
,
""
);
DLIB_CASSERT
(
amount
>
0
,
"
\t
void shape_predictor_trainer::set_oversampling_amount()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
amount: "
<<
amount
);
_oversampling_amount
=
amount
;
}
...
...
@@ -473,7 +497,12 @@ namespace dlib
unsigned
long
size
)
{
DLIB_CASSERT
(
size
>
1
,
""
);
DLIB_CASSERT
(
size
>
1
,
"
\t
void shape_predictor_trainer::set_feature_pool_size()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
size: "
<<
size
);
_feature_pool_size
=
size
;
}
...
...
@@ -483,7 +512,12 @@ namespace dlib
double
lambda
)
{
DLIB_CASSERT
(
lambda
>
0
,
""
);
DLIB_CASSERT
(
lambda
>
0
,
"
\t
void shape_predictor_trainer::set_lambda()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
lambda: "
<<
lambda
);
_lambda
=
lambda
;
}
...
...
@@ -493,7 +527,12 @@ namespace dlib
unsigned
long
num
)
{
DLIB_CASSERT
(
num
>
0
,
""
);
DLIB_CASSERT
(
num
>
0
,
"
\t
void shape_predictor_trainer::set_num_test_splits()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
num: "
<<
num
);
_num_test_splits
=
num
;
}
...
...
@@ -526,7 +565,42 @@ namespace dlib
)
const
{
using
namespace
impl
;
DLIB_CASSERT
(
images
.
size
()
==
objects
.
size
()
&&
images
.
size
()
>
0
,
""
);
DLIB_CASSERT
(
images
.
size
()
==
objects
.
size
()
&&
images
.
size
()
>
0
,
"
\t
shape_predictor shape_predictor_trainer::train()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
images.size(): "
<<
images
.
size
()
<<
"
\n\t
objects.size(): "
<<
objects
.
size
()
);
// make sure the objects agree on the number of parts and that there is at
// least one full_object_detection.
unsigned
long
num_parts
=
0
;
for
(
unsigned
long
i
=
0
;
i
<
objects
.
size
();
++
i
)
{
for
(
unsigned
long
j
=
0
;
j
<
objects
[
i
].
size
();
++
j
)
{
if
(
num_parts
==
0
)
{
num_parts
=
objects
[
i
][
j
].
num_parts
();
}
else
{
DLIB_CASSERT
(
objects
[
i
][
j
].
num_parts
()
==
num_parts
,
"
\t
shape_predictor shape_predictor_trainer::train()"
<<
"
\n\t
All the objects must agree on the number of parts. "
<<
"
\n\t
objects["
<<
i
<<
"]["
<<
j
<<
"].num_parts(): "
<<
objects
[
i
][
j
].
num_parts
()
<<
"
\n\t
num_parts: "
<<
num_parts
);
}
}
}
DLIB_CASSERT
(
num_parts
!=
0
,
"
\t
shape_predictor shape_predictor_trainer::train()"
<<
"
\n\t
You must give at least one full_object_detection if you want to train a shape model and it must have parts."
);
rnd
.
set_seed
(
get_random_seed
());
...
...
@@ -917,6 +991,38 @@ namespace dlib
const
std
::
vector
<
std
::
vector
<
double
>
>&
scales
)
{
// make sure requires clause is not broken
#ifdef ENABLE_ASSERTS
DLIB_CASSERT
(
images
.
size
()
==
objects
.
size
()
,
"
\t
double test_shape_predictor()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
images.size(): "
<<
images
.
size
()
<<
"
\n\t
objects.size(): "
<<
objects
.
size
()
);
for
(
unsigned
long
i
=
0
;
i
<
objects
.
size
();
++
i
)
{
for
(
unsigned
long
j
=
0
;
j
<
objects
[
i
].
size
();
++
j
)
{
DLIB_CASSERT
(
objects
[
i
][
j
].
num_parts
()
==
sp
.
num_parts
(),
"
\t
double test_shape_predictor()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
objects["
<<
i
<<
"]["
<<
j
<<
"].num_parts(): "
<<
objects
[
i
][
j
].
num_parts
()
<<
"
\n\t
sp.num_parts(): "
<<
sp
.
num_parts
()
);
}
if
(
scales
.
size
()
!=
0
)
{
DLIB_CASSERT
(
objects
[
i
].
size
()
==
scales
[
i
].
size
(),
"
\t
double test_shape_predictor()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
objects["
<<
i
<<
"].size(): "
<<
objects
[
i
].
size
()
<<
"
\n\t
scales["
<<
i
<<
"].size(): "
<<
scales
[
i
].
size
()
);
}
}
#endif
running_stats
<
double
>
rs
;
for
(
unsigned
long
i
=
0
;
i
<
objects
.
size
();
++
i
)
{
...
...
dlib/image_processing/shape_predictor_abstract.h
View file @
2ebafae7
...
...
@@ -348,8 +348,16 @@ namespace dlib
)
const
;
/*!
requires
- image_array is a dlib::array of image objects where each image object
implements the interface defined in dlib/image_processing/generic_image.h
- images.size() == objects.size()
- images.size() > 0
- for some i: objects[i].size() != 0
(i.e. there has to be at least one full_object_detection in the training set)
- for all valid i,j,k,l:
- objects[i][j].num_parts() == objects[k][l].num_parts()
(i.e. all objects must agree on the number of parts)
- objects[i][j].num_parts() > 0
ensures
- This object will try to learn to predict the locations of an object's parts
based on the object bounding box (i.e. full_object_detection::get_rect())
...
...
@@ -376,6 +384,8 @@ namespace dlib
);
/*!
requires
- image_array is a dlib::array of image objects where each image object
implements the interface defined in dlib/image_processing/generic_image.h
- images.size() == objects.size()
- for all valid i and j:
- objects[i][j].num_parts() == sp.num_parts()
...
...
@@ -413,6 +423,8 @@ namespace dlib
);
/*!
requires
- image_array is a dlib::array of image objects where each image object
implements the interface defined in dlib/image_processing/generic_image.h
- images.size() == objects.size()
- for all valid i and j:
- objects[i][j].num_parts() == sp.num_parts()
...
...
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