VR user affect estimation (current project)
Ongoing work. Currently I have taken the raw logs from the affect dataset collection project and post-processed them into useable features/labels. I have also implemented several machine learning models and trained them on the post-processed data. Going forward I will be focused on feature engineering and improving model architectures.
Private repository pending project completion
Python | TensorFlow | NumPy | Pandas | Machine Learning | Signal Processing
Details
Post-processing
- Post-processing was done using a mixture of Pandas, NumPy, and custom functions
- Signal logs were segmented to match stimuli presentations using timestamps
- Segmented gaze signals were post-processed by:
- Performing blink detection using pupil size
- Out of range values were removed based on human physiology
- Pupil size outliers were removed based on their mean absolute deviation from that stimuli’s pupil size transition speeds
- Samples near temporal gap’s were removed as these gaps were caused by blinks, missing data, or transition speed outliers and could represent bad readings
- A low-pass filter was applied to the pupil data
- Fixations and saccades were determined using the normalized vectors representing eye direction
- Movement information was extracted from raw device pose information
- All signals were resampled to have identical sample frequencies and timestamps
- Signals were normalized using min-max scaling
Models
- Models are implemented using Tensorflow
- Custom data loading classes were implemented using NumPy and Pandas to properly load, segment, and prepare data for models
- Different types of models were implemented, including: support-vector machines, k-nearest neighbors, logistic regression, long short-term memory networks and 1-dimensional convolutional neural networks
- Sigmoid, RELU, and SoftMax activations were tested
- Different learning rates, epoch sizes, and model layers were tested
- Models are currently trained with leave one out validation (based on the domain)
- Confusion matrices, F1 scores, and accuracy are output during training