GestureLSM / dataloaders /utils /mis_features.py
Tharun156's picture
Upload 149 files
f7400bf verified
# semantic_utils.py
import pandas as pd
import numpy as np
from loguru import logger
import os
def process_semantic_data(sem_file, args, data, f_name):
"""Process semantic representation data."""
logger.info(f"# ---- Building cache for Semantic {f_name} ---- #")
if not os.path.exists(sem_file):
logger.warning(f"# ---- file not found for Semantic {f_name} ---- #")
return None
sem_all = pd.read_csv(sem_file,
sep='\t',
names=["name", "start_time", "end_time", "duration", "score", "keywords"])
sem_data = []
for i in range(data['pose'].shape[0]):
current_time = i/args.pose_fps
found_score = False
for _, row in sem_all.iterrows():
if row['start_time'] <= current_time <= row['end_time']:
sem_data.append(row['score'])
found_score = True
break
if not found_score:
sem_data.append(0.0)
data['sem'] = np.array(sem_data)
return data
def process_emotion_data(f_name, data, args):
"""Process emotion representation data."""
logger.info(f"# ---- Building cache for Emotion {f_name} ---- #")
rtype, start = int(f_name.split('_')[3]), int(f_name.split('_')[3])
if rtype in [0, 2, 4, 6]:
if 1 <= start <= 64:
score = 0
elif 65 <= start <= 72:
score = 1
elif 73 <= start <= 80:
score = 2
elif 81 <= start <= 86:
score = 3
elif 87 <= start <= 94:
score = 4
elif 95 <= start <= 102:
score = 5
elif 103 <= start <= 110:
score = 6
elif 111 <= start <= 118:
score = 7
else:
score = 0
else:
score = 0
data['emo'] = np.repeat(np.array(score).reshape(1, 1), data['pose'].shape[0], axis=0)
return data