added lower and upper half composite exp

This commit is contained in:
Vidya Koesmahargyo
2020-12-03 10:16:36 -05:00
parent c190d6f86b
commit 847e01fc7c
6 changed files with 101 additions and 82 deletions

View File

@@ -17,7 +17,7 @@ class ConfigRawReader(object):
Args: Args:
feature_config_yml (None, optional): yml file defined service configuration feature_config_yml (None, optional): yml file defined service configuration
""" """
if feature_config_yml is None: if feature_config_yml is None:
feature_config = DBMLIB_FEATURE_CONFIG feature_config = DBMLIB_FEATURE_CONFIG
else: else:
@@ -25,15 +25,15 @@ class ConfigRawReader(object):
with open(feature_config, 'r') as ymlfile: with open(feature_config, 'r') as ymlfile:
config = yaml.load(ymlfile) config = yaml.load(ymlfile)
#Verbal features #Verbal features
self.base_raw = config self.base_raw = config
self.err_reason = config['raw_feature']['error_reason'] self.err_reason = config['raw_feature']['error_reason']
#Output range #Output range
self.mov_headvel_start = config['raw_feature']['mov_headvel_start'] self.mov_headvel_start = config['raw_feature']['mov_headvel_start']
self.mov_headvel_end = config['raw_feature']['mov_headvel_end'] self.mov_headvel_end = config['raw_feature']['mov_headvel_end']
#Acoustic variable #Acoustic variable
self.aco_int = config['raw_feature']['aco_int'] self.aco_int = config['raw_feature']['aco_int']
self.aco_ff = config['raw_feature']['aco_ff'] self.aco_ff = config['raw_feature']['aco_ff']
@@ -194,6 +194,8 @@ class ConfigRawReader(object):
self.neu_exp = config['raw_feature']['neu_exp'] self.neu_exp = config['raw_feature']['neu_exp']
self.cai_exp = config['raw_feature']['cai_exp'] self.cai_exp = config['raw_feature']['cai_exp']
self.com_exp = config['raw_feature']['com_exp'] self.com_exp = config['raw_feature']['com_exp']
self.com_lower_exp = config['raw_feature']['com_lower_exp']
self.com_upper_exp = config['raw_feature']['com_upper_exp']
self.hap_exp_full = config['raw_feature']['hap_exp_full'] self.hap_exp_full = config['raw_feature']['hap_exp_full']
self.sad_exp_full = config['raw_feature']['sad_exp_full'] self.sad_exp_full = config['raw_feature']['sad_exp_full']
self.sur_exp_full = config['raw_feature']['sur_exp_full'] self.sur_exp_full = config['raw_feature']['sur_exp_full']
@@ -206,11 +208,13 @@ class ConfigRawReader(object):
self.neu_exp_full = config['raw_feature']['neu_exp_full'] self.neu_exp_full = config['raw_feature']['neu_exp_full']
self.cai_exp_full = config['raw_feature']['cai_exp_full'] self.cai_exp_full = config['raw_feature']['cai_exp_full']
self.com_exp_full = config['raw_feature']['com_exp_full'] self.com_exp_full = config['raw_feature']['com_exp_full']
self.com_lower_exp_full = config['raw_feature']['com_lower_exp_full']
self.com_upper_exp_full = config['raw_feature']['com_upper_exp_full']
self.fac_AsymMaskMouth = config['raw_feature']['fac_AsymMaskMouth'] self.fac_AsymMaskMouth = config['raw_feature']['fac_AsymMaskMouth']
self.fac_AsymMaskEye = config['raw_feature']['fac_AsymMaskEye'] self.fac_AsymMaskEye = config['raw_feature']['fac_AsymMaskEye']
self.fac_AsymMaskEyebrow = config['raw_feature']['fac_AsymMaskEyebrow'] self.fac_AsymMaskEyebrow = config['raw_feature']['fac_AsymMaskEyebrow']
self.fac_AsymMaskCom = config['raw_feature']['fac_AsymMaskCom'] self.fac_AsymMaskCom = config['raw_feature']['fac_AsymMaskCom']
#Movement features #Movement features
self.head_vel = config['raw_feature']['head_vel'] self.head_vel = config['raw_feature']['head_vel']
self.mov_blink_ear = config['raw_feature']['mov_blink_ear'] self.mov_blink_ear = config['raw_feature']['mov_blink_ear']
@@ -222,4 +226,3 @@ class ConfigRawReader(object):
self.mov_Hpose_Yaw = config['raw_feature']['mov_Hpose_Yaw'] self.mov_Hpose_Yaw = config['raw_feature']['mov_Hpose_Yaw']
self.mov_Hpose_Roll = config['raw_feature']['mov_Hpose_Roll'] self.mov_Hpose_Roll = config['raw_feature']['mov_Hpose_Roll']
self.mov_Hpose_Dist = config['raw_feature']['mov_Hpose_Dist'] self.mov_Hpose_Dist = config['raw_feature']['mov_Hpose_Dist']

View File

