derived logic update

This commit is contained in:
Vijay Yadev
2020-08-05 16:00:21 -04:00
parent c389fc2c47
commit 7bdf6b891a
19 changed files with 319 additions and 245 deletions

View File

@@ -24,6 +24,8 @@ def audio_to_wav(input_filepath):
input_filepath: (str) input_filepath: (str)
Returns: Returns:
""" """
try:
fname, _ = splitext(input_filepath) fname, _ = splitext(input_filepath)
output_filepath = fname + '.wav' output_filepath = fname + '.wav'
@@ -36,6 +38,9 @@ def audio_to_wav(input_filepath):
else: else:
logger.info('Output file {} already exists'.format(output_filepath)) logger.info('Output file {} already exists'.format(output_filepath))
except Exception as e:
logger.error('Failed to extract audio from Video')
def process_acoustic(video_uri, out_dir, dbm_group, r_config): def process_acoustic(video_uri, out_dir, dbm_group, r_config):
""" """
processing acoustic features processing acoustic features

View File

@@ -9,6 +9,7 @@ import numpy as np
import glob import glob
import os import os
import logging import logging
from datetime import datetime
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
logger=logging.getLogger() logger=logging.getLogger()
@@ -34,7 +35,10 @@ def save_derive_output(df_list, feature, out_loc):
df = pd.concat(df_list, ignore_index=True) df = pd.concat(df_list, ignore_index=True)
feature_dir = 'derive_' + feature feature_dir = 'derive_' + feature
out_dir = os.path.join(out_loc, feature) now = datetime.now()
dt_string = now.strftime("%d_%m_%YT%H:%M:%S")
out_dir = '{}_{}'.format(out_loc, dt_string)
file_name = os.path.join(out_dir, feature_dir + '.csv') file_name = os.path.join(out_dir, feature_dir + '.csv')
if not os.path.exists(out_dir): if not os.path.exists(out_dir):
@@ -147,5 +151,3 @@ def run_derive(input_file, input_dir, output_dir, r_config, d_config):
except Exception as e: except Exception as e:
logger.error('Failed to process derived variables.') logger.error('Failed to process derived variables.')

View File

@@ -109,6 +109,8 @@ def run_formant(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -123,3 +125,5 @@ def run_formant(video_uri, out_dir, r_config):
return return
calc_formant(video_uri, audio_file, out_loc, fl_name, r_config) calc_formant(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -140,6 +140,8 @@ def run_gne(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -155,3 +157,5 @@ def run_gne(video_uri, out_dir, r_config):
return return
calc_gne(video_uri, audio_file, out_loc, fl_name, r_config) calc_gne(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -76,6 +76,8 @@ def run_hnr(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -90,3 +92,5 @@ def run_hnr(video_uri, out_dir, r_config):
return return
calc_hnr(video_uri, audio_file, out_loc, fl_name, r_config) calc_hnr(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -72,6 +72,8 @@ def run_intensity(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -86,3 +88,5 @@ def run_intensity(video_uri, out_dir, r_config):
return return
calc_intensity(video_uri, audio_file, out_loc, fl_name, r_config) calc_intensity(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -138,6 +138,8 @@ def run_jitter(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -153,3 +155,5 @@ def run_jitter(video_uri, out_dir, r_config):
return return
calc_jitter(video_uri, audio_file, out_loc, fl_name, r_config) calc_jitter(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -85,6 +85,8 @@ def run_mfcc(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -99,4 +101,5 @@ def run_mfcc(video_uri, out_dir, r_config):
return return
calc_mfcc(video_uri, audio_file, out_loc, fl_name, r_config) calc_mfcc(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -131,6 +131,8 @@ def run_pause_segment(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -165,3 +167,6 @@ def run_pause_segment(video_uri, out_dir, r_config):
else: else:
error_txt = 'error: webrtcvad returns no segment' error_txt = 'error: webrtcvad returns no segment'
empty_pause_segment(video_uri, out_loc, fl_name, r_config, error_txt) empty_pause_segment(video_uri, out_loc, fl_name, r_config, error_txt)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -93,6 +93,8 @@ def run_pitch(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -107,3 +109,5 @@ def run_pitch(video_uri, out_dir, r_config):
return return
calc_pitch(video_uri, audio_file, out_loc, fl_name, r_config) calc_pitch(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -139,6 +139,8 @@ def run_shimmer(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -154,4 +156,5 @@ def run_shimmer(video_uri, out_dir, r_config):
return return
calc_shimmer(video_uri, audio_file, out_loc, fl_name, r_config) calc_shimmer(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -91,6 +91,8 @@ def run_vfs(video_uri, out_dir, r_config):
video_uri: video path; r_config: raw variable config object video_uri: video path; r_config: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
aud_filter = glob.glob(join(input_loc, fl_name + '.wav')) aud_filter = glob.glob(join(input_loc, fl_name + '.wav'))
if len(aud_filter)>0: if len(aud_filter)>0:
@@ -105,3 +107,5 @@ def run_vfs(video_uri, out_dir, r_config):
return return
calc_vfs(video_uri, audio_file, out_loc, fl_name, r_config) calc_vfs(video_uri, audio_file, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process audio file')

View File

@@ -145,6 +145,8 @@ def run_eye_blink(video_uri, out_dir, r_config, facial_landmarks):
out_dir: (str) Output directory for processed output; r_config: raw variable config object; out_dir: (str) Output directory for processed output; r_config: raw variable config object;
facial_landmarks: landmark model path facial_landmarks: landmark model path
""" """
try:
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
vid_file_path = os.path.exists(video_uri) vid_file_path = os.path.exists(video_uri)
if vid_file_path==True: if vid_file_path==True:
@@ -153,4 +155,6 @@ def run_eye_blink(video_uri, out_dir, r_config, facial_landmarks):
df_blink = blink_detection(video_uri, facial_landmarks, r_config) df_blink = blink_detection(video_uri, facial_landmarks, r_config)
ut.save_output(df_blink, out_loc, fl_name, movement_expr_dir, csv_ext) ut.save_output(df_blink, out_loc, fl_name, movement_expr_dir, csv_ext)
except Exception as e:
logger.error('Failed to process video file')

View File

@@ -178,6 +178,7 @@ def run_head_movement(video_uri, out_dir, r_config):
video_uri: video path; input_dir : input directory for video's video_uri: video path; input_dir : input directory for video's
out_dir: (str) Output directory for processed output; r_config: raw variable config object out_dir: (str) Output directory for processed output; r_config: raw variable config object
""" """
try:
#filtering path to generate input & output path #filtering path to generate input & output path
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
@@ -190,4 +191,5 @@ def run_head_movement(video_uri, out_dir, r_config):
logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name))) logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name)))
calc_head_mov(video_uri, df_of, out_loc, fl_name, r_config) calc_head_mov(video_uri, df_of, out_loc, fl_name, r_config)
except Exception as e:
logger.error('Failed to process video file')

View File

@@ -333,6 +333,8 @@ def run_face_asymmetry(video_uri, out_dir, f_cfg):
video_uri: video path; f_cfg: face config object video_uri: video path; f_cfg: face config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
#Baseline logic #Baseline logic
cfr = ConfigFaceReader() cfr = ConfigFaceReader()
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
@@ -349,3 +351,5 @@ def run_face_asymmetry(video_uri, out_dir, f_cfg):
logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name))) logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name)))
ut.save_output(asym_final_df, out_loc, fl_name, face_asym_dir, csv_ext) ut.save_output(asym_final_df, out_loc, fl_name, face_asym_dir, csv_ext)
except Exception as e:
logger.error('Failed to process video file')

View File

@@ -68,6 +68,8 @@ def run_face_au(video_uri, out_dir, f_cfg):
video_uri: video path; f_cfg: face config object video_uri: video path; f_cfg: face config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
#Baseline logic #Baseline logic
cfr = ConfigFaceReader() cfr = ConfigFaceReader()
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
@@ -91,4 +93,6 @@ def run_face_au(video_uri, out_dir, f_cfg):
logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name))) logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name)))
ut.save_output(df_au, out_loc, fl_name, face_au_dir, csv_ext) ut.save_output(df_au, out_loc, fl_name, face_au_dir, csv_ext)
except Exception as e:
logger.error('Failed to process video file')

