요약
얼굴 위치를 찾는 MediaPipe만으로는 목탄 그림 속 얼굴도 통과했습니다. 이에 얼굴 검출 다음 단계에 MIT 허가 TinyCLIP 사진/삽화 분류를 더했습니다. 두 단계 모두 S9의 Chrome에서 WASM으로 실행했고, 사진 원본은 추론 서버로 전송하지 않았습니다.
운영 반영 상태
2026-10-04 운영 반영 완료. 웹은 Cloudflare Pages gongssum-mobile에, 앱은 Expo EAS preview에서 생성한 OTA #446의 동일 번들을 production 채널에 반영했습니다. 연결된 Galaxy S9에서 재시작 후 설정의 버전 #446 · production채널을 확인했습니다.
운영 OTA 그룹: 897723d5-2d41-4f2a-8c05-3c3fa2aeedd4. 웹 배포: f893e58c.gongssum-mobile.pages.dev. Android/iOS 번들 생성과 TypeScript 검사가 통과했습니다. iOS 실기기 동작은 이번에 확인하지 않았습니다.
화면이 절반으로 줄어든 원인과 재발 방지
네이티브 얼굴 검사용 WebView의 내부 화면만 숨겼고 외부 컨테이너는 라이브러리 기본 flex: 1이었습니다. 이 컨테이너가 네비게이터와 높이를 나눠 차지했습니다. 웹 높이 문제라는 초기 추정은 정정하며, 실제 수정은 WebView의 containerStyle을 절대 배치·2×2픽셀·flex: 0으로 지정한 것입니다.
S9 운영 앱에서 관리자 회원 목록과 일반 회원 홈의 전체 높이, 하단 탭 위치를 확인했습니다. 테스트 중 전환한 회원 모드는 원래 관리자 모드로 복원했습니다. 사용자 프로필 사진을 새로 올리거나 회원 정보를 변경하지 않았습니다.
앱·웹 배포 스크립트에 사전 검사를 연결했습니다. 숨김 컨테이너 설정 누락 또는 flex: 1 복귀는 배포를 차단합니다. 정상본 통과·두 회귀 상태 차단을 확인했고, 생성 경로 Git ignore와 미추적 파일 500개 미만도 확인합니다.
배포 승인 범위가 개별 파일로 오해되어 전체 앱 번들 전송이 거부됐던 이력도 기록했습니다. 사용자 추가 지시와 기존 서비스 목적지·전송 단위를 프로젝트 지침에 남겼습니다. 정상 승인 경로로 웹 배포와 앱 OTA 업로드·운영 승격이 모두 성공했으며 승인 검토를 해제하거나 우회하지 않았습니다.
실기기 결과
| 입력 | 얼굴 검출 | 사진 상대 점수 | 처리 |
|---|---|---|---|
| 실제 인물 얼굴 사진 | 1개 | 0.955 | 자동 승인 · 분류 0.52초 |
| 얼굴 없는 풍경 사진 | 0개 | 해당 없음 | 얼굴 없음 안내 · 등록 중단 |
| 목탄/연필 얼굴 그림 | 1개 | 0.685 | 관리자 검수 · 분류 0.69초 |
분류 점수는 두 텍스트 범주 사이의 상대 점수이지, 정확도나 실제 사진일 확률을 보증하지 않습니다. 첫 모델 초기화와 로딩은 22.4초였으며 모델 캐시를 켰습니다.
구현과 개인정보
- 웹과 기존 앱이 같은 MediaPipe 모델, 같은 Transformers.js 런타임, 같은 TinyCLIP 모델/버전/0.90 기준을 사용합니다. 새 앱스토어 버전 없이 OTA 및 웹 배포 대상으로 구성했습니다.
- 추론은 사용자의 브라우저 또는 앱 내 WebView에서 수행합니다. 분류용으로 받는 것은 런타임과 모델 가중치이며, 이미지·얼굴 좌표·점수는 CDN이나 Hugging Face로 보내지 않습니다.
- 분류가 불확실하면 사진 자체를 거절하지 않고 검수 대기로 둡니다. 사진 분류 모델은 본인 확인, 생존 여부, 신원 일치, 편집·합성 사진 여부를 보증하지 않습니다.
- 검증 표본은 유형별 한 장씩입니다. 다양한 조명·필터·저화질·유화·만화·합성 얼굴을 포함한 전체 오분류율은 아직 측정하지 않았습니다. 이 때문에 낮은 점수는 자동 거절 대신 검수로 보냅니다.
모델 및 기술 근거
- TinyCLIP ONNX 모델 카드 — Transformers.js zero-shot 이미지 분류 지원, MIT 허가, 양자화 이미지 모델 24.3MB.
- Transformers.js 분류 파이프라인 문서 — 브라우저에서 zero-shot-image-classification 실행.
- Transformers.js 브라우저 실행 문서 — WASM/WebGPU 기기 실행과 브라우저별 제약.
- 실기기 샘플: 인물 사진, 풍경, 목탄 그림.