@@ -11,32 +11,32 @@ from dbm_lib.dbm_features.raw_features.util import util as ut
def smooth(x,window_len=11,window='hanning'): def smooth(x,window_len=11,window='hanning'):
"""smooth the data using a window with requested size. """smooth the data using a window with requested size.
This method is based on the convolution of a scaled window with the signal. This method is based on the convolution of a scaled window with the signal.
The signal is prepared by introducing reflected copies of the signal The signal is prepared by introducing reflected copies of the signal
(with the window size) in both ends so that transient parts are minimized (with the window size) in both ends so that transient parts are minimized
in the begining and end part of the output signal. in the begining and end part of the output signal.
input: input:
x: the input signal x: the input signal
window_len: the dimension of the smoothing window; should be an odd integer window_len: the dimension of the smoothing window; should be an odd integer
window: the type of window from 'flat', 'hanning', 'hamming', 'bartlett', 'blackman' window: the type of window from 'flat', 'hanning', 'hamming', 'bartlett', 'blackman'
flat window will produce a moving average smoothing. flat window will produce a moving average smoothing.
output: output:
the smoothed signal the smoothed signal
example: example:
t=linspace(-2,2,0.1) t=linspace(-2,2,0.1)
x=sin(t)+randn(len(t))*0.1 x=sin(t)+randn(len(t))*0.1
y=smooth(x) y=smooth(x)
see also: see also:
numpy.hanning, numpy.hamming, numpy.bartlett, numpy.blackman, numpy.convolve numpy.hanning, numpy.hamming, numpy.bartlett, numpy.blackman, numpy.convolve
scipy.signal.lfilter scipy.signal.lfilter
TODO: the window parameter could be the window itself if an array instead of a string TODO: the window parameter could be the window itself if an array instead of a string
NOTE: length(output) != length(input), to correct this: return y[(window_len/2-1):-(window_len/2)] instead of just y. NOTE: length(output) != length(input), to correct this: return y[(window_len/2-1):-(window_len/2)] instead of just y.
""" """
@@ -62,7 +62,7 @@ def filter_by_confidence_and_thresh(x, fea, thresh):
return x[fea] return x[fea]
else: else:
return np.NaN return np.NaN
def add_au_emotion(x, emotion,emotion_type,exp_type): def add_au_emotion(x, emotion,emotion_type,exp_type):
""" """
computing individula emotion expressivity matrix computing individula emotion expressivity matrix
@@ -79,20 +79,20 @@ def add_au_emotion(x, emotion,emotion_type,exp_type):
if x[au_c_label]==1 and (not np.isnan(x[au_r_label])): #there are data with face in, but au_c=0 if x[au_c_label]==1 and (not np.isnan(x[au_r_label])): #there are data with face in, but au_c=0
sum_r += x[au_r_label] sum_r += x[au_r_label]
cnt += 6 cnt += 6
if exp_type=='full' and x[au_c_label]==0: #Logic to compute emotion expressivity when all AU's are present if exp_type=='full' and x[au_c_label]==0: #Logic to compute emotion expressivity when all AU's are present
cnt = 0 cnt = 0
break break
if cnt > 0: if cnt > 0:
sum_r /= cnt sum_r /= cnt
else: else:
sum_r = 0 sum_r = 0
v_emo = x[emotion_type] + sum_r v_emo = x[emotion_type] + sum_r
else: else:
v_emo = np.NaN v_emo = np.NaN
error_reason = 'confidence less than 80%' error_reason = 'confidence less than 80%'
return v_emo, error_reason return v_emo, error_reason
def add_au_occ(x, emotion,emotion_type): def add_au_occ(x, emotion,emotion_type):
""" """
computing individula emotion presence computing individula emotion presence
@@ -107,14 +107,14 @@ def add_au_occ(x, emotion,emotion_type):
au_c_label = " AU{:02d}_c".format(au) au_c_label = " AU{:02d}_c".format(au)
if x[au_c_label]==1: #there are data with face in, but au_c=0 if x[au_c_label]==1: #there are data with face in, but au_c=0
au_pres.append(1) au_pres.append(1)
if len(au_pres) == len(emotion): if len(au_pres) == len(emotion):
em_pres = 1 em_pres = 1
else: else:
em_pres = np.NaN em_pres = np.NaN
error_reason = 'confidence less than 80%' error_reason = 'confidence less than 80%'
return em_pres, error_reason return em_pres, error_reason
def emotion_exp(em_au,of,em_col,err_col): def emotion_exp(em_au,of,em_col,err_col):
""" """
Computing individual emotion expressivity and adding it to dataframe Computing individual emotion expressivity and adding it to dataframe
@@ -122,14 +122,14 @@ def emotion_exp(em_au,of,em_col,err_col):
for emotion in em_au: for emotion in em_au:
of[[em_col[0],err_col]]=of.apply(add_au_emotion, args=(emotion,em_col[0],'partial',), axis=1, result_type='expand') of[[em_col[0],err_col]]=of.apply(add_au_emotion, args=(emotion,em_col[0],'partial',), axis=1, result_type='expand')
of[[em_col[1],err_col]]=of.apply(add_au_emotion, args=(emotion,em_col[1],'full',), axis=1, result_type='expand') of[[em_col[1],err_col]]=of.apply(add_au_emotion, args=(emotion,em_col[1],'full',), axis=1, result_type='expand')
def emotion_pres(em_au,of,em_col,err_col): def emotion_pres(em_au,of,em_col,err_col):
""" """
Computing individual emotion expressivity and adding it to dataframe Computing individual emotion expressivity and adding it to dataframe
""" """
for emotion in em_au: for emotion in em_au:
of[[em_col,err_col]]=of.apply(add_au_occ, args=(emotion,em_col,), axis=1, result_type='expand') of[[em_col,err_col]]=of.apply(add_au_occ, args=(emotion,em_col,), axis=1, result_type='expand')
def calc_of_for_video(of,face_cfg,fe_cfg): def calc_of_for_video(of,face_cfg,fe_cfg):
""" """
Creating dataframe for emotion expressivity Creating dataframe for emotion expressivity
@@ -142,7 +142,7 @@ def calc_of_for_video(of,face_cfg,fe_cfg):
fe_cfg.com_exp_full] fe_cfg.com_exp_full]
of[new_cols] = pd.DataFrame([[0] * len(new_cols)], index=of.index) of[new_cols] = pd.DataFrame([[0] * len(new_cols)], index=of.index)
of[fe_cfg.err_reason] = 'Pass' of[fe_cfg.err_reason] = 'Pass'
#Composite happiness expressivity #Composite happiness expressivity
emotion_exp(face_cfg.happiness,of,[fe_cfg.hap_exp,fe_cfg.hap_exp_full],fe_cfg.err_reason) emotion_exp(face_cfg.happiness,of,[fe_cfg.hap_exp,fe_cfg.hap_exp_full],fe_cfg.err_reason)
#Composite sadness expressivity #Composite sadness expressivity
@@ -167,6 +167,10 @@ def calc_of_for_video(of,face_cfg,fe_cfg):
emotion_exp(face_cfg.cai,of,[fe_cfg.cai_exp,fe_cfg.cai_exp_full],fe_cfg.err_reason) emotion_exp(face_cfg.cai,of,[fe_cfg.cai_exp,fe_cfg.cai_exp_full],fe_cfg.err_reason)
#Composite Expressivity #Composite Expressivity
emotion_exp(face_cfg.ACTION_UNITS,of,[fe_cfg.com_exp,fe_cfg.com_exp_full],fe_cfg.err_reason) emotion_exp(face_cfg.ACTION_UNITS,of,[fe_cfg.com_exp,fe_cfg.com_exp_full],fe_cfg.err_reason)
#Composite lower face expressivity
emotion_exp(face_cfg.LOWER_ACTION_UNITS,of,[fe_cfg.com_lower_exp,fe_cfg.com_lower_exp_full],fe_cfg.err_reason)
#Composite upper face Expressivity
emotion_exp(face_cfg.UPPER_ACTION_UNITS,of,[fe_cfg.com_upper_exp,fe_cfg.com_upper_exp_full],fe_cfg.err_reason)
#AU happiness presence #AU happiness presence
emotion_pres(face_cfg.happiness,of,fe_cfg.happ_occ,fe_cfg.err_reason) emotion_pres(face_cfg.happiness,of,fe_cfg.happ_occ,fe_cfg.err_reason)
#AU Sad presence #AU Sad presence

