회고 · 개선점 — Hover AI (시각장애인 터치스크린 도우미)
요약
Hover AI는 손가락 추적(YOLO)과 패널 텍스트 인식(OCR)을 결합해, 손가락이 닿기 전에 현재 가리키는 정보를 음성으로 안내하는 접근성 도우미이다.
이번 회고는 개발 중/후 받았던 질문들에 대한 답변을 교훈과 개선 계획 중심으로 기록했다.
코드와 세부 구현은: GitHub — park-hoyeon/SKT-FLY-AI-7 및 AI 모델링 페이지 참고.
1) 설계 결정과 근거
1-1. 왜 EasyOCR를 파인튜닝했는가?
- 관측: 사전학습된 EasyOCR은 범용 단어에 최적화되었다. 세탁기 UI의 도메인 어휘(예: 탈수, 울, 표준, 불림)에선 오인식 빈도가 높았다(예: 탈수 → 박수).
- 결정: 도메인 특화 파인튜닝으로 표준 용어 인식률을 끌어올렸다.
- 교훈: 사전학습 모델은 일반화의 출발점이고, 서비스 가치는 도메인 적합성에서 나온다. 동일 전략으로 다른 가전·키오스크도 데이터셋만 확보되면 확장 가능하다.
1-2. 아키텍처를 바꾸기보다 “조합”에 집중한 이유
- 제한된 시간 내 실시간성을 확보하려면, 이미 검증된 구성(EasyOCR + YOLO)을 최적 조합하는 것이 효율적이라 판단했다.
- PaddleOCR/mediapipe 등도 검토했으나, 실측 지연/안정성 기준에서 EasyOCR + YOLOv11 조합을 선택했다.
- 교훈: 구조 개편보다 스케줄링·캐싱·전처리 최적화가 실사용 성능에 더 크게 기여한다고 생각했다.
1-3. 온디바이스 대신 외부 연산을 택한 이유
- 초기 목표는 정확/안정 기능 구현. 스마트폰 카메라 + 외부 GPU로 기능을 빠르게 검증하는 것이었다.
- 교훈: 온디바이스 경량화는 다음 단계에서 양자화/지식증류로 추진.
1-4. 왜 ‘안경 형태’ 시연을 안 했나
- 핵심 문제(닿기 전 안내)를 우선 해결했다. 하드웨어 폼팩터는 차후 스마트 안경 탑재를 염두에 둔 확장 단계로 분리 가능하다.
- 교훈: 기능 검증 → 폼팩터 순서로 리스크를 분리하면 학습·개선 주기가 빨라진다.
2) 기술 회고
2-1. 실시간 파이프라인(주기/빈도/지연)
- 추적(손가락): 매 프레임 실행(YOLO 추적).
- OCR: 비동기 저빈도(약 0.6–1.5초 주기).
- 빈 구간 보정: SIM-history + Optical Flow로 이전 OCR 결과를 워핑해 이어 붙임.
- 가속: 큰 이동·품질 저하 시 주기를 1.5s → 0.6s로 자동 가속.
- 리셋: 워핑 누적 오차/유지시간 임계 초과 시 OCR 결과를 폐기 후 재동기화.
- 지연 체감: 사용자는 항상 최신 상태를 청취(보간+가속 덕에 공백 최소화).
2-2. EasyOCR 파인튜닝 이슈 & 해결
- 초반엔 정확도 향상 미미.
- 대응: 데이터 양·현장 비율 확대, 글레어/블러 증강 추가로 강건성 제고.
- 정규화: 한글 Jamo 분해 + 유사도 매칭으로 OCR 출력을 표준 용어 사전에 맵핑.
2-3. YOLO 손가락 탐지 이슈 & 해결
- 문제: 밝은 배경 과적합, 네일의 뾰족 모양 미학습.
- 대응: 데이터 보강(여러 차수), 라벨 품질 점검, 배경 다양화로 재학습.
- 백업: YOLO 실패 시 KLT + Optical Flow로 추적 보강/연결.
2-4. LED 감지
- 탐지: OpenCV morphology(top-hat)로 밝은 점 강조 → HSV V 채널 기반 임계/차분으로 LED 판별.
- 매칭: LED 위치와 텍스트 후보를 공간적으로 연관해 버튼 상태로 요약.
2-5. 텍스트가 아닌 아이콘
- 현재는 텍스트 우선. 아이콘은 CNN 분류(라벨: 의미)로 확장 가능. 손가락 탐지와 동일 파이프라인에 통합 여지.
3) 제품·사용자 관점 회고
3-1. 인터뷰에선 ‘인터폰’, 개발은 ‘세탁기’를 택한 이유
- 빈도·접근성·데이터 수집 용이성을 고려해, 시연·개선 사이클이 빠른 세탁기를 1차 도메인으로 선정했다.
- 교훈: 자주 쓰는 기기에서 가치 증명(PoC) → 다른 기기·키오스크로 영역 확장.
3-2. 유사 서비스와의 차별점(조사 요약)
- 일부 상용 제품은 손가락 주변 부분 스캔/지연 이슈, 배터리/부팅 제약 등이 보고되었다.
- Hover AI는 가격·구현 단순성과 실시간 손가락-버튼 직결 읽기에 초점을 뒀다다.
- 교훈: 실시간성과 포인팅 연결성은 접근성 UX에서 핵심 경쟁 요소.
4) 리스크 인식
- 도메인 과적합(세탁기 중심): 특정 UI/폰트/라이팅에 치우칠 수 있음.
- 특정 모델 과적합: 일부 제품군 데이터 편향 시 일반화 저하.
- 광학 편차: 반사/글레어/노이즈가 현장마다 다름.
- 온디바이스 제약: 추후 연산·전력·발열 한계 고려 필요.
- 사용자 다양성: 완전 실명/저시력/고령 등 니즈 스펙트럼 반영 필요.
5) 개선 계획(로드맵)
5-1. 데이터/평가
- 현장 데이터 증대: 다양한 기종·조명·각도 수집, 능동학습 루프로 오검 사례 우선 보강.
- 라벨 가이드 통일: 사전(표준 용어) 고정, Jamo 기반 후처리 일괄 적용.
- E2E 지표: “정확한 안내율·실수 예방율(SUS 포함)”을 주 지표로 관리.
5-2. 모델/추론
- 온디바이스 경량화:
- OCR/YOLO 양자화(int8), 지식 증류(학생 모델), 텐서RT/NNAPI 경로 검토.
- YOLO nano/tiny 계열 전환 A/B.
- 동적 스케줄링: 추적 신뢰/모션·조도 지표로 OCR 주기 자동 조정 고도화.
- 사전·언어모델 보정: 도메인 사전+Jamo 편집거리+언어모델(스코어링)로 후보 재순위.
5-3. UX/안내
- 쿨다운/중복 억제 정교화, 문장 요약 길이/톤 A/B.
- 햅틱/사운드 보조 채널 검토(진동으로 버튼 포커스 피드백).
- 오류 모드 안내: “불확실/다시 읽기/근접해 주세요” 등 명시적 피드백 문구.
5-4. 도메인 확장
- 다른 가전(전자레인지/엘리베이터/ATM/키오스크)로 토큰·아이콘 사전 확장.
- 아이콘 분류기 추가(텍스트 불가 상황 대체 경로).
5-5. 리셋·안정성
- 워핑 누적 오차 감지 기준 자동 캘리브레이션, 실패 시 로컬 재OCR 강제.
- 로그·리플레이어로 현장 실패 재현/분석 파이프라인 구축.
6) FAQ에서 얻은 교훈(요약)
- “세탁기 과적합?” → 맞음. 의도적으로 도메인 특화했다. 확장성은 데이터셋 교체로 담보.
- “특정 제품 과적합?” → 세탁기라는 상위 카테고리 공통 어휘를 학습. 다른 기기도 어휘/아이콘 사전만 바꿔 확장 가능.
- “정확도 낮을 땐?” → Jamo·사전 정규화, 병합/우선순위로 TTS 품질 개선.
- “추적 끊기면?” → YOLO 기본 + KLT/Optical Flow 백업.
- “안경 온디바이스는?” → 1차 목표는 기능 검증. 다음 단계에서 경량화/이식.