자비스

카메라 기반 AI 눈 추적 시스템 환경구축

lsjking911 2026. 6. 7. 09:24

이 프로젝트는 단순히 AI를 실행해보는 것에서 시작하지 않았다.
처음 떠올린 아이디어는 하나였다.

“아이언맨의 JARVIS처럼, 사용자를 인식하고 반응하는 시스템을 만들어보자.”

그래서 목표는 자연스럽게 정해졌다.
카메라를 통해 사용자를 인식하고, 그 결과를 실시간으로 시각화하는 시스템을 만드는 것이다.


📌 개발의 시작 – 객체 인식부터

처음 접근은 가장 단순했다.
카메라로 입력을 받아서 AI가 무엇을 인식하는지 확인하는 것이었다.

그래서 가장 먼저 선택한 기술은 YOLO였다.
YOLO는 실시간 객체 인식에 강점이 있기 때문이다.

초기 단계에서는 다음 흐름이 전부였다.

카메라 → 객체 인식 → 콘솔 출력

이 단계에서는 단순히 “사람이 보인다”, “노트북이 보인다” 정도의 정보만 확인할 수 있었다.

하지만 여기서 바로 한 가지 문제가 생겼다.

“이걸 화면에 보여주지 않으면 의미가 없다.”


 

🌐 웹과 연결 – 단순 AI에서 시스템으로

그래서 다음 단계는 AI 결과를 웹으로 전달하는 것이었다.
이때 Flask를 선택했다.

Flask를 이용해서 Python에서 생성된 결과를 JSON 형태로 보내고,
웹에서 JavaScript로 받아서 표시하는 구조를 만들었다.

이 단계에서 구조는 이렇게 바뀐다.

Python → Flask → JSON → JavaScript → HTML

하지만 연결하자마자 바로 문제가 발생했다.

브라우저에서 API 요청이 막혀버린 것이다.


⚠️ 첫 번째 문제 – CORS 에러

웹에서 Python 서버로 요청을 보내자,
브라우저가 이를 차단했다.

이건 보안 정책 때문이었다.

이 문제를 해결하기 위해 CORS를 도입했다.
Flask에 CORS 설정을 추가하자마자 문제가 해결되었다.

이 경험을 통해 하나 깨달은 점이 있었다.

“웹과 연결되는 순간부터는 AI 문제가 아니라 웹 시스템 문제가 된다.”


🎥 영상 스트리밍 – 진짜 실시간 시스템 만들기

이후 목표는 명확했다.

텍스트가 아니라 “영상 자체”를 웹에 띄우는 것.

Flask에서 영상 스트리밍 API를 만들고,
웹에서는 이를 받아서 표시하도록 구조를 수정했다.

하지만 여기서 또 문제가 발생했다.

영상이 전혀 나오지 않았다.


⚠️ 두 번째 문제 – 화면이 안 나옴

원인은 의외로 간단했다.

영상 URL을 그냥 넣어두고 HTML에서 출력하지 않았던 것이다.

브라우저는 URL을 보여줄 뿐,
영상으로 처리하지 않는다.

이를 이미지 태그로 연결하니 바로 해결되었다.

이 단계에서 중요한 깨달음은 다음과 같다.

“AI 문제가 아니라, 브라우저 동작 원리를 이해해야 한다.”


🧠 다음 단계 – 눈을 따라가는 시스템

객체 인식까지는 성공했지만,
여기에서 한 단계 더 나아가고 싶었다.

“사용자의 시선을 따라가는 시스템을 만들 수 있을까?”

이 질문이 다음 개발 방향을 결정했다.

YOLO는 눈 추적이 불가능하므로
새로운 기술이 필요했다.

그래서 선택한 것이 MediaPipe였다.


 

⚠️ 세 번째 문제 – MediaPipe 오류

MediaPipe를 설치하고 사용할 때
아래와 같은 오류가 발생했다.

모듈 내부에 있는 기능을 찾을 수 없다는 문제였다.

이건 단순한 코드 문제가 아니라
라이브러리 버전 문제였다.


🔥 해결 – 버전 다운그레이드

처음에는 최신 버전을 사용하고 싶었지만,
결론적으로 버전을 낮추는 선택을 했다.

이유는 명확하다.

최신 버전은 안정적인 환경이 아니었다.
Windows 환경에서 특히 문제가 많았다.

반면 특정 이전 버전은
광범위하게 테스트된 안정적인 상태였다.

