55 lines
2.3 KiB
Markdown
55 lines
2.3 KiB
Markdown
# 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) |