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 문서를 참고하세요.
2. 모델 적용
변환된 .dlc 파일을 앱의 자산 폴더에 복사합니다.
- 위치:
app/src/main/assets/
3. 설정 변경 (Config)
Config.kt 파일에서 사용할 모델 파일명을 수정합니다.
// 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)
Description
Languages
Kotlin
64.9%
Java
35.1%