이 경험을 통해 얻은 가장 중요한 교훈은 이것이다.

“최신 버전이 항상 좋은 것은 아니다.
실제로는 안정된 버전이 더 중요하다.”


👁️ 눈 추적 구현

MediaPipe를 이용하면 얼굴의 수많은 landmark를 얻을 수 있다.
그 중 눈 위치를 계산해서 좌표를 만들고,
이 값을 웹에 전달하도록 만들었다.

그리고 웹에서는 이 좌표를 기반으로
화면 내 요소를 이동시키도록 구현했다.

이 순간 시스템은 완전히 바뀌었다.

카메라 → AI → 웹 → 사용자 반응

단순한 분석이 아니라
“사용자와 상호작용하는 시스템”이 된 것이다.


 

✅ 현재 상태

지금까지 구현된 기능은 다음과 같다.

카메라 영상이 실시간으로 웹에 표시된다
AI가 얼굴을 인식하고 눈 위치를 추적한다
눈 위치에 따라 화면 요소가 움직인다

즉, 다음이 완성된 상태다.

“실시간 영상 기반 눈 추적 시스템 + 웹 UI”


⚠️ 아직 남은 한계

하지만 완벽한 상태는 아니다.

현재 시스템은 “눈 위치”만 추적한다.

즉, 문제는 다음과 같다.

눈이 움직여도 변화가 작아서 체감이 약하다
눈의 방향(어디를 보는지)은 알 수 없다
사용자가 무엇을 보고 있는지는 판단하지 못한다


 

🚀 앞으로 할 방향

이제 다음 단계는 명확하다.

눈 위치가 아니라 “시선 방향”을 계산해야 한다
시선 방향을 기반으로 객체를 선택해야 한다
선택된 대상에 대해 “타겟 락” 시스템을 만들어야 한다

이 단계가 완료되면
단순한 AI가 아니라 실제 인터랙티브 시스템이 된다.


💡 프로젝트의 본질 

처음에는 단순히 객체 인식을 해보고 싶어서 시작했다.
하지만 개발을 진행하면서 이 프로젝트는 점점 방향이 바뀌기 시작했다.

단순히 “무엇이 있는지 인식하는 것”에서 벗어나
“사용자의 행동에 반응하는 시스템”을 만드는 방향으로 확장되었다.

객체 인식
→ 웹 연결
→ 영상 스트리밍
→ 얼굴 인식
→ 눈 추적

이 흐름은 단순한 기능 추가가 아니라,
시스템의 본질 자체가 바뀌는 과정이었다.

결국 이 프로젝트는 단순한 AI 실험이 아니라
다음과 같은 구조를 가진 시스템으로 발전했다.

“AI 모델을 실행하는 프로그램”이 아니라
“AI + 웹 + 영상 처리를 통합한 인터랙티브 시스템”


 

✨ 마무리 

이 프로젝트를 진행하며 가장 크게 느낀 점은 하나다.

문제는 항상 AI에서 발생하지 않는다.

오히려 대부분의 문제는 그 주변에서 발생한다.

카메라 장치 문제
브라우저 동작 방식
네트워크 정책 (CORS)
라이브러리 버전 충돌
프레임 처리 방식

이 모든 요소가 맞물려야
비로소 하나의 시스템이 정상적으로 동작한다.

결국 중요한 것은
“AI를 잘 쓰는 것”이 아니라

“AI를 포함한 전체 시스템을 이해하는 것”이다.


🚀 다음 단계 – 진짜 JARVIS로 가는 길

현재 단계에서는 눈의 “위치”만 추적할 수 있다.
하지만 우리가 원하는 것은 여기서 끝이 아니다.

진짜 JARVIS 시스템에 가까워지기 위해서는
이 다음 단계로 넘어가야 한다.

다음 목표는 명확하다.

  • 눈의 위치가 아니라 **시선 방향(View Direction)**을 계산하기
  • 사용자가 바라보는 방향에 있는 객체를 탐지하기
  • 해당 객체를 자동으로 선택하고 표시하기

즉,

“눈 → 방향 → 대상 선택 → 반응”

이라는 흐름을 만들어야 한다.

다음 글에서는 이 과정을 구현하면서
실제로 “사용자가 보는 대상”을 시스템이 인식하는 단계까지 확장해볼 예정이다.

 

'자비스' 카테고리의 다른 글

인터렉션 확장  (0) 2026.06.07
지금 내가 어떤 기능들을 써서, 만들고 있는지 정리  (1) 2026.04.25