View File

@@ -18,18 +18,20 @@ class ConfigFaceReader(object):
Args: Args:
service_config_yml (None, optional): yml file defined service configuration service_config_yml (None, optional): yml file defined service configuration
""" """
if service_config_yml is None: if service_config_yml is None:
service_config = DBMLIB_FACE_CONFIG service_config = DBMLIB_FACE_CONFIG
else: else:
service_config = service_config_yml service_config = service_config_yml
with open(service_config, 'r') as ymlfile: with open(service_config, 'r') as ymlfile:
config = yaml.load(ymlfile) config = yaml.load(ymlfile)
self.ACTION_UNITS = config['cdx_face_config']['ACTION_UNITS'] self.ACTION_UNITS = config['cdx_face_config']['ACTION_UNITS']
self.NEG_ACTION_UNITS = config['cdx_face_config']['NEG_ACTION_UNITS'] self.NEG_ACTION_UNITS = config['cdx_face_config']['NEG_ACTION_UNITS']
self.POS_ACTION_UNITS = config['cdx_face_config']['POS_ACTION_UNITS'] self.POS_ACTION_UNITS = config['cdx_face_config']['POS_ACTION_UNITS']
self.NET_ACTION_UNITS = config['cdx_face_config']['NET_ACTION_UNITS'] self.NET_ACTION_UNITS = config['cdx_face_config']['NET_ACTION_UNITS']
self.LOWER_ACTION_UNITS = config['cdx_face_config']['LOWER_ACTION_UNITS']
self.UPPER_ACTION_UNITS = config['cdx_face_config']['LOWER_ACTION_UNITS']
self.happiness = config['cdx_face_config']['happiness'] self.happiness = config['cdx_face_config']['happiness']
self.sadness = config['cdx_face_config']['sadness'] self.sadness = config['cdx_face_config']['sadness']
self.surprise = config['cdx_face_config']['surprise'] self.surprise = config['cdx_face_config']['surprise']
@@ -44,7 +46,7 @@ class ConfigFaceReader(object):
self.AU_fl = config['cdx_face_config']['AU_filters'] self.AU_fl = config['cdx_face_config']['AU_filters']
self.au_int = config['cdx_face_config']['au_intensity'] self.au_int = config['cdx_face_config']['au_intensity']
self.au_prs = config['cdx_face_config']['au_presence'] self.au_prs = config['cdx_face_config']['au_presence']
def get_action_unit(self): def get_action_unit(self):
"""Summary """Summary
Returns: Returns:
@@ -134,4 +136,4 @@ class ConfigFaceReader(object):
Returns: Returns:
TYPE: end point TYPE: end point
""" """
return self.cai return self.cai

View File

