본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 16. 10:43

NSTiwari/YOLOv10-LiteRT-Android

요약

YOLOv10 모델을 Google AI Edge의 LiteRT(.tflite)로 변환하여 Android 기기에서 실시간 온디바이스 객체 탐지를 구현하는 방법을 설명합니다. PyTorch에서 ONNX를 거쳐 TFLite로 변환하는 전체 파이프라인과 Android 앱에서의 추론 및 시각화 과정을 다룹니다.

핵심 포인트

  • PyTorch 모델을 ONNX를 거쳐 LiteRT(.tflite)로 변환하는 단계별 워크플로우 제공
  • Android 환경에서 LiteRT 런타임을 활용한 실시간 온디바이스 추론 구현
  • Model Explorer를 사용한 신경망 구조 시각화 및 디버깅 방법 안내
  • 카메라 프레임 전처리부터 Canvas API를 이용한 결과 오버레이까지의 전체 과정 포함

Google AI Edge를 통해 LiteRT (.tflite)로 변환된 YOLOv10을 사용하여 Android에서 실시간 온디바이스 객체 탐지 (Object Detection)를 수행합니다.

변환 과정은 외부에서 보기에 명확하지 않은 몇 가지 단계를 거칩니다. Ultralytics는 TFLite로 직접 내보내지 않습니다. 먼저 PyTorch 모델을 ONNX로 변환한 다음, onnx2tf를 사용하여 TensorFlow SavedModel을 생성하고, 마지막으로 이를 .tflite로 변환합니다. yolov10_litert.py 스크립트는 단일 --export 플래그로 이 전체 체인을 처리합니다.

Android에 탑재되면, 추론 (Inference)은 Detector 클래스를 사용하여 LiteRT 런타임 (구 TFLite)을 통해 실행되며, 이 클래스는 다음을 수행합니다:

  • 카메라 프레임을 640×640 float32 텐서 (Tensor)로 전처리
  • [1, 300, 6] 형태의 모델 출력 텐서 읽기 — 300개의 후보 탐지 결과이며, 각 결과는 정규화된 좌표의 (x_min, y_min, x_max, y_max, confidence, class_id)를 포함함
  • 박스 좌표를 다시 화면 크기에 맞게 스케일링
  • 신뢰도 임계값 (Confidence threshold)에 따라 필터링하고 결과를 OverlayView로 전달

OverlayView는 Android의 Canvas API를 사용하여 카메라 프리뷰 위에 경계 상자 (Bounding boxes)와 라벨을 직접 그리며, 최신 기기에서 지연을 거의 느낄 수 없는 라이브 오버레이를 제공합니다.

라벨 맵 (Labelmap)은 Ultralytics가 내보낸 모델과 함께 작성하는 metadata.yaml에서 추출되어 labels.json 파일로 저장되며, Android 앱은 시작 시 이 파일을 로드합니다.

모델을 내보낸 후에는 Google AI Edge의 Model Explorer를 사용하여 전체 신경망 구조 (Neural network architecture)를 대화형으로 시각화할 수도 있습니다:

import model_explorer
model_explorer.visualize("yolov10n_saved_model/yolov10n_float32.tflite")

이를 통해 브라우저 기반의 그래프 뷰가 열리며, 여기서 모든 레이어 (Layer)를 검사하고, 네트워크를 통해 흐르는 텐서 형태 (Tensor shapes)를 확인하며, YOLOv10의 헤드 (Head)가 어떻게 [1, 300, 6] 탐지 출력을 생성하는지 이해할 수 있습니다. 이는 양자화 (Quantization) 문제를 디버깅하거나 모델 내부를 이해하는 데 유용합니다.

pip install -r requirements.txt
# YOLOv10n을 TFLite로 내보내기 (가중치를 자동으로 다운로드함)
python yolov10_litert.py --export --model yolov10n.pt
...
  • 내보낸 .tflite 파일과 labels.json 파일을 Android_App/app/src/main/assets/ 경로로 복사합니다.

  • Android Studio에서 Android_App을 엽니다. - 실제 기기(API 24+)에서 빌드 및 실행합니다.

  • 첫 실행 시 카메라 권한을 허용합니다.

이 앱은 모든 과정을 온디바이스 (on-device)에서 실행합니다 — 네트워크 호출이나 서버가 필요하지 않습니다.

Medium Blog — 단계별 가이드

  • Ultralytics의 YOLOv10 문서
  • Google AI Edge LiteRT

이 프로젝트는 Google의 ML Developer Programs AI Sprint 기간 동안 개발되었습니다. 이 프로젝트를 지원하기 위해 Google Cloud 크레딧을 제공해 주신 MLDP 팀에 감사드립니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0