Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
bob.pad.face
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
bob
bob.pad.face
Commits
a66e1f3c
There was a problem fetching the pipeline summary.
Commit
a66e1f3c
authored
7 years ago
by
Amir MOHAMMADI
Browse files
Options
Downloads
Patches
Plain Diff
Add more options to the giant video loader
parent
72035ee5
No related branches found
No related tags found
1 merge request
!60
Change the API of yield_faces
Pipeline
#
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
bob/pad/face/utils/__init__.py
+2
-1
2 additions, 1 deletion
bob/pad/face/utils/__init__.py
bob/pad/face/utils/load_utils.py
+60
-2
60 additions, 2 deletions
bob/pad/face/utils/load_utils.py
with
62 additions
and
3 deletions
bob/pad/face/utils/__init__.py
+
2
−
1
View file @
a66e1f3c
from
.load_utils
import
(
from
.load_utils
import
(
frames
,
number_of_frames
,
yield_frames
,
yield_faces
,
scale_face
,
blocks
,
frames
,
number_of_frames
,
yield_frames
,
yield_faces
,
scale_face
,
blocks
,
bbx_cropper
,
min_face_size_normalizer
,
the_giant_video_loader
)
bbx_cropper
,
min_face_size_normalizer
,
color_augmentation
,
the_giant_video_loader
)
# gets sphinx autodoc done right - don't remove it
# gets sphinx autodoc done right - don't remove it
__all__
=
[
_
for
_
in
dir
()
if
not
_
.
startswith
(
'
_
'
)]
__all__
=
[
_
for
_
in
dir
()
if
not
_
.
startswith
(
'
_
'
)]
This diff is collapsed.
Click to expand it.
bob/pad/face/utils/load_utils.py
+
60
−
2
View file @
a66e1f3c
...
@@ -2,6 +2,7 @@ from bob.bio.face.annotator import min_face_size_validator
...
@@ -2,6 +2,7 @@ from bob.bio.face.annotator import min_face_size_validator
from
bob.bio.video.annotator
import
normalize_annotations
from
bob.bio.video.annotator
import
normalize_annotations
from
bob.io.video
import
reader
from
bob.io.video
import
reader
from
bob.ip.base
import
scale
,
block
,
block_output_shape
from
bob.ip.base
import
scale
,
block
,
block_output_shape
from
bob.ip.color
import
rgb_to_yuv
,
rgb_to_hsv
from
bob.ip.facedetect
import
bounding_box_from_annotation
from
bob.ip.facedetect
import
bounding_box_from_annotation
from
functools
import
partial
from
functools
import
partial
import
numpy
import
numpy
...
@@ -192,16 +193,73 @@ def blocks(data, block_size, block_overlap=(0, 0)):
...
@@ -192,16 +193,73 @@ def blocks(data, block_size, block_overlap=(0, 0)):
return
output
return
output
def
color_augmentation
(
image
,
channels
=
(
'
rgb
'
,)):
"""
Converts an RGB image to different color channels.
Parameters
----------
image : numpy.array
The image in RGB Bob format.
channels : tuple, optional
List of channels to convert the image to. It can be any of ``rgb``,
``yuv``, ``hsv``.
Returns
-------
numpy.array
The image that contains several channels:
``(3*len(channels), height, width)``.
"""
final_image
=
[]
if
'
rgb
'
in
channels
:
final_image
.
append
(
image
)
if
'
yuv
'
in
channels
:
final_image
.
append
(
rgb_to_yuv
(
image
))
if
'
hsv
'
in
channels
:
final_image
.
append
(
rgb_to_hsv
(
image
))
return
numpy
.
concatenate
(
final_image
,
axis
=
0
)
def
_random_sample
(
A
,
size
):
return
A
[
numpy
.
random
.
choice
(
A
.
shape
[
0
],
size
,
replace
=
False
),
...]
def
the_giant_video_loader
(
paddb
,
padfile
,
def
the_giant_video_loader
(
paddb
,
padfile
,
region
=
'
whole
'
,
scaling_factor
=
None
,
cropper
=
None
,
region
=
'
whole
'
,
scaling_factor
=
None
,
cropper
=
None
,
normalizer
=
None
):
normalizer
=
None
,
patches
=
False
,
generator
=
None
block_size
=
(
96
,
96
),
block_overlap
=
(
0
,
0
),
random_patches_per_frame
=
None
,
augment
=
None
,
multiple_bonafide_patches
=
1
):
if
region
==
'
whole
'
:
if
region
==
'
whole
'
:
generator
=
yield_frames
(
paddb
,
padfile
)
generator
=
yield_frames
(
paddb
,
padfile
)
elif
region
==
'
crop
'
:
elif
region
==
'
crop
'
:
generator
=
yield_faces
(
generator
=
yield_faces
(
paddb
,
padfile
,
cropper
=
cropper
,
normalizer
=
normalizer
)
paddb
,
padfile
,
cropper
=
cropper
,
normalizer
=
normalizer
)
else
:
raise
ValueError
(
"
Invalid region value: `{}
'"
.
format
(
region
))
if
scaling_factor
is
not
None
:
if
scaling_factor
is
not
None
:
generator
=
(
scale
(
frame
,
scaling_factor
)
generator
=
(
scale
(
frame
,
scaling_factor
)
for
frame
in
generator
)
for
frame
in
generator
)
if
patches
:
if
random_patches_per_frame
is
None
:
generator
=
(
patch
for
frame
in
generator
for
patch
in
blocks
(
frame
,
block_size
,
block_overlap
))
else
:
if
padfile
.
attack_type
is
None
:
random_patches_per_frame
*=
multiple_bonafide_patches
generator
=
(
patch
for
frame
in
generator
for
patch
in
_random_sample
(
blocks
(
frame
,
block_size
,
block_overlap
),
random_patches_per_frame
))
if
augment
is
not
None
:
generator
=
(
augment
(
frame
)
for
frame
in
generator
)
return
generator
return
generator
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment