Software to collect, analyze, and export Eye-Tracking Data from TOBII Pro Glasses 3.
Please read the User Manual which is embedded in the application or alternatively download from here.
To learn how EyePort works in detail, read the detailed explanation from here.
- Areas of Interest Detection
- Unique Areas of Interest Detection
- Head Orientation Times
- Radar Violations
- No-Go Zones
- Dead Man Switch
- Multi-Language Support (English, French, Dutch)
- Dark Mode
- Compact and Fullscreen Modes
- Better Visuals and Progress Bars
Download the latest lite version from akashcraft.ca or the full version from the releases section. Should you wish to run the source code yourself, Run the EyePort GUI.py file. Here are the requirements:
- Python 3.10 (Very Important due to compatibility with some packages) Get it here
- customtkinter Get it here
- ImageAI (For Object Detection to work) Get it here
- g3pylib (Glasses API) Get it here
- matplotlib
- AppOpener
- Pillow
- openpyxl
- opencv-python
- image_similarity_measures
- pyfftw
- tkVideoPlayer
Install via the requirements.txt
pip install -r requirements.txt
or simply paste the following in terminal
pip install customtkinter, g3pylib, matplotlib, AppOpener, Pillow, opencv-python, openpyxl, image_similarity_measures, pyfftw, tkVideoPlayer
EyePort comes in two versions. Lite Version does not contain Image Detection while Full Version does. EyePort makes a distinction between the two versions on the interface. You will need to manually install the Object Detection Module (regular local install) or ImageAI package (systemwide development environment) if you want Image Detection to work. It has a lot of dependencies based on CPU/CUDA processing.
EyePort stores its configuration data in the Settings.txt which must be located in the same project folder. If this is not possible, EyePort will attempt to re-create the files during the pre-GUI checks. Resources folder contains all the GUI elements and this folder must not be deleted. EyePort will not load the GUI in that case.
EyePort is designed for the TOBII Pro Glasses 3. You can connect and record from the glasses from EyePort directly. Should you wish to stream and download the recording folder from the glasses, use TOBII Glasses Controller from here. It essentially does the same thing but with the added convenience of not removing the SD Card from the glasses everytime.
The official API for connecting the glasses can be found here. The data collected are in the form of Gaze 2D Coordinates, Gaze 3D Vectors, and IMU measurements which are accessed locally from the glass SD Card. EyePort then creates a Excel file to hold these data. Some cases, this extraction is all you need. But EyePort can do a lot more; these are discussed in the next section.
Using a simple timing and tolerance algorithm based on Gaze 2D Coordinates, EyePort can quickly determine Areas of Interest (AOIs). The detections are then cropped into smaller squares of images (size can be adjusted by user) and then matched against each other to uniquely identify common or similar looking objects (done using image_similarity_measures). Matrix calculation and Single integration calculations were dropped since EyePort V3.0.0.
The detections can be identified using an pre-trained ImageAI model. For this identification, the YOLO (You look only once) algorithm was used. Details about this algorithm can be found here. EyePort can detect General Objects, Ships and Icebergs, or VISTA Diesel Engine.
EyePort also calculates Head Orientation Times, Radar Violations, No-Go Zone Violations, Dead Man Switch Trigger. These come from glass data of AOI analysis. The data can be viewed in graphs and tables. It can also be exported in various formats discussed in the next section. Detailed explanation can be found here.
EyePort V2.0.0 was mainly catered to serving DynaFRAM which is a FRAM Model Visualizer. To learn more about FRAM and FRAM Modelling, click here. EyePort creates partial input files containing eye-tracking data for DynaFRAM. You can download DynaFRAM from here.
EyePort V3.0.0 focuses on expanding the applications of eye-tracking. It can be used as an safety assessment tool and an instructor aid for the maritime industry. EyePort exports in XLSX, CSV, XMFV formats.
Some limitations include:
- Needs Lighting and 500+ samples for Good Image Detection
- Only works with TOBII Pro Glasses 3
The unrestrained motion (where user can freely move around along with rotating head) limitation was overcome in later builds of EyePort. This was possible because IMU sensor data was no longer the primary source of tracking.
You are free to download and edit the source code files however you like. But, EyePort is not to be resold for any commercial purpose(s). Should you wish to publish this in your project or socials, please provide appropriate credits.
You can add this as your references (or description) if you like:
Source Code: https://github.com/akashcraft/EyePort
Website: akashcraft.ca
If you like my work and would like to donate me, I would really appreciate it!
livedata.json Structure Help1
TOBII g3pylib Documentation2