# Processing Pipeline
## Conda Environment Setup
```
conda env create -f conan_windows.yml
conda activate conan_windows_env
```
## Usage
Run [ConAn_RunProcessing.ipynb](ConAn_RunProcessing.ipynb) to extract all frames from video and run processing models.
### Body Movement
For body movement detection we selected [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose). For our case, we used the 18-keypoint model,
which takes the full frame as input and jointly predicts anatomical keypoints and a measurement
for the degree of association between them.
If you're using this processing step in your research please cite:
```
@article{8765346,
author = {Z. {Cao} and G. {Hidalgo Martinez} and T. {Simon} and S. {Wei} and Y. A. {Sheikh}},
journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence},
title = {OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields},
year = {2019}
}
```
### Eye Gaze
For eye gaze estimation we selected [RT-GENE](https://github.com/Tobias-Fischer/rt_gene). In addition to feeding each video frame to the model,
we also input a version of the frame where the left side and the right side are wrapped together.
This enables us to detect when a person moves over the edge of the video, as none of the models account for this.
As this is a single frame estimation, we then track all subjects throughout the video using a minimal euclidean distance heuristic.
If you're using this processing step in your research please cite:
```
@inproceedings{FischerECCV2018,
author = {Tobias Fischer and Hyung Jin Chang and Yiannis Demiris},
title = {{RT-GENE: Real-Time Eye Gaze Estimation in Natural Environments}},
booktitle = {European Conference on Computer Vision},
year = {2018},
month = {September},
pages = {339--357}
}
```
Notes:
- Before using [process_RTGene.py](process_RTGene.py) you need to run [install_RTGene.py](install_RTGene.py)!
- [OPTIONAL] You can provide a camera calibration file calib.pkl to improve detections.
- You need to provide maximum number of people in the video for the sorting algorithm.
### Facial Expression
Under construction
### Speaking Activity
Under construction
### Object Tracking
We assume that you are most likely able to define your own study procedure,
therefore we decided to simplify object tracking by employing the visual fiducial system [AprilTag 2](https://github.com/AprilRobotics/apriltag),
where the tag positions are extracted with their tailored detector.
Note: For Windows we use [pupil_apriltags](https://github.com/pupil-labs/apriltags).