Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Frank Tjado Ihmels
medienverarbeitung17.projectmood
Commits
7216fb4f
Commit
7216fb4f
authored
Jan 23, 2018
by
tihmels
Browse files
AffectNet Preprocessing implementiert. Kleine Refactorings
parent
0e4410dd
Changes
4
Hide whitespace changes
Inline
Side-by-side
projectmood/datasets/affectnet.py
0 → 100644
View file @
7216fb4f
import
argparse
import
logging
import
os
import
shutil
import
sys
from
shutil
import
copyfile
import
pandas
as
pd
logfile
=
'../logs/affectnet.log'
# Erstellt und konfiguriert die Logdatei
logging
.
basicConfig
(
level
=
logging
.
NOTSET
,
format
=
'%(asctime)s %(levelname)-8s %(message)s'
,
datefmt
=
'%m-%d %H:%M'
,
filename
=
logfile
)
parser
=
argparse
.
ArgumentParser
(
description
=
'AffectNet PrePipeline'
)
parser
.
add_argument
(
'csv'
,
action
=
'store'
,
help
=
'the .csv file to process'
)
parser
.
add_argument
(
'source'
,
action
=
'store'
,
help
=
'image source folder'
)
parser
.
add_argument
(
'-0'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'neutral'
,
help
=
'neutral'
)
parser
.
add_argument
(
'-1'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'happy'
,
help
=
'happy'
)
parser
.
add_argument
(
'-2'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'sadness'
,
help
=
'sadness'
)
parser
.
add_argument
(
'-3'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'surprise'
,
help
=
'surprise'
)
parser
.
add_argument
(
'-4'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'fear'
,
help
=
'fear'
)
parser
.
add_argument
(
'-5'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'disgust'
,
help
=
'disgust'
)
parser
.
add_argument
(
'-6'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'anger'
,
help
=
'anger'
)
parser
.
add_argument
(
'-7'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'contempt'
,
help
=
'contempt'
)
parser
.
add_argument
(
'-8'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'none'
,
help
=
'none'
)
parser
.
add_argument
(
'-9'
,
action
=
'append_const'
,
dest
=
'emotions'
,
const
=
'uncertain'
,
help
=
'uncertain'
)
parser
.
add_argument
(
'-d'
,
action
=
'store'
,
dest
=
'destination'
,
default
=
'sorted_set'
,
help
=
'destination to sorted set'
)
parser
.
add_argument
(
'-l'
,
'--limit'
,
action
=
'store'
,
type
=
int
,
dest
=
'limit'
,
default
=-
1
,
help
=
'image limit per emotion'
)
parser
.
add_argument
(
'-v'
,
'--valence'
,
action
=
'store'
,
default
=
'-2'
,
dest
=
'valence'
,
type
=
float
,
help
=
'min valence'
)
parser
.
add_argument
(
'-a'
,
'--arousal'
,
action
=
'store'
,
default
=
'-2'
,
dest
=
'arousal'
,
type
=
float
,
help
=
'min arousal'
)
arguments
=
parser
.
parse_args
()
logging
.
debug
(
arguments
)
emodict
=
{
0
:
'neutral'
,
1
:
'happy'
,
2
:
'sadness'
,
3
:
'surprise'
,
4
:
'fear'
,
5
:
'disgust'
,
6
:
'anger'
,
7
:
'contempt'
,
8
:
'none'
,
9
:
'uncertain'
,
10
:
'noface'
}
counter
=
{}
for
e
in
arguments
.
emotions
:
counter
[
e
]
=
0
curdir
=
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
))
csv
=
os
.
path
.
join
(
curdir
,
arguments
.
csv
)
source
=
os
.
path
.
join
(
curdir
,
arguments
.
source
)
destination
=
os
.
path
.
join
(
curdir
,
arguments
.
destination
)
if
os
.
path
.
exists
(
destination
):
delete
=
input
(
destination
+
' existiert. Durch diesen Prozess werden die Daten gelöscht. Fortfahren (y/n): '
)
if
delete
==
'y'
:
shutil
.
rmtree
(
destination
)
else
:
logging
.
info
(
'process aborted'
)
sys
.
exit
()
def
generate_records
(
csvfile
):
data
=
pd
.
read_csv
(
csvfile
,
delimiter
=
','
,
dtype
=
'a'
)
imagepaths
=
pd
.
np
.
array
(
data
[
'subDirectory_filePath'
],
pd
.
np
.
str
)
labels
=
pd
.
np
.
array
(
data
[
'expression'
],
pd
.
np
.
int
)
valence
=
pd
.
np
.
array
(
data
[
'valence'
],
pd
.
np
.
float
)
arousal
=
pd
.
np
.
array
(
data
[
'arousal'
],
pd
.
np
.
float
)
for
e
in
arguments
.
emotions
:
dest
=
os
.
path
.
join
(
destination
,
e
)
if
not
os
.
path
.
exists
(
dest
):
os
.
makedirs
(
dest
)
data
=
zip
(
labels
,
imagepaths
,
valence
,
arousal
)
for
d
in
data
:
img
=
d
[
1
]
pathfrom
=
os
.
path
.
join
(
source
,
img
)
if
not
os
.
path
.
exists
(
pathfrom
):
logging
.
info
(
img
+
' not found'
)
continue
if
all
(
count
==
arguments
.
limit
for
count
in
counter
.
values
()):
break
emotion
=
emodict
.
get
(
d
[
0
])
if
emotion
not
in
arguments
.
emotions
or
d
[
2
]
<
float
(
arguments
.
valence
)
or
d
[
3
]
<
float
(
arguments
.
arousal
)
or
counter
[
emotion
]
==
arguments
.
limit
:
continue
parent
=
os
.
path
.
join
(
destination
,
emotion
)
pathto
=
os
.
path
.
join
(
parent
,
img
.
split
(
'/'
)[
1
])
copyfile
(
pathfrom
,
pathto
)
logging
.
info
(
'wrote file '
+
pathto
)
counter
[
emotion
]
+=
1
if
__name__
==
'__main__'
:
generate_records
(
csv
)
logging
.
info
(
'finish'
)
logging
.
info
(
counter
)
projectmood/
image_sort
.py
→
projectmood/
datasets/cohn_kanade
.py
View file @
7216fb4f
...
...
@@ -14,7 +14,7 @@ emotions = ["neutral", "anger", "contempt", "disgust", "fear", "happy", "sadness
"""
Liste mit den Dateiordnern aller Teilnehmer
"""
participants
=
glob
.
glob
(
"resources/img_data/source_emotion/*"
)
participants
=
glob
.
glob
(
"
../
resources/img_data/source_emotion/*"
)
for
x
in
participants
:
...
...
@@ -39,7 +39,7 @@ for x in participants:
"""
emotion
=
int
(
float
(
file
.
readline
()))
source_emotions
=
glob
.
glob
(
"resources/img_data/source_images/%s/%s/*.png"
%
(
number
,
current_session
))
source_emotions
=
glob
.
glob
(
"
../
resources/img_data/source_images/%s/%s/*.png"
%
(
number
,
current_session
))
source_emotions
.
sort
()
"""
...
...
@@ -58,8 +58,8 @@ for x in participants:
Für den neutralen Ausdruck
Für die Emotion
"""
dest_neut
=
"resources/img_data/sorted_set/neutral/%s"
%
sourcefile_neutral
[
44
:]
dest_emot
=
"resources/img_data/sorted_set/%s/%s"
%
(
emotions
[
emotion
],
sourcefile_emotion
[
44
:])
dest_neut
=
"
../
resources/img_data/sorted_set/neutral/%s"
%
sourcefile_neutral
[
44
:]
dest_emot
=
"
../
resources/img_data/sorted_set/%s/%s"
%
(
emotions
[
emotion
],
sourcefile_emotion
[
44
:])
"""Kopiert Dateien"""
copyfile
(
sourcefile_neutral
,
dest_neut
)
...
...
projectmood/datasets/fer2013.py
0 → 100644
View file @
7216fb4f
import
numpy
as
np
import
cv2
import
mxnet
as
mx
import
pandas
as
pd
import
random
import
os
curdir
=
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
))
def
gen_record
(
csvfile
,
channel
):
data
=
pd
.
read_csv
(
csvfile
,
delimiter
=
','
,
dtype
=
'a'
)
labels
=
np
.
array
(
data
[
'emotion'
],
np
.
float
)
# print(labels,'\n',data['emotion'])
imagebuffer
=
np
.
array
(
data
[
'pixels'
])
images
=
np
.
array
([
np
.
fromstring
(
image
,
np
.
uint8
,
sep
=
' '
)
for
image
in
imagebuffer
])
del
imagebuffer
num_shape
=
int
(
np
.
sqrt
(
images
.
shape
[
-
1
]))
images
.
shape
=
(
images
.
shape
[
0
],
num_shape
,
num_shape
)
# img=images[0];cv2.imshow('test',img);cv2.waitKey(0);cv2.destroyAllWindow();exit()
dirs
=
set
(
data
[
'Usage'
])
subdirs
=
set
(
labels
)
class_dir
=
{}
for
dr
in
dirs
:
dest
=
os
.
path
.
join
(
curdir
,
dr
)
class_dir
[
dr
]
=
dest
if
not
os
.
path
.
exists
(
dest
):
os
.
mkdir
(
dest
)
data
=
zip
(
labels
,
images
,
data
[
'Usage'
])
for
d
in
data
:
destdir
=
os
.
path
.
join
(
class_dir
[
d
[
-
1
]],
str
(
int
(
d
[
0
])))
if
not
os
.
path
.
exists
(
destdir
):
os
.
mkdir
(
destdir
)
img
=
d
[
1
]
filepath
=
unique_name
(
destdir
,
d
[
-
1
])
print
(
'[^_^] Write image to %s'
%
filepath
)
if
not
filepath
:
continue
sig
=
cv2
.
imwrite
(
filepath
,
img
)
if
not
sig
:
print
(
'Error'
)
exit
(
-
1
)
def
unique_name
(
pardir
,
prefix
,
suffix
=
'jpg'
):
filename
=
'{0}_{1}.{2}'
.
format
(
prefix
,
random
.
randint
(
1
,
10
**
8
),
suffix
)
filepath
=
os
.
path
.
join
(
pardir
,
filename
)
if
not
os
.
path
.
exists
(
filepath
):
return
filepath
unique_name
(
pardir
,
prefix
,
suffix
)
if
__name__
==
'__main__'
:
filename
=
'fer2013.csv'
filename
=
os
.
path
.
join
(
curdir
,
filename
)
gen_record
(
filename
,
1
)
# ##################### test
# tmp = unique_name('./Training','Training')
# print(tmp)
\ No newline at end of file
projectmood/resources/emojis/sadness.png
0 → 100644
View file @
7216fb4f
18.2 KB
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