Eye Tracking Metrics - Machine Learning - GeeksforGeeks

09 Mar, 2021
Eye-tracking is an important and essential field researchers sought after. Eye-tracking is also an emerging field and has its benefits and is used in multiple ways.
Fixation and Saccade are two basic components of eye movements used in Eye tracking. 
A saccade is the quick or immediate eye movement between fixations to move the eye-gaze from one point of location to another.
A fixation is a point between two saccades, during which the eyes don’t move for a split amount of time, is stationary.
Vision input occurs during fixations since eyes remain in the same space for a while without moving.
Fixations are the most common feature of gazing a subject that eye-tracking researchers often analyze to conclude about cognitive processes or states that they are interested in making a deep and rigorous study about. Fixations are when our eyes essentially stop or pause to examine the scene that it is looking at. The central foveola vision of the eye is paused in a place so that the visual system can consume in detailed information about what it is the scenario in front. Fixations essentially as an attribute is built from gaze points.
Gaze points technically tell about what our eyes are looking at any given time. I.e. 
 Consider an eye tracker will collect data of sampling rate of about 80 Hz, we will end up with 80 individual gaze points per second and a gaze point will be reported every 12.5 milliseconds.
i.e. 1 sec = 1000ms
Since we have 80 gaze points
 1000 ms / 80 = 12.5 ms.
When a sequence or series of gaze points are very close to each other both in time or space, they form a bundle of gaze points called a gaze cluster, And this gaze cluster constitutes a Fixation.
Fixation is made of really tiny and slow eye gestures (also known as microsaccades) which helps the eye line up with the target and avoid perceptual fading (fixation eye movements)
Fixations are hence excellent and most valued measures of visual attention.
Saccades are eye movements where our eye (fovea) moves from one point of interest to another rapidly. Since our eye movement is so fast during a saccade, the image read by the retina is of poor quality and information received is vague. Saccade is also a way that our retina maintains the resolution of its inputs. Our eyes cannot understand a clear description of what it had seen. Hence, we can say that the input of information through the eyes mostly happens during fixations.
A saccade can be both non-mandatory and mandatory, also both the eyes move in the same direction. Saccades do not always happen linearly.
Saccade calculation is a boon in the field of medicine since it helps in diagnosing many movement related disorders
As eye-tracking technology has advanced, Much Hypo kinetic and Hyper kinetic disorders can be found out by saccadic abnormalities after detecting saccade velocity.
By the detection of Horizontal and Vertical saccades, disorders like Parkinson, Progressive supra nuclear palsy can also be detected.
Also in coming days, it can be used in the field Market research by finding out where a potential user will mostly stare at the screen while buying stuff online or Reading articles online.
In order for us to know where our eyes are looking at exactly, 
First with the help of an eye tracking device, or a Web camera we detect eyes and locate the fixation points as (x, y) coordinates at a given time.
After this, there are many ways which we can use to detect the saccade velocity such as Sav-Golay filter, the simple sample-to-sample difference, 1D bilateral filter which maintains the saccade peaks.
The short way is the two-point central difference like GRADIENT in Matlab.
Also, we can use least-squares optimal method to find saccadic reaction time and saccade duration from tracked gaze points in python by saccademodel algorithm on a series of (x, y) points.
1) Install the saccademodel by pip command
pip install saccademodel
2) Import saccade model and feeding the eye points.
Python3
# loading librariesimport saccademodel  input_eye_points = [[130.012, 404.231],                    [129.234, 403.478],                    [None, None],                    [133.983, 450.044]]  # training the modelresults = saccademodel.fit(input_eye_points)print(results)
{'source_points': [[130.012, 404.231], [129.234, 403.478]],
 'saccade_points': [[129.234, 403.478], [133.983, 450.044]], 
'target_points': [], 
'mean_squared_error': 71.36571893749988}
3) Now if we know  frame rate, we can calculate saccadic reaction time and saccade duration by converting the lengths to seconds by:
Python3
# Number of samples per second  framerate = 80.0  saccadic_reaction_time = len(results.source_points) / frameratesaccade_duration = len(results.saccade_points) / framerate
To sum it all up, Consider we are watching a car start and reach a target on the same road, The start and target become fixations and the eye movement that follows the Car in between becomes the saccade.
Artificial Intelligence
Technical Scripter 2020
Machine Learning
Python
Technical Scripter
Machine Learning
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Support Vector Machine Algorithm
k-nearest neighbor algorithm in Python
Singular Value Decomposition (SVD)
Difference between Informed and Uninformed Search in AI
Normalization vs Standardization
Read JSON file using Python
Adding new column to existing DataFrame in Pandas
Python map() function
How to get column names in Pandas dataframe