@@ -1,9 +1,9 @@
derive_feature: derive_feature:
#DBM Feature Group #DBM Feature Group
FEATURE_GROUP: ['FAC_ASYM', 'FAC_AU', 'FAC_EXP', 'FAC_LMK', 'ACO_INT', 'ACO_FF', 'ACO_HNR', 'ACO_GNE', 'ACO_FM', FEATURE_GROUP: ['FAC_ASYM', 'FAC_AU', 'FAC_EXP', 'FAC_LMK', 'ACO_INT', 'ACO_FF', 'ACO_HNR', 'ACO_GNE', 'ACO_FM',
'ACO_JITTER','ACO_SHIMMER', 'ACO_PAUSE', 'ACO_VFS', 'ACO_MFCC', 'MOV_HM', 'MOV_HP', 'EYE_BLINK'] 'ACO_JITTER','ACO_SHIMMER', 'ACO_PAUSE', 'ACO_VFS', 'ACO_MFCC', 'MOV_HM', 'MOV_HP', 'EYE_BLINK']
#Feature group output file extensions #Feature group output file extensions
FAC_ASYM_LOC: _facasym FAC_ASYM_LOC: _facasym
FAC_AU_LOC: _facau FAC_AU_LOC: _facau
@@ -22,31 +22,31 @@ derive_feature:
MOV_HM_LOC: _headmov MOV_HM_LOC: _headmov
MOV_HP_LOC: _headpose MOV_HP_LOC: _headpose
EYE_BLINK_LOC: _eyeblinks EYE_BLINK_LOC: _eyeblinks
#Facial category feature group #Facial category feature group
FAC_ASYM: ['fac_AsymMaskMouth', 'fac_AsymMaskEyebrow', 'fac_AsymMaskEye', 'fac_AsymMaskCom'] FAC_ASYM: ['fac_AsymMaskMouth', 'fac_AsymMaskEyebrow', 'fac_AsymMaskEye', 'fac_AsymMaskCom']
FAC_AU: ['fac_AU01int', 'fac_AU02int', 'fac_AU04int', 'fac_AU05int', 'fac_AU06int', 'fac_AU07int', 'fac_AU09int', FAC_AU: ['fac_AU01int', 'fac_AU02int', 'fac_AU04int', 'fac_AU05int', 'fac_AU06int', 'fac_AU07int', 'fac_AU09int',
'fac_AU10int', 'fac_AU12int', 'fac_AU14int', 'fac_AU15int', 'fac_AU17int', 'fac_AU20int', 'fac_AU23int', 'fac_AU10int', 'fac_AU12int', 'fac_AU14int', 'fac_AU15int', 'fac_AU17int', 'fac_AU20int', 'fac_AU23int',
'fac_AU25int', 'fac_AU26int', 'fac_AU45int', 'fac_AU01pres', 'fac_AU02pres', 'fac_AU04pres', 'fac_AU05pres', 'fac_AU25int', 'fac_AU26int', 'fac_AU45int', 'fac_AU01pres', 'fac_AU02pres', 'fac_AU04pres', 'fac_AU05pres',
'fac_AU06pres', 'fac_AU07pres', 'fac_AU09pres', 'fac_AU10pres', 'fac_AU12pres', 'fac_AU14pres', 'fac_AU15pres', 'fac_AU06pres', 'fac_AU07pres', 'fac_AU09pres', 'fac_AU10pres', 'fac_AU12pres', 'fac_AU14pres', 'fac_AU15pres',
'fac_AU17pres', 'fac_AU20pres', 'fac_AU23pres', 'fac_AU25pres', 'fac_AU26pres', 'fac_AU28pres', 'fac_AU45pres'] 'fac_AU17pres', 'fac_AU20pres', 'fac_AU23pres', 'fac_AU25pres', 'fac_AU26pres', 'fac_AU28pres', 'fac_AU45pres']
FAC_EXP: ['hap_exp', 'sad_exp', 'sur_exp', 'fea_exp', 'ang_exp', 'dis_exp', 'con_exp', 'happ_occ', 'sad_occ', FAC_EXP: ['hap_exp', 'sad_exp', 'sur_exp', 'fea_exp', 'ang_exp', 'dis_exp', 'con_exp', 'happ_occ', 'sad_occ',
'sur_occ', 'fea_occ', 'ang_occ', 'dis_occ', 'con_occ', 'pos_exp', 'neg_exp', 'com_exp', 'hap_exp_full', 'sur_occ', 'fea_occ', 'ang_occ', 'dis_occ', 'con_occ', 'pos_exp', 'neg_exp', 'com_exp','com_lower_exp','com_upper_exp', 'hap_exp_full',
'sad_exp_full', 'sur_exp_full','fea_exp_full', 'ang_exp_full', 'dis_exp_full', 'con_exp_full', 'pos_exp_full', 'sad_exp_full', 'sur_exp_full','fea_exp_full', 'ang_exp_full', 'dis_exp_full', 'con_exp_full', 'pos_exp_full',
'neg_exp_full', 'com_exp_full'] 'neg_exp_full', 'com_exp_full','com_lower_exp_full','com_upper_exp_full']
FAC_LMK: ['fac_LMK00disp', 'fac_LMK01disp', 'fac_LMK02disp', 'fac_LMK03disp', 'fac_LMK04disp', FAC_LMK: ['fac_LMK00disp', 'fac_LMK01disp', 'fac_LMK02disp', 'fac_LMK03disp', 'fac_LMK04disp',
'fac_LMK05disp', 'fac_LMK06disp', 'fac_LMK07disp', 'fac_LMK08disp', 'fac_LMK09disp', 'fac_LMK10disp', 'fac_LMK05disp', 'fac_LMK06disp', 'fac_LMK07disp', 'fac_LMK08disp', 'fac_LMK09disp', 'fac_LMK10disp',
'fac_LMK11disp', 'fac_LMK12disp', 'fac_LMK13disp', 'fac_LMK14disp', 'fac_LMK15disp', 'fac_LMK16disp', 'fac_LMK11disp', 'fac_LMK12disp', 'fac_LMK13disp', 'fac_LMK14disp', 'fac_LMK15disp', 'fac_LMK16disp',
'fac_LMK17disp', 'fac_LMK18disp', 'fac_LMK19disp', 'fac_LMK20disp', 'fac_LMK21disp', 'fac_LMK22disp', 'fac_LMK17disp', 'fac_LMK18disp', 'fac_LMK19disp', 'fac_LMK20disp', 'fac_LMK21disp', 'fac_LMK22disp',
'fac_LMK23disp', 'fac_LMK24disp', 'fac_LMK25disp', 'fac_LMK26disp', 'fac_LMK27disp', 'fac_LMK28disp', 'fac_LMK23disp', 'fac_LMK24disp', 'fac_LMK25disp', 'fac_LMK26disp', 'fac_LMK27disp', 'fac_LMK28disp',
'fac_LMK29disp', 'fac_LMK30disp', 'fac_LMK31disp', 'fac_LMK32disp', 'fac_LMK33disp', 'fac_LMK34disp', 'fac_LMK29disp', 'fac_LMK30disp', 'fac_LMK31disp', 'fac_LMK32disp', 'fac_LMK33disp', 'fac_LMK34disp',
'fac_LMK35disp', 'fac_LMK36disp', 'fac_LMK37disp', 'fac_LMK38disp', 'fac_LMK39disp', 'fac_LMK40disp', 'fac_LMK35disp', 'fac_LMK36disp', 'fac_LMK37disp', 'fac_LMK38disp', 'fac_LMK39disp', 'fac_LMK40disp',
'fac_LMK41disp', 'fac_LMK42disp', 'fac_LMK43disp', 'fac_LMK44disp', 'fac_LMK45disp', 'fac_LMK46disp', 'fac_LMK41disp', 'fac_LMK42disp', 'fac_LMK43disp', 'fac_LMK44disp', 'fac_LMK45disp', 'fac_LMK46disp',
'fac_LMK47disp', 'fac_LMK48disp', 'fac_LMK49disp', 'fac_LMK50disp', 'fac_LMK51disp', 'fac_LMK52disp', 'fac_LMK47disp', 'fac_LMK48disp', 'fac_LMK49disp', 'fac_LMK50disp', 'fac_LMK51disp', 'fac_LMK52disp',
'fac_LMK53disp', 'fac_LMK54disp', 'fac_LMK55disp', 'fac_LMK56disp', 'fac_LMK57disp', 'fac_LMK58disp', 'fac_LMK53disp', 'fac_LMK54disp', 'fac_LMK55disp', 'fac_LMK56disp', 'fac_LMK57disp', 'fac_LMK58disp',
'fac_LMK59disp', 'fac_LMK60disp', 'fac_LMK61disp', 'fac_LMK62disp', 'fac_LMK63disp', 'fac_LMK64disp', 'fac_LMK59disp', 'fac_LMK60disp', 'fac_LMK61disp', 'fac_LMK62disp', 'fac_LMK63disp', 'fac_LMK64disp',
'fac_LMK65disp', 'fac_LMK66disp', 'fac_LMK67disp'] 'fac_LMK65disp', 'fac_LMK66disp', 'fac_LMK67disp']
#Acoustic category feature group #Acoustic category feature group
ACO_INT: ['aco_int'] ACO_INT: ['aco_int']
ACO_FF: ['aco_ff'] ACO_FF: ['aco_ff']
@@ -59,19 +59,19 @@ derive_feature:
ACO_VFS: ['aco_voicePct'] ACO_VFS: ['aco_voicePct']
ACO_MFCC: ['aco_mfcc1','aco_mfcc2','aco_mfcc3','aco_mfcc4','aco_mfcc5','aco_mfcc6','aco_mfcc7','aco_mfcc8','aco_mfcc9', ACO_MFCC: ['aco_mfcc1','aco_mfcc2','aco_mfcc3','aco_mfcc4','aco_mfcc5','aco_mfcc6','aco_mfcc7','aco_mfcc8','aco_mfcc9',
'aco_mfcc10','aco_mfcc11','aco_mfcc12'] 'aco_mfcc10','aco_mfcc11','aco_mfcc12']
#Movement category feature group #Movement category feature group
MOV_HM: ['head_vel'] MOV_HM: ['head_vel']
MOV_HP: ['mov_Hpose_Dist','mov_Hpose_Pitch','mov_Hpose_Yaw','mov_Hpose_Roll'] MOV_HP: ['mov_Hpose_Dist','mov_Hpose_Pitch','mov_Hpose_Yaw','mov_Hpose_Roll']
EYE_BLINK: ['mov_blink_ear', 'vid_dur', 'mov_blinkdur'] EYE_BLINK: ['mov_blink_ear', 'vid_dur', 'mov_blinkdur']
#Calculation for variables #Calculation for variables
# Facial Asymmetry # Facial Asymmetry
fac_AsymMaskMouth: ['mean', 'std'] fac_AsymMaskMouth: ['mean', 'std']
fac_AsymMaskEyebrow: ['mean', 'std'] fac_AsymMaskEyebrow: ['mean', 'std']
fac_AsymMaskEye: ['mean', 'std'] fac_AsymMaskEye: ['mean', 'std']
fac_AsymMaskCom: ['mean', 'std'] fac_AsymMaskCom: ['mean', 'std']
#Facial Action Unit #Facial Action Unit
fac_AU01int: ['mean', 'std'] fac_AU01int: ['mean', 'std']
fac_AU02int: ['mean', 'std'] fac_AU02int: ['mean', 'std']
@@ -103,12 +103,12 @@ derive_feature:
fac_AU15pres: ['pct'] fac_AU15pres: ['pct']
fac_AU17pres: ['pct'] fac_AU17pres: ['pct']
fac_AU20pres: ['pct'] fac_AU20pres: ['pct']
fac_AU23pres: ['pct'] fac_AU23pres: ['pct']
fac_AU25pres: ['pct'] fac_AU25pres: ['pct']
fac_AU26pres: ['pct'] fac_AU26pres: ['pct']
fac_AU28pres: ['pct'] fac_AU28pres: ['pct']
fac_AU45pres: ['pct'] fac_AU45pres: ['pct']
#Facial Expressivity #Facial Expressivity
hap_exp: ['mean', 'std'] hap_exp: ['mean', 'std']
sad_exp: ['mean', 'std'] sad_exp: ['mean', 'std']
@@ -128,8 +128,10 @@ derive_feature:
neg_exp: ['mean', 'std', 'pct'] neg_exp: ['mean', 'std', 'pct']
neu_exp: ['mean', 'std', 'pct'] neu_exp: ['mean', 'std', 'pct']
com_exp: ['mean', 'std', 'pct'] com_exp: ['mean', 'std', 'pct']
com_lower_exp: ['mean','std','pct']
com_upper_exp: ['mean','std','pct']
hap_exp_full: ['mean', 'std'] hap_exp_full: ['mean', 'std']
sad_exp_full: ['mean', 'std'] sad_exp_full: ['mean', 'std']
sur_exp_full: ['mean', 'std'] sur_exp_full: ['mean', 'std']
fea_exp_full: ['mean', 'std'] fea_exp_full: ['mean', 'std']
ang_exp_full: ['mean', 'std'] ang_exp_full: ['mean', 'std']
@@ -139,7 +141,9 @@ derive_feature:
neg_exp_full: ['mean', 'std'] neg_exp_full: ['mean', 'std']
neu_exp_full: ['mean', 'std'] neu_exp_full: ['mean', 'std']
com_exp_full: ['mean', 'std'] com_exp_full: ['mean', 'std']
com_lower_exp_full: ['mean','std']
com_upper_exp_full: ['mean', 'std']
#Facial Landmarks #Facial Landmarks
fac_LMK00disp: ['mean', 'std'] fac_LMK00disp: ['mean', 'std']
fac_LMK01disp: ['mean', 'std'] fac_LMK01disp: ['mean', 'std']
@@ -151,7 +155,7 @@ derive_feature:
fac_LMK07disp: ['mean', 'std'] fac_LMK07disp: ['mean', 'std']
fac_LMK08disp: ['mean', 'std'] fac_LMK08disp: ['mean', 'std']
fac_LMK09disp: ['mean', 'std'] fac_LMK09disp: ['mean', 'std']
fac_LMK10disp: ['mean', 'std'] fac_LMK10disp: ['mean', 'std']
fac_LMK11disp: ['mean', 'std'] fac_LMK11disp: ['mean', 'std']
fac_LMK12disp: ['mean', 'std'] fac_LMK12disp: ['mean', 'std']
fac_LMK13disp: ['mean', 'std'] fac_LMK13disp: ['mean', 'std']
@@ -163,22 +167,22 @@ derive_feature:
fac_LMK19disp: ['mean', 'std'] fac_LMK19disp: ['mean', 'std']
fac_LMK20disp: ['mean', 'std'] fac_LMK20disp: ['mean', 'std']
fac_LMK21disp: ['mean', 'std'] fac_LMK21disp: ['mean', 'std']
fac_LMK22disp: ['mean', 'std'] fac_LMK22disp: ['mean', 'std']
fac_LMK23disp: ['mean', 'std'] fac_LMK23disp: ['mean', 'std']
fac_LMK24disp: ['mean', 'std'] fac_LMK24disp: ['mean', 'std']
fac_LMK25disp: ['mean', 'std'] fac_LMK25disp: ['mean', 'std']
fac_LMK26disp: ['mean', 'std'] fac_LMK26disp: ['mean', 'std']
fac_LMK27disp: ['mean', 'std'] fac_LMK27disp: ['mean', 'std']
fac_LMK28disp: ['mean', 'std'] fac_LMK28disp: ['mean', 'std']
fac_LMK29disp: ['mean', 'std'] fac_LMK29disp: ['mean', 'std']
fac_LMK30disp: ['mean', 'std'] fac_LMK30disp: ['mean', 'std']
fac_LMK31disp: ['mean', 'std'] fac_LMK31disp: ['mean', 'std']
fac_LMK32disp: ['mean', 'std'] fac_LMK32disp: ['mean', 'std']
fac_LMK33disp: ['mean', 'std'] fac_LMK33disp: ['mean', 'std']
fac_LMK34disp: ['mean', 'std'] fac_LMK34disp: ['mean', 'std']
fac_LMK35disp: ['mean', 'std'] fac_LMK35disp: ['mean', 'std']
fac_LMK36disp: ['mean', 'std'] fac_LMK36disp: ['mean', 'std']
fac_LMK37disp: ['mean', 'std'] fac_LMK37disp: ['mean', 'std']
fac_LMK38disp: ['mean', 'std'] fac_LMK38disp: ['mean', 'std']
fac_LMK39disp: ['mean', 'std'] fac_LMK39disp: ['mean', 'std']
fac_LMK40disp: ['mean', 'std'] fac_LMK40disp: ['mean', 'std']
@@ -193,7 +197,7 @@ derive_feature:
fac_LMK49disp: ['mean', 'std'] fac_LMK49disp: ['mean', 'std']
fac_LMK50disp: ['mean', 'std'] fac_LMK50disp: ['mean', 'std']
fac_LMK51disp: ['mean', 'std'] fac_LMK51disp: ['mean', 'std']
fac_LMK52disp: ['mean', 'std'] fac_LMK52disp: ['mean', 'std']
fac_LMK53disp: ['mean', 'std'] fac_LMK53disp: ['mean', 'std']
fac_LMK54disp: ['mean', 'std'] fac_LMK54disp: ['mean', 'std']
fac_LMK55disp: ['mean', 'std'] fac_LMK55disp: ['mean', 'std']
@@ -209,7 +213,7 @@ derive_feature:
fac_LMK65disp: ['mean', 'std'] fac_LMK65disp: ['mean', 'std']
fac_LMK66disp: ['mean', 'std'] fac_LMK66disp: ['mean', 'std']
fac_LMK67disp: ['mean', 'std'] fac_LMK67disp: ['mean', 'std']
#Acoustic feature #Acoustic feature
aco_int: ['mean', 'std', 'range'] aco_int: ['mean', 'std', 'range']
aco_ff: ['mean', 'std', 'range'] aco_ff: ['mean', 'std', 'range']
@@ -238,7 +242,7 @@ derive_feature:
aco_mfcc10: ['mean'] aco_mfcc10: ['mean']
aco_mfcc11: ['mean'] aco_mfcc11: ['mean']
aco_mfcc12: ['mean'] aco_mfcc12: ['mean']
#Movement feature #Movement feature
head_vel: ['mean', 'std'] head_vel: ['mean', 'std']
mov_Hpose_Dist: ['mean', 'std'] mov_Hpose_Dist: ['mean', 'std']

