사례 요약
본 프로젝트는 RK3588 Android 스마트 글래스를 대상으로 하며 클라우드 인식 서비스 없이 기기에서 정면, 좌측, 우측 얼굴을 검출합니다. SDK는 Camera2 실시간 프레임 또는 로컬 이미지를 입력받아 얼굴 박스, 5개 랜드마크, 방향, yaw, 신뢰도, 단기 추적 ID와 처리 시간을 출력합니다. Core AAR, Face AAR, Camera2 Demo와 통합 문서를 납품했습니다.
범위는 얼굴 검출과 자세 방향 추정이며 신원 인식이 아닙니다. 이름·사번, 얼굴 데이터베이스, 1:1 검증, 1:N 검색, 라이브니스, 연령·성별·감정 분석은 포함하지 않습니다.
프로젝트 배경
대상 기기는 arm64-v8a RK3588 Android 스마트 글래스입니다. 카메라 미리보기에서 사람을 찾아 탭 선택, 부분 확대 및 후속 업무 상호작용에 위치 정보를 제공해야 했습니다. 처리는 기기에서 오프라인으로 실행되고 기존 Android 앱에 통합 가능해야 했습니다.
입력은 Camera2 YUV_420_888, NV21, RGBA_8888 및 로컬 정지 이미지입니다. 카메라 프레임률과 추론 제출률의 차이, 이미지 버퍼 수명, 회전·미러링, YUV stride와 모델 좌표를 미리보기로 매핑하는 문제도 처리했습니다.
납품 범위
| 항목 | 내용 |
|---|---|
| Android SDK | Core AAR 및 Face AAR |
| Demo | Camera2 실시간 얼굴 검출 Demo APK |
| API | 동기 및 비동기 검출 |
| 입력 | YUV_420_888, NV21, RGBA_8888, 로컬 이미지 |
| 출력 | 얼굴 박스, 신뢰도, 5개 랜드마크, 정면/좌/우, yaw, trackId, 1회 처리 시간 |
| 문서 | 통합 가이드, 예제 코드, 문제 해결, 릴리스 노트, SHA-256 목록 |
| 실행 | RK3588 Android 기기 내 오프라인 처리 |
기술 구성
처리 흐름은 Camera2 또는 정지 이미지 → 형식·방향 처리 → OpenCV YuNet 검출 → 5개 랜드마크 기하 분석 → 정면/좌측/우측 분류 → 단기 추적 → 결과 콜백과 UI 오버레이입니다.
납품 기준은 OpenCV 4.10.0과 YuNet CPU 검출기입니다. 실시간 입력은 320×320, 정지 이미지 표준 검출은 640×640을 사용합니다. 세 방향은 하나의 검출기와 SDK API를 공유하고 랜드마크의 기하 관계로 방향을 추정합니다.
Demo는 100 ms마다 한 번, 약 초당 10회의 검출을 제출합니다. 각 SDK 인스턴스는 완료되지 않은 비동기 요청을 하나만 유지하고 애플리케이션 소유 DirectBuffer에 Y/U/V를 저장합니다. Camera2는 acquireLatestImage()로 오래된 프레임을 건너뛰어 지연 누적을 줄입니다.
주요 문제와 수정
일부 이미지가 데스크톱에서는 검출되지만 Android Demo에서는 결과가 0개인 현상이 있었습니다. 모델, 입력과 모바일 출력을 비교해 OpenCV Java 결과 행렬의 읽기 방식이 원인임을 확인했습니다.
FaceDetectorYN.detect()는 단일 채널 N×15 행렬을 반환합니다. 기존 Android 코드는 각 행의 15개 값을 모두 읽지 않아 유효한 결과가 길이 검사에서 버려졌습니다. 수정 후 행렬의 열과 채널 수를 기준으로 전체 행을 읽고 회전, 색상 변환, 가로로 긴 이미지의 크롭 폴백 및 AAR 일관성 검사도 보강했습니다.
회귀 범위를 정면, 측면, 얼굴 없음, 정지 이미지와 Camera2 경로로 확장해 모델, 전처리, 결과 디코딩, UI 좌표 매핑 문제를 분리했습니다.
엔지니어링 검증
다음 데이터는 2026-07-29 납품 기록에 근거하며 Eye Algo Face SDK 0.4.5 fix5, RK3588 Android arm64-v8a에 적용됩니다. 지정 빌드, API와 단기 경로의 실행을 보여 주지만 대량 정확도, 장기 안정성 또는 양산 성능을 의미하지 않습니다.
| 검증 항목 | 결과 |
|---|---|
| SDK, Core, Face 단위 테스트 | 157/157 통과 |
| 독립 Demo 단위 테스트 | 13/13 통과 |
| Python 얼굴 도구 테스트 | 143/143 통과 |
| Android Lint | 0 Error, 19 Warning |
| APK/AAR 빌드 | 통과 |
| RK3588 설치, 시작, 권한 | 통과 |
| Camera2 10초 경로 | submit/callback 79/79, dropped 0 |
| 단기 오류 스캔 | 충돌, 카메라, 권한, 네이티브 라이브러리 오류 없음 |
엔지니어링 샘플에는 정면, 좌우 대칭 측면과 얼굴 없는 음성 샘플이 포함됩니다. 이 소규모 회귀는 검출, 방향 출력과 UI 경로 확인에만 사용하며 Precision, Recall, F1 또는 자세별 정확도 주장의 근거로 사용하지 않습니다.
프로젝트 결과
- 정면, 좌측, 우측 얼굴 검출을 하나의 Android SDK API로 통합했습니다.
- Camera2 프레임과 로컬 이미지가 동일한 결과 구조를 사용합니다.
- 이미지를 기기에서 처리해 원본 영상을 클라우드에 올릴 필요를 줄이며 네트워크 없이도 위치와 방향을 얻을 수 있습니다.
- 얼굴 박스와 5개 랜드마크를 탭 선택, 단기 추적, 부분 확대와 후속 알고리즘 입력에 사용할 수 있습니다.
- 실행 가능한 Demo, AAR, 통합 안내, 문제 해결, 해시 목록을 포함합니다.
적용 시나리오
- 스마트 글래스 시야의 사람 검출과 대상 박스 선택.
- 다중 인물 화면의 탭 선택과 부분 확대.
- 기기 내 정면·좌측·우측 방향 안내.
- 오프라인 앨범 또는 현장 촬영 이미지의 얼굴 영역 위치 확인.
- 후속 신원 인식, 라이브니스 또는 행동 분석을 위한 얼굴 크롭. 해당 후속 기능은 이번 납품 범위가 아닙니다.
인수 범위와 제한
현재 산출물은 고객 테스트와 엔지니어링 통합용이며 운영 서명 버전이 아닙니다. 출시 전 고객의 운영 서명 자료를 사용하고 고정된 실제 인수 데이터에서 라벨링 규칙, Precision, Recall, F1, 자세별 혼동 행렬과 허용 임계값을 확인해야 합니다.
극단적 측면, 가림, 강한 반사, 저조도, 작은 얼굴과 화면 재촬영에서는 누락 또는 방향 오류가 남을 수 있습니다. 단일 이미지 처리 시간을 평균, P95, 안정 프레임률이나 장시간 성능으로 확대 해석할 수 없습니다. 완료되지 않은 8시간 연속 시험은 통과로 기록하지 않았습니다.
자주 묻는 질문
SDK에 네트워크 연결이 필요합니까?
검출은 RK3588 Android 기기에서 실행되며 클라우드 인식에 의존하지 않습니다. 앱의 네트워크 사용 여부는 고객 업무 기능에 따라 달라집니다.
얼굴 신원 인식이 포함됩니까?
아닙니다. 얼굴 위치, 5개 랜드마크, 정면/좌/우 방향만 제공하며 이름, 얼굴 데이터베이스, 1:1 또는 1:N 비교는 제공하지 않습니다.
기존 Android 앱에는 어떻게 통합합니까?
Core AAR과 Face AAR이 동기·비동기 API를 제공합니다. Camera2 Demo, 입력 형식, 버퍼 수명 규칙, 예제 코드와 문제 해결 문서를 함께 제공합니다.
어떤 RK3588 검증을 완료했습니까?
설치, 시작, 권한, 정지 이미지 샘플과 Camera2 10초 경로를 확인했습니다. 정식 정확도, 운영 서명과 8시간 안정성은 별도 인수 항목입니다.
다른 RK3588 기기에 바로 사용할 수 있습니까?
API와 통합 방법은 재사용할 수 있지만 카메라 사양, Android 버전, 방향, stride, 메모리, 온도와 부하가 다르므로 대상 기기에서 빌드, 기능, 성능과 안정성을 다시 검증해야 합니다.

Online
Phone
WeChat
Top