Python을 활용한 웹캠 기반�eye-tracking 프로그램 개발
황준오
서울대학교 물리교육과
데이터사이언스연구실 박사과정
2023. 11.
진행 방향
eye tracking에 대한
간단한 이해
Python 개발과정에 대한 소개와 기본 개념 실습
MediaPipe를 사용한
eye tracking tutorial
및 향후 적용방안 논의
프로젝트 페이지
Facial mouse
Facial mouse
57개의 2차원 백터로 이루어진
Face Landmark 의 시계열 데이터
Input X
Regression
Output Y
마우스 포인터의
위치 벡터
Input X
미간의 이미지
데이터
Classification
Output Y
마우스 클릭 여부
Facial mouse – 데이터 수집 과정
Facial mouse – 데이터 수집 과정
Facial mouse – 개발 결과
Facial mouse – 개발 결과
웹캠 기반 tracking이 범용적으로 쓰일 수 있는가?
Eye tracking 전용 장비들
일단 웹캠 버전을 체험해보자
JavaScript 기반으로, 웹페이지에서 사용 가능하게 개발됨
내부적 절차
1. Face landmark와 마우스 클릭 지점 사이의 관계를 수집함
2. 자체적으로 구축한 여러 사람의 데이터와, 사용자의 데이터를 병합함
3. 선형 회귀 모형을 사용해서 시선을 예측함
우리가 개선할 수 있는 부분 - 알고리즘
기존에는 57개의 landmark point 모델을 사용
MediaPipe라는 최신의 모델은 478 points를 제공함
더 높은 정밀도를 가짐
선형회귀보다 더 고도화되고 데이터가 적을 때 유리한
Gaussian process 회귀분석을 사용함
우리가 개선할 수 있는 부분 - 파이프라인
모니터 화면
웹캠 영상
마우스 클릭
Landmark detection
Regression model fitting
Estimation
MediaPipe
Google에서 공개한 일련의 영상처리/컴퓨터비전 인공지능 모델 집합
강의자료 다운로드 및 설치 방법
pip install –r requirements.txt
python –m pip install –r requirements.txt
pip3 install –r requirements.txt
Python 언어의 특징
Python은 인터프리터 언어로, 코드를 실행파일로 만드는 과정인 컴파일이 필요 없이 바로 실행된다.
단 인터프리터가 설치된 환경에서만 사용 가능하다.
(원한다면 컴파일을 할 수 있는 방법이 있음)
객체지향의 개념
객체지향의 개념
객체지향의 개념
프로그래밍 언어의 표준적인 문법
클래스(타입)에 따라 취할 수 있는 행동 (method) 가 달라진다.
프로그래밍 언어에서 점(.)은 부모/자식 관계나 종속 관계를 나타낸다.
Human Class인 객체 Juno가 있다고 생각하면
은 가능하지만
는 불가능하다.
메소드는 인수(parameter, argument)를 여러 개 입력받기도 한다.
위치 관계만으로도 의미를 전달할 수 있고, 파라미터 이름을 통해 직접 전달할 수도 있다.
동일한 메소드이더라도 인수를 집어넣는 것에 따라 기능이 달라지기도 한다.
ask sb about sth vs ask sb for sth
밥을 먹다 vs 욕을 먹다