# Mobility Gateway for Android (Qualcomm NPU Edition) Kepco AI 엔진의 Object Detection 및 Pose Estimation 기능을 **Qualcomm Snapdragon NPU(DSP)** 를 활용하여 안드로이드 앱으로 구현한 프로젝트입니다. 기존 CPU(ONNX Runtime) 방식 대비 비약적인 속도 향상과 발열 감소를 달성했습니다. ## 🚀 주요 변경 사항 (2026.01 업데이트) - **AI 엔진 교체**: ONNX Runtime (CPU) → **SNPE / QAIRT (DSP/NPU)** - **성능 향상**: NPU 가속을 통해 실시간(Real-time) 추론 속도 확보 및 배터리 소모 최적화. - **지원 모델 확장**: RTMDet (Tiny, S, M), YOLOv8 (Nano, Pose) 완벽 지원. --- ## ✅ 요구 사항 (Requirements) - **IDE**: Android Studio Jellyfish 2023.3.1 이상 - **Device**: Qualcomm Snapdragon AP가 탑재된 안드로이드 기기 (Android 10+) - *권장: Snapdragon 8 Gen 1 이상 (Hexagon DSP 활용)* - **Driver**: 퀄컴 전용 드라이버 (자동 로드됨) --- ## 🛠 적용 기술 (Tech Stack) | 구분 | 모델 아키텍처 | 실행 엔진 | 비고 | |---|---|---|---| | **객체 탐지 (Detection)** | **RTMDet** (Tiny/S/M), **YOLOv8** Nano | **SNPE (DSP)** | NPU 가속 적용 완료 | | **자세 추정 (Pose)** | **YOLOv8-Pose** Nano | **SNPE (DSP)** | NPU 가속 적용 완료 | | **안면 인식 (Face)** | FaceNet | TFLite | 기존 유지 | --- ## 📖 사용 방법 (Usage) ### 1. 모델 준비 (Model Preparation) 이 프로젝트는 퀄컴 전용 포맷인 `.dlc` 모델 파일을 사용합니다. PyTorch(`.pt`) 또는 ONNX 모델을 `.dlc`로 변환하는 방법은 프로젝트 내 **[MODEL_CONVERSION_GUIDE.md](MODEL_CONVERSION_GUIDE.md)** 문서를 참고하세요. ### 2. 모델 적용 변환된 `.dlc` 파일을 앱의 자산 폴더에 복사합니다. - 위치: `app/src/main/assets/` ### 3. 설정 변경 (Config) `Config.kt` 파일에서 사용할 모델 파일명을 수정합니다. ```kotlin // Config.kt 예시 val FILENAME_OD_MODEL = "rtmdet_tiny.dlc" // 객체 탐지 모델 val FILENAME_POSE_MODEL = "yolov8n-pose.dlc" // 포즈 모델 ``` --- ## 📂 주요 라이브러리 (Libraries) - **Qualcomm AI Engine Direct (SNPE)**: 2.x (NPU Inference) - **OpenCV Android**: 이미지 전처리 및 그리기 - **Paho MQTT**: 4.2.3 (통신) - **NanoHTTPD**: 2.3.1 (REST API)