자체 안티스푸핑(Liveness) AI 모델 & 실기기 검증 앱
상용 SDK 없이 출입통제 단말용 위조 얼굴 판별 딥러닝 모델을 자체 개발하고, NXP i.MX 8M Plus NPU 실기기 검증 앱까지 구축한 On-Device AI 프로젝트
정량적 검증 성과 지표
엔드투엔드 파이프라인 아키텍처
Dataset & Leakage Prevention
RGB/IR 6클래스 14,400장 데이터셋 구축, Subject 단위 Group K-Fold로 인물 간 데이터 누수 원천 차단
Model Architecture & Tuning
MobileNetV2 기반 경량 모델 설계, IR 1채널 Conv1 가중치 전이(sum 모드) 적용으로 활성화 왜곡 방지
INT8 PTQ & NPU Export
TFLite INT8 양자화 적용, Hardswish→ReLU 개조 및 SE 비활성화로 NPU 최적화 손실 최소화 (Near-Zero Loss)
Real-time Dual Stream Pipeline
Android 타깃 단말에서 RGB/IR 150ms 프레임 페어링 및 3-Executor 스레드 분리(카메라/검출/추론)
AI-Driven Unit & Boundary Tests
AI를 활용한 17개 JVM 단위 테스트로 확률 경계값(79.9% vs 80.0%) 및 24-bit BMP 바이트 정합성 잠금
저장소 구조 및 공개 범위
access-liveness-model
딥러닝 모델 학습, 데이터셋 설계, INT8 양자화 및 NPU 배포 파이프라인 (Python)
android-anti-spoofing-lab
Android 실시간 듀얼 카메라 추론, NPU 하드웨어 평가 앱 및 17개 단위 테스트 (Java)
프로젝트 배경
얼굴인식 출입통제기에서 인쇄물, 스마트폰 화면 재생, 3D 실리콘 마스크 등 다양한 위조 얼굴 공격을 방어해야 했습니다. 외부 상용 SDK에 의존하지 않고 자체 딥러닝 모델을 구축해야 했으며, 최종 배포처가 연산 자원이 극도로 제한된 임베디드 NPU(NXP i.MX 8M Plus) 환경이라는 하드웨어 제약이 존재했습니다.
핵심 문제 및 기술적 제약조건
정확도 손실 없이 모델을 INT8 정수형으로 양자화하여 임베디드 NPU에 배포해야 했으며, 카메라 스트림 전처리와 NPU 추론 지연시간을 실시간(Real-time) 수준으로 유지하고, 미세한 확률 변동 속에서도 측정 신뢰성을 엄격히 확보해야 했습니다.
주요 개발 기능 및 기술 솔루션
Subject 단위 Group K-Fold 및 IR 1채널 가중치 전이 최적화
데이터셋 구축 시 인물 데이터 누수를 방지하고 단일 IR 센서 입력에 최적화된 합성곱 가중치 변환 설계
Keras MobileNetV2 기반 INT8 PTQ 양자화 및 Near-Zero Loss 달성
임베디드 NPU 하드웨어 구동을 위해 32비트 부동소수점 모델을 8비트 정수형으로 양자화(Post-Training Quantization)
Android 실시간 RGB/IR 듀얼 카메라 추론 파이프라인 및 스레드 격리
하드웨어 단말에서 실시간으로 유입되는 RGB 및 IR 카메라 스트림을 동기화하고 온디바이스 NPU 추론을 수행하는 Android 시스템 앱 구현
AI 활용 17개 JVM 단위 테스트 및 경계값(Edge-case) 회귀 방지
실제 하드웨어의 미세 확률 변동과 바이너리 파일 입출력의 정합성을 보장하는 단위 테스트 스위트 구축
NPU 평가 스크립트 정규화 버그 규명 및 NNAPI 캐싱 실패 원인 분석
하드웨어 가속기(NPU) 배포 과정에서 발생하는 비정상 지표와 런타임 드라이버 장애의 근본 원인(Root Cause) 추적 및 해결
프로젝트 결과 및 성과
보안 목표치(2.0%)를 압도하는 ACER 0.05%(단일 IR) 및 0.60%(Test split)를 달성하고, Float32 대비 정확도 손실 없는 INT8 양자화 모델을 실물 NPU 하드웨어에서 P50 10ms 속도로 실시간 구동하는 데 성공했습니다.
성장 및 배운 점
지표를 좋게 만드는 것과 모델을 견고하게 만드는 것은 다릅니다. 데이터 누수를 철저히 차단하고 NPU 실패 시의 조용한 폴백을 막았을 때 비로소 드러나는 결함들을 정면으로 마주하며 해결할 수 있었습니다. 엔지니어링의 본질은 눈앞의 수치를 꾸미는 것이 아니라 어떤 극한 환경에서도 신뢰할 수 있는 재현성을 확보하는 것임을 배웠습니다.
기술 스택
검증 증거 및 공개 범위
공개 및 보안 가이드라인
Python 학습 파이프라인(access-liveness-model)은 완전 공개되며, Android 검증 앱(android-anti-spoofing-lab)은 상용 SDK 및 단말 의존 코드를 마스킹한 후 본인 구현부(파이프라인·스레드·17개 단위테스트)를 중심으로 발췌 공개합니다.