로컬 경량 AI 모델(ONNX / MediaPipe) 구동 환경 세팅
온디바이스 AI 런타임 비교, MediaPipe Tasks SDK 및 ONNX Runtime Android 의존성 및 NDK 빌드 체계 구축
이번 주 핵심 학습 목표
- 1클라우드 API 대비 온디바이스 AI가 갖는 3대 장점(보안, 실시간성, 비용 제로)을 파악한다.
- 2MediaPipe Tasks SDK와 ONNX Runtime Mobile의 아키텍처 및 선택 기준을 수립한다.
- 3Android 프로젝트에 Native C++ 런타임 라이브러리와 모델 바이너리를 탑재한다.
실전 학습 가이드 & 코드 워크스루
1. 온디바이스 AI 런타임 선택 가이드
안드로이드 생태계에서 로컬 AI를 구동하는 대표적인 프레임워크는 두 가지입니다:
| 프레임워크 | 주력 도메인 | 하드웨어 가속기 지원 | 장점 |
| :--- | :--- | :--- | :--- |
| MediaPipe | 컴퓨터 비전 (얼굴, 손, 포즈, 제스처), 소형 텍스트 | GPU (OpenGL), NPU | 전처리/후처리 파이프라인이 내장되어 있어 구축이 가장 빠름 |
| ONNX Runtime | 일반 딥러닝 모델 (ResNet, BERT, LLM, 커스텀) | NNAPI, QNN, GPU | PyTorch에서 export한 커스텀 모델 호환성이 가장 뛰어남 |
2. AssetManager를 통한 모델 로딩 패턴
Android에서 모델 파일은 컴파일 시 압축되지 않아야 합니다. build.gradle.kts에 아래 설정을 필수로 추가해야 합니다:
android {
androidResources {
noCompress.addAll(listOf("tflite", "onnx", "task", "bin"))
}
}그리고 AssetFileDescriptor를 활용해 파일 디스크립터 오프셋으로 직접 메모리에 매핑(mmap)합니다:
fun loadModelFile(context: Context, modelPath: String): ByteBuffer {
val fileDescriptor = context.assets.openFd(modelPath)
val inputStream = FileInputStream(fileDescriptor.fileDescriptor)
val fileChannel = inputStream.channel
val startOffset = fileDescriptor.startOffset
val declaredLength = fileDescriptor.declaredLength
return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength)
}📂 이번 주차 학습 자료 & 실습 파일 다운로드
2개 파일 제공강의 교안 PDF, 실습 스타터 코드, 치트시트 등 학습에 필요한 자료를 별도로 열람하거나 다운로드하여 학습하세요.
3주차_핵심요약_치트시트.pdf
3주차 핵심 이론 및 아키텍처 다이어그램 치트시트
3주차_실전_스타터코드.zip
Android Studio 프로젝트 템플릿 및 실습 코드 예제
실전 체크리스트 & 셀프 점검
0 / 4 완료직접 코드를 구현하고 테스트를 완료할 때마다 체크해 보세요. 브라우저에 자동 보관됩니다.
firststep.kr 12주 완성 실전 커리어 로드맵
파이썬, 소프트웨어설계, DB, 데이터과학, 딥러닝, LLM 9종 코스 100% 무료