View File

@@ -1,11 +1,11 @@
raw_feature: raw_feature:
#error reason #error reason
error_reason: error_reason error_reason: error_reason
#Output range #Output range
mov_headvel_start: 0 mov_headvel_start: 0
mov_headvel_end: 200 mov_headvel_end: 200
#Facial markers #Facial markers
hap_exp: fac_hapintsoft hap_exp: fac_hapintsoft
sad_exp: fac_sadintsoft sad_exp: fac_sadintsoft
@@ -26,6 +26,8 @@ raw_feature:
neu_exp: neu_exp neu_exp: neu_exp
cai_exp: cai_exp cai_exp: cai_exp
com_exp: fac_comintsoft com_exp: fac_comintsoft
com_lower_exp: fac_comlowintsoft
com_upper_exp: fac_comuppintsoft
hap_exp_full: fac_hapinthard hap_exp_full: fac_hapinthard
sad_exp_full: fac_sadinthard sad_exp_full: fac_sadinthard
sur_exp_full: fac_surinthard sur_exp_full: fac_surinthard
@@ -38,13 +40,15 @@ raw_feature:
neu_exp_full: neu_exp_full neu_exp_full: neu_exp_full
cai_exp_full: cai_exp_full cai_exp_full: cai_exp_full
com_exp_full: fac_cominthard com_exp_full: fac_cominthard
com_lower_exp_full: fac_comlowinthard
com_upper_exp_full: fac_comuppinthard
#Facial asymmetry #Facial asymmetry
fac_AsymMaskMouth: fac_asymmaskmouth fac_AsymMaskMouth: fac_asymmaskmouth
fac_AsymMaskEye: fac_asymmaskeye fac_AsymMaskEye: fac_asymmaskeye
fac_AsymMaskEyebrow: fac_asymmaskeyebrow fac_AsymMaskEyebrow: fac_asymmaskeyebrow
fac_AsymMaskCom: fac_asymmaskcom fac_AsymMaskCom: fac_asymmaskcom
#Facial landmark #Facial landmark
fac_LMK00disp: fac_LMK00disp fac_LMK00disp: fac_LMK00disp
fac_LMK01disp: fac_LMK01disp fac_LMK01disp: fac_LMK01disp
@@ -114,7 +118,7 @@ raw_feature:
fac_LMK65disp: fac_LMK65disp fac_LMK65disp: fac_LMK65disp
fac_LMK66disp: fac_LMK66disp fac_LMK66disp: fac_LMK66disp
fac_LMK67disp: fac_LMK67disp fac_LMK67disp: fac_LMK67disp
#Facial action unit #Facial action unit
fac_AU01int: fac_AU01int fac_AU01int: fac_AU01int
fac_AU02int: fac_AU02int fac_AU02int: fac_AU02int
@@ -151,7 +155,7 @@ raw_feature:
fac_AU26pres: fac_AU26pres fac_AU26pres: fac_AU26pres
fac_AU28pres: fac_AU28pres fac_AU28pres: fac_AU28pres
fac_AU45pres: fac_AU45pres fac_AU45pres: fac_AU45pres
#Verbal markers #Verbal markers
aco_int: aco_int aco_int: aco_int
aco_ff: aco_ff aco_ff: aco_ff
@@ -184,7 +188,7 @@ raw_feature:
aco_speakingtime: aco_speakingtime aco_speakingtime: aco_speakingtime
aco_numpauses: aco_numpauses aco_numpauses: aco_numpauses
aco_pausefrac: aco_pausefrac aco_pausefrac: aco_pausefrac
#Movement markers #Movement markers
head_vel: mov_headvel head_vel: mov_headvel
mov_blink_ear: mov_blink_ear mov_blink_ear: mov_blink_ear

