Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
py-3d-face-reconstruction
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Richard Torenvliet
py-3d-face-reconstruction
Commits
8e5a7e83
Commit
8e5a7e83
authored
Apr 18, 2016
by
Richard Torenvliet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactored a little and add a script to generate and store the model
parent
bafb7dbd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
50 additions
and
12 deletions
+50
-12
makefile
makefile
+6
-0
scripts/imm_test_set.sh
scripts/imm_test_set.sh
+5
-0
scripts/imm_train_set.sh
scripts/imm_train_set.sh
+5
-0
src/main.py
src/main.py
+34
-12
No files found.
makefile
View file @
8e5a7e83
...
...
@@ -10,6 +10,12 @@ data/imm_face_db: data/imm_face_db.tar.gz
data/imm_face_db.tar.gz
:
(
cd
data
;
wget http://www.imm.dtu.dk/~aam/datasets/imm_face_db.tar.gz
)
generate_test_model
:
python src/main.py
\
--store_pca
\
--asf
data/imm_face_db/
*
.asf
\
--file
data/pca_test_model
test
:
py.test
-f
src/
*
_test.py
scripts/imm_test_set.sh
0 → 100755
View file @
8e5a7e83
files
=
`
ls
data/imm_face_db/ |
grep
-E
"^[0-2][0-9].*.asf"
`
for
f
in
$files
;
do
echo
"data/imm_face_db/
$f
"
done
scripts/imm_train_set.sh
0 → 100755
View file @
8e5a7e83
files
=
`
ls
data/imm_face_db/ |
grep
-E
"^[3-4][0-9].*.asf"
`
for
f
in
$files
;
do
echo
"data/imm_face_db/
$f
"
done
src/main.py
View file @
8e5a7e83
import
copy
import
argparse
import
logging
import
cv2
import
numpy
as
np
from
pca
import
pca
,
reconstruct
import
pca
from
aam
import
get_mean
from
imm_points
import
IMMPoints
,
build_feature_vectors
,
\
flatten_feature_vectors
logging
.
basicConfig
(
level
=
logging
.
INFO
,
format
=
'%(asctime)s %(levelname)s %(name)s: %(message)s'
)
logger
=
logging
.
getLogger
(
__name__
)
def
nothing
(
_
):
pass
def
add_parser_options
():
...
...
@@ -21,12 +23,12 @@ def add_parser_options():
pca_group
.
add_argument
(
'--store_pca'
,
action
=
'store_true'
,
help
=
'
number of principle components to keep and are able to manipulate
'
help
=
'
Store the pca model
'
)
pca_group
.
add_argument
(
'--show_pca'
,
action
=
'store_true'
,
help
=
'
number of principle components to keep and are able to manipulate
'
help
=
'
Show and manipulate the stored PCA model
'
)
# asf files
...
...
@@ -47,6 +49,10 @@ def add_parser_options():
return
parser
def
nothing
(
_
):
pass
def
init_eigenvalue_trackbars
(
n_components
,
s
):
cv2
.
namedWindow
(
'eigenvalues'
)
...
...
@@ -54,10 +60,24 @@ def init_eigenvalue_trackbars(n_components, s):
cv2
.
createTrackbar
(
'{}'
.
format
(
i
),
'eigenvalues'
,
500
,
1000
,
nothing
)
def
store_model
(
args
):
def
store_
pca_
model
(
args
):
"""
Store the U, s, Vt and mean of all the asf datafiles given by the asf
files.
It is stored in the following way:
np.load(filename, np.assary([U, s, Vt, mean_values])
And accessed by:
UsVtm = np.load(args.file)
U = UsVtm[0]
s = UsVtm[1]
Vt = UsVtm[2]
mean_values = UsVtm[3]
"""
assert
args
.
asf
,
'--asf files should be given'
assert
args
.
file
,
'--file needs to be provided to store the pca model'
...
...
@@ -65,12 +85,13 @@ def store_model(args):
imm_points
=
build_feature_vectors
(
args
.
asf
,
flattened
=
True
)
mean_values
=
get_mean
(
imm_points
)
U
,
s
,
Vt
=
pca
(
imm_points
,
mean_values
)
U
,
s
,
Vt
=
pca
.
pca
(
imm_points
,
mean_values
)
np
.
save
(
args
.
file
,
np
.
asarray
([
U
,
s
,
Vt
,
mean_values
]))
logger
.
info
(
'Stored pca model in %s'
,
args
.
file
)
def
show_pca
(
args
):
def
show_pca
_model
(
args
):
assert
args
.
asf
,
'--asf files should be given to allow the image to be shown'
assert
args
.
file
,
'--file needs to be provided to get the pca model'
...
...
@@ -80,7 +101,6 @@ def show_pca(args):
U
=
UsVtm
[
0
]
s
=
UsVtm
[
1
]
Vt
=
UsVtm
[
2
]
mean_values
=
UsVtm
[
3
]
# init trackbars
...
...
@@ -95,7 +115,7 @@ def show_pca(args):
s_copy
=
copy
.
copy
(
s
)
while
True
:
projection
=
reconstruct
(
U
,
s_copy
,
Vt
,
n_components
)
projection
=
pca
.
reconstruct
(
U
,
s_copy
,
Vt
,
n_components
)
X_reconstructed
=
(
projection
[
index
]
+
mean_values
).
reshape
((
58
,
2
))
imm
=
IMMPoints
(
points
=
X_reconstructed
)
...
...
@@ -122,9 +142,11 @@ def main():
args
=
parser
.
parse_args
()
if
args
.
show_pca
:
show_pca
(
args
)
show_pca
_model
(
args
)
elif
args
.
store_pca
:
store_model
(
args
)
store_pca_model
(
args
)
elif
args
.
reconstruct
:
reconstruct_with_model
(
args
)
if
__name__
==
'__main__'
:
...
...
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