View File

@@ -60,6 +60,8 @@ def run_face_expressivity(video_uri, out_dir, f_cfg):
video_uri: video path; f_cfg: raw variable config object video_uri: video path; f_cfg: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
#Baseline logic #Baseline logic
cfr = ConfigFaceReader() cfr = ConfigFaceReader()
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
@@ -76,3 +78,6 @@ def run_face_expressivity(video_uri, out_dir, f_cfg):
logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name))) logger.info('Processing Output file {} '.format(os.path.join(out_loc, fl_name)))
ut.save_output(exp_final_df, out_loc, fl_name, face_expr_dir, csv_ext) ut.save_output(exp_final_df, out_loc, fl_name, face_expr_dir, csv_ext)
except Exception as e:
logger.error('Failed to process video file')

View File

@@ -92,6 +92,8 @@ def run_face_landmark(video_uri, out_dir, f_cfg):
video_uri: video path; f_cfg: raw variable config object video_uri: video path; f_cfg: raw variable config object
out_dir: (str) Output directory for processed output out_dir: (str) Output directory for processed output
""" """
try:
#Baseline logic #Baseline logic
cfr = ConfigFaceReader() cfr = ConfigFaceReader()
input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir) input_loc, out_loc, fl_name = ut.filter_path(video_uri, out_dir)
@@ -116,3 +118,5 @@ def run_face_landmark(video_uri, out_dir, f_cfg):
logger.info('Processing Output file {} '.format(join(out_loc, fl_name))) logger.info('Processing Output file {} '.format(join(out_loc, fl_name)))
ut.save_output(df_lmk, out_loc, fl_name, face_lmk_dir, csv_ext) ut.save_output(df_lmk, out_loc, fl_name, face_lmk_dir, csv_ext)
except Exception as e:
logger.error('Failed to process video file')

View File

@@ -60,8 +60,13 @@ def process_open_face(video_uri, input_dir, out_dir, of_path, dbm_group):
out_dir: (str) Output directory for processed output; of_path: OpenFace source code path out_dir: (str) Output directory for processed output; of_path: OpenFace source code path
""" """
try:
if dbm_group != None and len(dbm_group) == 1 and 'acoustic' in dbm_group: if dbm_group != None and len(dbm_group) == 1 and 'acoustic' in dbm_group:
return return
filepaths = [video_uri] filepaths = [video_uri]
csv_filepaths = batch_open_face(filepaths, video_uri, input_dir, out_dir, of_path) csv_filepaths = batch_open_face(filepaths, video_uri, input_dir, out_dir, of_path)
except Exception as e:
logger.error('Failed to process video file')