test_name: FindPupilCentroid
Authored by Seth Loh (c) 2020
Telemedc Pte Ltd
The human eye is one of the most common regions of interest on the human body, and is subject to a large body of literature and application use cases in eye-tracking and gaze estimation - How does it work?.
Your goal here is develop a pupil detection algorithm to detect the centroid of the pupil - usually the first step to any gaze-estimation algorithm. An embedded real-time solution would call for an image processing strategy that is lightweight and reliable. To illustrate, a camera running at 24 fps would require an execution of <41ms.
- Measure within 10 fps between frame computations.
- Detect the centroid without jitter (defined as rapid changes in the centroid point between frames)
- Reject false centroids
- Maintain a detection rate of 80%
- Step-by-step intructions on how to install/run/deploy the program (README/markdown/.txt/). Choice of
python3-venv
ordocker
. - A written explanation of your image processing strategy.
- Controls to pause/play the frame to facilitate review.
- Clear annotation of centroid and pupil on frames.
- A frame counting overlay.
- Type-checked, clean and refactored code. Any improper formatting will be heavily penalised.
- A double-frame view to help visualise the image processing layers.
- Useful image annotations.
- Argparse for other video filenames
- Docstring explanations of code-blocks/functions.
- Controls to yield next frame.
- Dockerising the solution.
A sample frame capture could look something like:
Note: This is for illustrative purposes and is not the model output.
- python standard libraries
python-opencv
numpy
imutils
Contact your interviewer or file an issue if you wish to use any other libraries that are out of scope.
- clone this library (Note:: do not fork!)
- Download the dataset by running:
chmod +x get_videos.sh
and
get_videos.sh
(MacOSX, Linux only
or download from
https://tinyurl.com/tmc-cv2-challenge - Create the
test_videos
directory if not created already, make sure that a sample videosample.mkv
is located in here. - Provison your python virtual environment.
- Create your entrypoint function at root and call it
pupil_detect.py
. - Develop, document and package your solution and contact your recruiter when ready.
- You will be expectated to present your solution to a panel of interviewers.
- Completion of key objectives [60%]
- Code quality [20%]
- Packaging [20%]