View File

@@ -1,5 +1,7 @@
cdx_face_config: cdx_face_config:
ACTION_UNITS: [[6, 12],[1, 4, 15],[1, 2, 5, 26],[1, 2, 4, 5, 7, 20, 26],[4, 5, 7, 23],[9, 15],[12, 14]] ACTION_UNITS: [[6, 12],[1, 4, 15],[1, 2, 5, 26],[1, 2, 4, 5, 7, 20, 26],[4, 5, 7, 23],[9, 15],[12, 14]]
LOWER_ACTION_UNITS: [[12], [15], [26], [20, 26], [23], [15], [12, 14]]
UPPER_ACTION_UNITS: [[6], [1, 4], [1, 2, 5], [1, 2, 4, 5, 7], [4, 5, 7], [9]]
NEG_ACTION_UNITS: [[1, 4, 15], [1, 2, 4, 5, 7, 20, 26], [4, 5, 7, 23], [9, 15], [12, 14]] NEG_ACTION_UNITS: [[1, 4, 15], [1, 2, 4, 5, 7, 20, 26], [4, 5, 7, 23], [9, 15], [12, 14]]
POS_ACTION_UNITS: [[6, 12]] POS_ACTION_UNITS: [[6, 12]]
NET_ACTION_UNITS: [[1, 2, 5, 26]] NET_ACTION_UNITS: [[1, 2, 5, 26]]
@@ -14,12 +16,12 @@ cdx_face_config:
SELECTED_FEATURES: AU,POSE SELECTED_FEATURES: AU,POSE
face_expr_dir: /video/face_expressivity face_expr_dir: /video/face_expressivity
face_asym_dir: /video/face_asymmetry face_asym_dir: /video/face_asymmetry
AU_filters: ['frame', ' face_id', ' timestamp', ' confidence', ' success', ' AU01_r',' AU02_r',' AU04_r',' AU05_r', AU_filters: ['frame', ' face_id', ' timestamp', ' confidence', ' success', ' AU01_r',' AU02_r',' AU04_r',' AU05_r',
' AU06_r', ' AU07_r', ' AU09_r', ' AU10_r', ' AU12_r', ' AU14_r', ' AU15_r', ' AU17_r', ' AU20_r', ' AU06_r', ' AU07_r', ' AU09_r', ' AU10_r', ' AU12_r', ' AU14_r', ' AU15_r', ' AU17_r', ' AU20_r',
' AU25_r', ' AU26_r', ' AU45_r', ' AU01_c', ' AU02_c', ' AU04_c', ' AU05_c', ' AU06_c', ' AU07_c', ' AU25_r', ' AU26_r', ' AU45_r', ' AU01_c', ' AU02_c', ' AU04_c', ' AU05_c', ' AU06_c', ' AU07_c',
' AU10_c', ' AU12_c', ' AU14_c', ' AU15_c', ' AU17_c', ' AU20_c', ' AU23_c', ' AU25_c', ' AU26_c', ' AU10_c', ' AU12_c', ' AU14_c', ' AU15_c', ' AU17_c', ' AU20_c', ' AU23_c', ' AU25_c', ' AU26_c',
' AU28_c', ' AU45_c',' AU09_c',' AU23_r' ] ' AU28_c', ' AU45_c',' AU09_c',' AU23_r' ]
au_intensity: [' AU01_r',' AU02_r',' AU04_r',' AU05_r', ' AU06_r', ' AU07_r', ' AU09_r', ' AU10_r', ' AU12_r', au_intensity: [' AU01_r',' AU02_r',' AU04_r',' AU05_r', ' AU06_r', ' AU07_r', ' AU09_r', ' AU10_r', ' AU12_r',
' AU14_r', ' AU15_r', ' AU17_r', ' AU20_r',' AU23_r', ' AU25_r', ' AU26_r', ' AU45_r'] ' AU14_r', ' AU15_r', ' AU17_r', ' AU20_r',' AU23_r', ' AU25_r', ' AU26_r', ' AU45_r']
au_presence: [' AU01_c', ' AU02_c', ' AU04_c', ' AU05_c', ' AU06_c', ' AU07_c', ' AU09_c', ' AU10_c', ' AU12_c', au_presence: [' AU01_c', ' AU02_c', ' AU04_c', ' AU05_c', ' AU06_c', ' AU07_c', ' AU09_c', ' AU10_c', ' AU12_c',
' AU14_c', ' AU15_c', ' AU17_c', ' AU20_c', ' AU23_c', ' AU25_c', ' AU26_c', ' AU45_c'] ' AU14_c', ' AU15_c', ' AU17_c', ' AU20_c', ' AU23_c', ' AU25_c', ' AU26_c', ' AU45_c']