Wed Oct 1 9:28 PM(ing : 0s)
태백시 스마트 경로당
프로젝트 개요경로당을 이용하는 어르신들의 출입 정보를 기반으로, 체온·심박수 등 생체 데이터를 수집 및 분석하여 건강 상태를 모니터링하는 고령자 건강 관리 솔루션(SDK 제공)
프로젝트 과정1인 단독 프로젝트로 진행하였으며, 프론트엔드 개발 업체가 기능을 원활하게 적용할 수 있도록 SDK를 제공하고, 로직의 정확성과 사용 편의성을 고려한 UX까지 함께 설계 및 지원함
기술 스택Electron을 기반으로 구축한 데스크탑 앱에서 Mediapipe를 이용해 얼굴 인식 및 인증 기능을 제공하는 Extraction 시스템
담당 업무

- 프로젝트 초기 설계 단계부터 전체 개발 프로세스 주도

- MediaPipe를 활용한 얼굴 등록 및 인식 기능 개발

- rPPG 데이터 수집 기능(비접촉식 심박수 측정) 구현

- 전체 시스템 기능 통합 및 최적화 작업 수행

트러블 슈팅
portfolio_taebaeck_troubleshooting_trouble_title1문제

얼굴 인식 기능 사용 시, 사용자가 정지된 사진을 화면에 대더라도 얼굴 인식이 성공하는 문제가 발생함.

기존 얼굴 인식 로직이 얼굴의 좌표(landmark)만 감지하여, 사진과 실제 사람을 구분하지 못하는 문제가 있었음.

이로 인해 사진을 이용한 인증 우회 가능성이 존재함.

문제 해결 및 성과

얼굴 인식 시 입술 움직임을 추가로 체크하는 로직 도입

→ 사용자가 특정 문장을 읽게 하고, 발음 중 입술 좌표 변화를 실시간 추적

초기 캡처 시 입술 landmark 좌표를 저장

→ 기준 위치를 확보하여 이후 움직임과 비교

발음하는 동안 입술 좌표 이동 거리(변화량)를 계산

→ 변화량이 일정 threshold 이상일 경우에만 '실제 사람'으로 판정

정적인 사진과 실시간 사람을 정확히 구분하는 로직을 통해 보안성을 강화

portfolio_taebaeck_troubleshooting_trouble_title2문제

얼굴 인식 정확도를 높이기 위해 Mediapipe FaceMesh를 사용했으나, 468개 얼굴 랜드마크를 실시간으로 추적하는 고성능 알고리즘 특성상 연산량이 매우 많음.

스펙이 낮은 키오스크 기기에서는 프레임 드랍, 렉, 인식 지연 문제가 발생함.

실시간 PPG(광용적맥파) 신호 추출을 목표로 했기 때문에, 프레임 불안정으로 PPG 데이터 품질 저하 문제가 함께 발생함.

문제 해결 및 성과

Mediapipe FaceMesh 대신 FaceDetection 모델로 교체

→ 주요 얼굴 특징과 경계만 빠르게 감지하여 하드웨어 리소스 소모 대폭 감소

얼굴 전체를 넓게 캡처하던 기존 방식에서, 이마~턱까지 타이트하게 프레임 설정 변경

→ 노이즈(배경) 최소화 및 안정적인 신호 추출 가능

FaceDetection 모델 적용으로 저사양 장비에서도 프레임 드랍 없이 원활한 동작 확보

→ 실시간 PPG 데이터 품질 유지 및 전체 시스템 성능 안정화

portfolio_taebaeck_troubleshooting_trouble_title3문제

키오스크 등에 설치된 카메라가 정면이 아니라 90도 회전된 상태로 고정되어 있음.

웹에서는 네이티브 카메라 설정을 조정할 수 없어, 받아오는 비디오 스트림이 90도 기울어진 상태로 입력되고, 이로 인해 얼굴 인식 및 영상 처리에 문제가 발생함.

문제 해결 및 성과

숨은 캔버스(Canvas)에 비디오 스트림을 먼저 그린 후, 캔버스에서 90도 회전 변환(Transform) 적용

→ 카메라 영상의 물리적 회전을 소프트웨어적으로 보정

회전된 캔버스 이미지를 기반으로 얼굴 인식 및 영상 처리 수행

→ 기존 얼굴 인식 로직과 영상 처리가 정상적으로 작동

추가 하드웨어 수정 없이 소프트웨어 레벨에서 문제 해결

→ 장비 설치 상태에 관계없이 일관된 인식 및 처리 품질 확보

portfolio_taebaeck_troubleshooting_trouble_title4문제

기존에 requestAnimationFrame(predictWebcam)을 사용해 브라우저 렌더링 타이밍에 맞춰 얼굴 인식을 반복 호출했음.

그러나 브라우저 렌더링 스케줄은 CPU 부하, 탭 활성화 상태 등에 따라 매 프레임마다 변동되어 호출 주기가 불규칙해졌음.

이로 인해 얼굴 인식 주기가 불안정해지고, PPG 신호 추출이나 시간 기반 계산에서 심각한 오차가 발생함.

문제 해결 및 성과

requestAnimationFrame 대신 setInterval을 사용해 얼굴 인식 호출 주기 제어

→ 30FPS 기준으로 1000ms ÷ 30 ≈ 33.33ms 간격으로 predict 함수 호출

일정한 호출 주기를 유지하여 데이터 수집 타이밍 안정화

→ PPG 신호 추출 및 시간 기반 계산 시 오차 최소화

프레임 속도 변동으로 인한 얼굴 인식 품질 저하 문제 해결

→ 전반적인 시스템 성능과 데이터 신뢰도 향상

해당 프로젝트는 보안상의 문제로샘플 이미지 제공이 어렵습니다.