Link to this section배포를 위한 TFLite 모델 내보내기 (지원 중단)#
Ultralytics 8.4.83부터 독립형 tflite 내보내기 형식이 제거되고 통합 Google LiteRT 형식으로 대체되었습니다. LiteRT(Lite Runtime)는 TensorFlow Lite의 차세대 버전이자 새로운 명칭이며, 기존과 동일한 .tflite 모델을 내보내 모바일, 임베디드, 엣지 및 브라우저 배포를 하나의 형식으로 지원합니다.
format="tflite"는 여전히 작동하지만 더 이상 권장되지 않는다는 경고가 표시되며, 대신 LiteRT 모델로 내보내집니다. 앞으로는 **format="litert"**를 사용하시기 바랍니다. 현재 내보내기 지침 및 옵션은 **LiteRT 내보내기 가이드**를 참조하십시오.
엣지 디바이스나 임베디드 디바이스에 computer vision 모델을 배포하려면 원활한 성능을 보장할 수 있는 형식이 필요합니다.
The former TensorFlow Lite or TFLite export format optimized Ultralytics YOLO26 models for tasks like object detection and image classification in edge applications. This guide preserves the legacy TFLite deployment context; use LiteRT for new exports.
Link to this sectionTFLite가 내보내기에 사용된 이유는 무엇입니까?#
2017년 5월 Google이 TensorFlow 프레임워크의 일부로 도입한 TensorFlow Lite(줄여서 TFLite)는 엣지 컴퓨팅이라고도 알려진 온디바이스 추론을 위해 설계된 오픈 소스 딥러닝 프레임워크였습니다. 이는 개발자가 모바일, 임베디드, IoT 장치 및 기존 컴퓨터에서 학습된 모델을 실행할 수 있는 도구를 제공했습니다.
TensorFlow Lite는 임베디드 Linux, Android, iOS 및 마이크로컨트롤러(MCU)를 포함한 다양한 플랫폼을 지원했습니다. TFLite 내보내기를 통해 애플리케이션은 로컬 및 오프라인에서 모델을 실행할 수 있었습니다.
Link to this sectionTFLite 모델의 주요 기능#
TFLite 모델은 개발자가 모바일, 임베디드 및 엣지 디바이스에서 모델을 실행할 수 있도록 지원하여 온디바이스 머신러닝을 구현하는 다양한 핵심 기능을 제공합니다.
-
온디바이스 최적화: TFLite는 온디바이스 ML에 최적화되어 데이터를 로컬에서 처리함으로써 지연 시간을 줄이고, 개인 데이터를 전송하지 않아 개인정보 보호를 강화하며, 모델 크기를 최소화하여 공간을 절약합니다.
-
다중 플랫폼 지원: TFLite는 Android, iOS, 임베디드 Linux 및 마이크로컨트롤러를 지원하여 광범위한 플랫폼 호환성을 제공합니다.
-
다양한 언어 지원: TFLite는 Java, Swift, Objective-C, C++, Python 등 다양한 프로그래밍 언어와 호환됩니다.
-
고성능: 하드웨어 가속과 모델 최적화를 통해 뛰어난 성능을 달성합니다.
Link to this section측정된 성능 (과거 기록)#
이 TFLite 수치는 onnx2tf-TFLite → LiteRT 마이그레이션을 위한 과거의 전/후 기록으로 보관됩니다. 아래의 기존 onnx2tf INT8 TFLite 내보내기와 새로운 LiteRT w8a32 내보내기를 비교한 것입니다(LiteRT 측정 성능 표 참조). 이 데이터는 새로운 litert-torch 형식이 기존 형식을 대체하면서도 여전히 성능이 저하되는 부분을 Google LiteRT 팀과 공유하기 위한 것으로, 아래의 형식 회귀를 참조하십시오.
Xiaomi 17 (Qualcomm Snapdragon 8 Elite Gen 5, SM8850)의 Adreno GPU에서 Ultralytics Flutter 플러그인 0.6.8을 통해 측정한 작업별 전/후 비교입니다. 레거시 onnx2tf INT8 TFLite 에셋(NHWC, 입력 images)과 새로운 w8a32 LiteRT 에셋(NCHW, 입력 args_0)을 배포된 Android imgsz에서 동일한 연속 스윕(back-to-back sweep)으로 LiteRT 2.x에서 실행했습니다. 각 셀은 총 시간(전처리 + 추론 + 후처리)을 나타내며, 그 아래에는 단계별 세부 시간이 표시됩니다. 두 형식 모두 GPU에서 완전히 컴파일되었습니다.
| 모델 | 작업 | 크기 (픽셀) | 이전 onnx2tf INT8 TFLite (ms) | 이후 w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | 탐지(Detect) | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | 세그멘테이션(Segment) | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | 의미론적(Semantic) | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | 분류(Classify) | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | 포즈(Pose) | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB(방향성 경계 상자) | 640 | 13.9 3.0 / 8.3 / 2.7 | 13.0 2.9 / 7.9 / 2.3 |
w8a32 LiteRT는 총 지연 시간 면에서 6개 작업 중 5개에서 레거시 onnx2tf INT8 형식과 같거나 더 뛰어난 성능을 보입니다. Semantic은 여전히 형식 회귀(format regression) 상태입니다. w8a32 NCHW 로짓(logits)이 전처리 정리 후에도 레거시 NHWC 로짓보다 더 많은 추론 시간을 소요하기 때문입니다. 레거시 onnx2tf 모델은 새로운 NCHW 내보내기와 함께 LiteRT 2.x에서 변경 없이 실행됩니다. 공식 Android LiteRT 에셋은 yolo-flutter-app v0.6.6 릴리스에 호스팅되어 있으며, 상세 벤치마크 기록은 Flutter 성능 문서에서 확인할 수 있습니다.
Link to this sectionLiteRT 대비 형식 회귀#
Xiaomi 17의 Adreno GPU에서 동일 기기 YOLO26n 탐지 결과입니다. 레거시 onnx2tf INT8 TFLite와 4가지 LiteRT 양자화 형식을 하나의 지속 실행으로 측정했습니다(따라서 추론은 비교 가능한 형식 의존적 지표입니다):
| Android 형식 | GPU 추론 (ms) | GPU 컴파일 여부 |
|---|---|---|
| onnx2tf INT8 (레거시 TFLite) | 8.6 | 예 |
| LiteRT w8a32 (새로운 공식) | 8.4 | 예 |
LiteRT INT8 (quantize=8) | 11.0 | 예 |
| LiteRT FP32 | 8.8 | 예 |
LiteRT w8a16 (quantize="w8a16") | (CPU 폴백) | 아니오 — 실패 |
프로덕션 Android 에셋을 onnx2tf TFLite에서 LiteRT로 마이그레이션하는 과정에서 Google LiteRT / litert-torch 팀에 제기된 문제점:
- NCHW 레이아웃은 소비자가 레이아웃을 인식하도록 만듭니다. litert-torch는 PyTorch 모델을 추적하고 float 입력을 포함한 NCHW
[1,3,H,W]를 내보내는 반면, onnx2tf TFLite 내보내기는 카메라/비트맵 레이아웃과 일치하는 NHWC[1,H,W,3]이었습니다. 현재 Flutter 플러그인은 RGB 패킹 중에 평면 CHW를 직접 작성하여 별도의 HWC→CHW 전치를 피하지만, 더 간단한 소비자는 여전히 직접 평면 패킹이나 추가 전치가 필요합니다. quantize="w8a16"은 GPU(OpenCL) 델리게이트에서 컴파일되지 않으며, 약 40배 느린(~660 ms 대 ~17 ms) CPU 경로로 조용히 폴백되어 GPU 배포에 사용할 수 없습니다.- 정적 INT8(
quantize=8)은 가장 느린 GPU 형식입니다 — 동일한 레거시 onnx2tf INT8 모델의 ~8.6 ms 대비 ~11 ms로, 즉 LiteRT 자체의 INT8 경로가 대체한 형식보다 성능이 저하되었습니다. 동적 범위 w8a32가 이전 INT8 속도와 일치하는 유일한 LiteRT 형식이므로 이것이 현재 출하되고 있습니다. - 세그멘테이션 모델은 그래프 내 ArgMax 옵션 없이 원시 NCHW 로짓으로 내보내지며,
[1, C, H, W]에 대해 캐시 효율이 낮은 호스트 측 argmax를 강제합니다(각 클래스 평면이 전체 H×W만큼 떨어져 있음). onnx2tf, CoreML 및 QNN 경로는 대신 압축된 클래스 맵을 출력할 수 있습니다. - 출력 텐서 이름이
output_0,output_1등으로 변경되었습니다 (onnx2tf의Identity,Identity_1등과 대조됨). 이는 소비자가 새 이름을 추가하기 전까지 런타임 출력 형태 조회를 조용히 중단시켰습니다.
현재 출하 중인 형식인 LiteRT w8a32 수치는 LiteRT 페이지에서 확인할 수 있습니다.
Link to this sectionTFLite의 배포 옵션#
LiteRT 대체 내보내기 예제를 살펴보기 전에 TFLite 모델이 일반적으로 어떻게 사용되는지 알아보겠습니다.
TFLite는 머신러닝 모델을 위한 다음과 같은 다양한 온디바이스 배포 옵션을 제공합니다.
- Android 및 iOS 배포: TFLite를 사용하는 Android 및 iOS 애플리케이션은 엣지 기반 카메라 피드와 센서를 분석하여 객체를 감지하고 식별할 수 있습니다. TFLite는 Swift 및 Objective-C로 작성된 네이티브 iOS 라이브러리도 제공합니다. 아래 아키텍처 다이어그램은 TensorFlow Lite를 사용하여 학습된 모델을 Android 및 iOS 플랫폼에 배포하는 과정을 보여줍니다.
-
Implementing with Embedded Linux: If running inferences on a Raspberry Pi using the Ultralytics Guide does not meet the speed requirements for your use case, you can use an exported TFLite model to accelerate inference times. Additionally, it's possible to further improve performance by utilizing a Coral Edge TPU device.
-
마이크로컨트롤러 배포: TFLite 모델은 단 몇 KB의 메모리만 있는 마이크로컨트롤러 및 기타 디바이스에도 배포할 수 있습니다. 핵심 런타임은 Arm Cortex M3에서 16 KB 공간만 차지하며 많은 기본 모델을 실행할 수 있습니다. 운영 체제 지원이나 표준 C 또는 C++ 라이브러리, 동적 메모리 할당이 필요하지 않습니다.
Link to this sectionTFLite 내보내기를 LiteRT로 대체#
새로운 내보내기를 하려면 모델을 LiteRT로 변환하십시오. 결과 모델은 .tflite 파일 확장자를 유지합니다.
Link to this section설치#
필수 패키지를 설치하려면 다음을 실행하십시오:
# Install the required package for YOLO26
pip install ultralytics설치 과정과 관련된 자세한 지침 및 모범 사례는 Ultralytics 설치 가이드를 확인하십시오. YOLO26용 필수 패키지를 설치하는 동안 문제가 발생하면 일반 문제 가이드에서 해결책과 팁을 확인하십시오.
Link to this section사용법#
모든 Ultralytics YOLO26 모델은 즉시 내보내기를 지원하도록 설계되어 있어 선호하는 배포 워크플로우에 쉽게 통합할 수 있습니다. 전체 지원 내보내기 형식 및 구성 옵션 목록을 보고 애플리케이션에 가장 적합한 설정을 선택할 수 있습니다.
대체된 LiteRT 형식은 내보내기, 예측 및 검증 모드를 지원합니다. 모델을 내보낸 다음 내보낸 .tflite 모델을 로드하여 추론을 실행하거나 정확도를 검증하십시오.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert") # creates 'yolo26n.tflite'from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Link to this section내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'litert' | 내보낸 모델의 대상 형식이며, 다양한 배포 환경과의 호환성을 정의합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 필요한 이미지 크기입니다. 정사각형 이미지의 경우 정수를 사용할 수 있으며, 특정 치수의 경우 (height, width) 튜플을 사용할 수 있습니다. |
quantize | int 또는 str | None | 양자화 정밀도: 8(정적 INT8, int8 가중치 + int8 활성화 함수; 보정 data/fraction 필요), 'w8a16'(정적, int8 가중치 + int16 활성화 함수; 보정 data/fraction 필요), 'w8a32'(동적 INT8, int8 가중치 + FP32 활성화 함수; 보정 불필요), 또는 32/설정 안 함(FP32). FP16은 별도로 내보내지 않으며, FP32 모델은 GPU 델리게이트에서 자동으로 FP16으로 실행됩니다. 사용 중단된 half/int8 플래그를 대체합니다. |
batch | int | 1 | 내보낸 모델의 배치 추론 크기 또는 내보낸 모델이 predict 모드에서 동시에 처리할 최대 이미지 수를 지정합니다. |
data | str | 'coco8.yaml' | 양자화에 필수적인 데이터셋 설정 파일의 경로입니다(기본값: coco8.yaml). |
fraction | float | 1.0 | INT8 양자화 보정에 사용할 데이터셋의 비율을 지정합니다. 전체 데이터셋의 하위 집합으로 보정할 수 있게 하여 실험이나 리소스가 제한된 경우에 유용합니다. INT8을 활성화하고 지정하지 않으면 전체 데이터셋이 사용됩니다. |
device | str | None | 내보내기를 위한 디바이스를 지정합니다: CPU(device=cpu), Apple 실리콘용 MPS(device=mps). |
내보내기 프로세스에 대한 자세한 내용은 내보내기에 대한 Ultralytics 문서 페이지를 참조하십시오.
Link to this section내보낸 YOLO26 TFLite 모델 배포#
Ultralytics YOLO26 모델을 LiteRT 형식으로 내보낸 후, 결과로 생성된 .tflite 모델을 배포할 수 있습니다. TFLite 모델을 실행하기 위한 기본적이고 권장되는 첫 번째 단계는 이전 사용 코드 스니펫에 설명된 대로 YOLO("model.tflite") 메서드를 사용하는 것입니다. 그러나 다양한 기타 설정에서 TFLite 모델을 배포하는 방법에 대한 자세한 지침은 다음 리소스를 참조하십시오:
-
Android: Android 애플리케이션에 TensorFlow Lite를 통합하기 위한 퀵 스타트 가이드로, 머신러닝 모델을 설정하고 실행하는 따라 하기 쉬운 단계를 제공합니다.
-
iOS: iOS 애플리케이션에서 TensorFlow Lite 모델을 통합하고 배포하려는 개발자를 위한 상세 가이드를 확인하십시오. 단계별 지침과 리소스를 제공합니다.
-
종단간 예제: 이 페이지에서는 모바일 및 엣지 디바이스에서 머신러닝 프로젝트에 TensorFlow Lite를 구현하려는 개발자를 돕기 위해 설계된 실용적인 애플리케이션과 튜토리얼을 선보이는 다양한 TensorFlow Lite 예제에 대한 개요를 제공합니다.
Link to this section요약#
이 가이드는 레거시 TFLite 배포 워크플로를 보존합니다. 새로운 내보내기를 위해서는 LiteRT를 사용하여 엣지 컴퓨팅 환경을 위한 .tflite 모델을 생성하십시오.
사용법에 대한 자세한 내용은 TFLite 공식 문서를 방문하십시오.
또한 다른 Ultralytics YOLO26 통합에 대해 궁금한 점이 있으면 통합 가이드 페이지를 확인하십시오. 그곳에서 유용한 정보와 통찰력을 많이 찾을 수 있습니다.
Link to this sectionFAQ#
Link to this sectionTFLite 내보내기를 LiteRT로 어떻게 교체합니까?#
새로운 내보내기를 위해서는 LiteRT 형식을 사용하십시오. 먼저 다음을 사용하여 필수 패키지를 설치하십시오:
pip install ultralytics그런 다음, 다음 코드 스니펫을 사용하여 모델을 내보내십시오:
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert") # creates 'yolo26n.tflite'CLI 사용자의 경우 다음을 통해 수행할 수 있습니다:
yolo export model=yolo26n.pt format=litert # creates 'yolo26n.tflite'자세한 내용은 Ultralytics 내보내기 가이드를 방문하십시오.
Link to this sectionYOLO26 모델 배포에 TensorFlow Lite를 사용하면 어떤 이점이 있나요?#
TensorFlow Lite(TFLite)는 온디바이스 추론을 위해 설계된 오픈 소스 딥러닝 프레임워크로, YOLO26 모델을 모바일, 임베디드 및 IoT 디바이스에 배포하는 데 이상적입니다. 주요 이점은 다음과 같습니다:
- 온디바이스 최적화: 데이터를 로컬에서 처리하여 지연 시간을 최소화하고 개인정보 보호를 강화합니다.
- 플랫폼 호환성: Android, iOS, 임베디드 Linux 및 MCU를 지원합니다.
- 성능: 하드웨어 가속을 활용하여 모델의 속도와 효율성을 최적화합니다.
자세한 내용은 TFLite 가이드를 확인하십시오.
Link to this sectionRaspberry Pi에서 YOLO26 TFLite 모델을 실행할 수 있나요?#
예, Raspberry Pi에서 YOLO26 TFLite 모델을 실행하여 추론 속도를 향상할 수 있습니다. 먼저 위에서 설명한 대로 모델을 LiteRT 형식으로 내보내십시오. 그런 다음 TensorFlow Lite Interpreter와 같은 도구를 사용하여 Raspberry Pi에서 모델을 실행하십시오.
추가 최적화를 위해 Coral Edge TPU 사용을 고려할 수 있습니다. 자세한 단계는 Raspberry Pi 배포 가이드 및 Edge TPU 통합 가이드를 참조하십시오.
Link to this sectionYOLO26 예측을 위해 마이크로컨트롤러에서 TFLite 모델을 사용할 수 있나요?#
네, TFLite는 리소스가 제한된 마이크로컨트롤러에서의 배포를 지원합니다. TFLite의 핵심 런타임은 Arm Cortex M3에서 16 KB의 메모리만 필요로 하며 기본적인 YOLO26 모델을 실행할 수 있습니다. 이로 인해 최소한의 컴퓨팅 성능과 메모리를 갖춘 디바이스에 배포하는 데 적합합니다.
시작하려면 TFLite Micro for Microcontrollers 가이드를 방문하십시오.
Link to this sectionTFLite로 내보낸 YOLO26 모델과 호환되는 플랫폼은 무엇인가요?#
TensorFlow Lite는 광범위한 플랫폼 호환성을 제공하여 다음과 같은 다양한 디바이스에 YOLO26 모델을 배포할 수 있도록 합니다:
- Android 및 iOS: TFLite Android 및 iOS 라이브러리를 통한 네이티브 지원.
- 임베디드 Linux: Raspberry Pi와 같은 싱글 보드 컴퓨터에 이상적.
- 마이크로컨트롤러: 리소스가 제한된 MCU에 적합.
배포 옵션에 대한 자세한 내용은 상세 배포 가이드를 참조하십시오.
Link to this sectionYOLO26 모델을 LiteRT로 내보내는 동안 발생하는 일반적인 문제를 어떻게 해결합니까?#
YOLO26 모델을 LiteRT로 내보내는 중에 오류가 발생하면 일반적인 해결 방법은 다음과 같습니다:
- 패키지 호환성 확인: Ultralytics,
litert-torch및ai-edge-litert의 호환되는 버전을 사용하고 있는지 확인하십시오. 설치 가이드를 참조하십시오. - 모델 지원: Ultralytics 내보내기 문서 페이지를 확인하여 특정 YOLO26 모델이 LiteRT 내보내기를 지원하는지 검증하십시오.
- 양자화 문제: INT8 양자화를 사용할 때는
data매개변수에 데이터셋 경로가 올바르게 지정되었는지 확인하십시오.
추가 문제 해결 팁은 일반 문제 가이드를 방문하십시오.