pa-egloff v0.2.9
PA.EmotionsTracker
The EmotionalAwareness-Tool consists of two parts: a tracker, where webcam images are processed and the estimates regarding valence, fatigue and engagement are calculated, and a client that visualizes the estimates.
This is the tracker project, the client can be found here
This project is published on npm
Documentation
Used tensorflow models
- faceAPI for facial expression and head orientation detection
- Face landmarks detection for explicit facial landmarks detection
- PoseNet for pose detection
Endpoints
Communication with the tracker is done over IPC. The following endpoints exist:
Incoming
start-trackerto start the trackerpause-trackerto pause the trackerset-low-performance-modewithpayload: booleanto activate/deactivate low performance mode
Outgoing
face-api-expressionwithpayload: FaceApiExpressionface-api-head-orientationwithpayload: FaceApiHeadOrientationface-api-aggregated-expressionwithpayload: FaceApiAggregatedExpressionface-api-smiled-oncewithpayload: FaceApiHasSmiledface-api-raw-expressionswithpayload: string
facial-landmarks-datawithpayload: FacialLandmarksDatafacial-landmarks-blink-countwithpayload: FacialLandmarksBlinkCount
posewithpayload: PoseData
z-deviationwithpayload: ZDeviationhead-orientation-deviationwithpayload: HeadOrientationDeviationmetric-logwithpayload: MetricLogestimated-dimensionswithpayload: EstimatedDimensionsupdate-tracker-statuswithpayload: Statusto get the current state of the tracker
Main Components
The following diagram shows the main dataflow of the program. For the sake of clarity, the Renderer is not depicted. The Renderer handles incoming requests from the client, like starting/pausing or switching to low performance mode.
Open issues concerning coupling between tracker & client
Tracker: pa-shared interface is no longer used
Client: in package.json, we need to know exact folder structure of tracker
"html": "./node_modules/emotions-tracker/src/renderer/index.html", "js": "./node_modules/emotions-tracker/src/renderer/renderer.ts", "name": "tracker_window"Client: in webpack.plugins.js, we have to copy the whole assets folder from the tracker to the client, because the tracker_window needs access to models / images
{ from: path.resolve(__dirname, "node_modules/emotions-tracker/src/renderer/assets"), to: path.resolve(__dirname, ".webpack/renderer/assets"), }