콘텐츠로 건너뛰기

ExecuTorch를 사용하여 모바일 및 엣지에 YOLO11 배포하기

스마트폰, 태블릿, 임베디드 시스템과 같은 엣지 디바이스에 컴퓨터 비전 모델을 배포하려면 리소스 제약과 성능의 균형을 맞추는 최적화된 런타임이 필요합니다. PyTorch 엣지 컴퓨팅용 솔루션인 ExecuTorch는 다음을 위한 효율적인 온디바이스 추론을 지원합니다. Ultralytics YOLO 모델을 위한 효율적인 온디바이스 추론을 지원합니다.

이 가이드에서는 최적화된 성능으로 모바일 및 에지 디바이스에 모델을 배포할 수 있도록 Ultralytics YOLO 모델을 ExecuTorch 형식으로 내보내는 방법을 설명합니다.

ExecuTorch로 내보내는 이유는 무엇인가요?

PyTorch ExecuTorch 개요

ExecuTorch는 모바일 및 엣지 기기에서 온디바이스 추론 기능을 구현하기 위한 PyTorch 엔드투엔드 솔루션입니다. 휴대성과 효율성을 목표로 개발된 ExecuTorch는 다양한 컴퓨팅 플랫폼에서 PyTorch 프로그램을 실행하는 데 사용할 수 있습니다.

ExecuTorch의 주요 기능

ExecuTorch는 엣지 디바이스에 Ultralytics YOLO 모델을 배포하기 위한 몇 가지 강력한 기능을 제공합니다:

  • 휴대용 모델 형식: ExecuTorch는 .pte 리소스가 제한된 디바이스의 크기와 로딩 속도에 최적화된PyTorch 엑큐토치PyTorch ExecuTorch) 포맷을 지원합니다.

  • XNNPACK 백엔드: XNNPACK과의 기본 통합은 모바일 CPU에서 고도로 최적화된 추론을 제공하여 특별한 하드웨어 없이도 뛰어난 성능을 제공합니다.

  • 양자화 지원: 정량화 기술을 기본적으로 지원하여 모델 크기를 줄이고 추론 속도를 개선하는 동시에 정확도를 유지합니다.

  • 메모리 효율성: 최적화된 메모리 관리로 런타임 메모리 공간을 줄여 RAM이 제한된 장치에 적합합니다.

  • 모델 메타데이터: 내보낸 모델에는 손쉬운 통합을 위해 메타데이터(이미지 크기, 클래스 이름 등)가 별도의 YAML 파일에 포함되어 있습니다.

ExecuTorch를 사용한 배포 옵션

ExecuTorch 모델은 다양한 엣지 및 모바일 플랫폼에 배포할 수 있습니다:

  • 모바일 애플리케이션: 기본 성능으로 iOS 및 Android 애플리케이션에 배포하여 모바일 앱에서 실시간 개체 감지를 지원합니다.

  • 임베디드 시스템: 최적화된 성능으로 라즈베리 파이, NVIDIA 젯슨, 기타 ARM 기반 시스템과 같은 임베디드 Linux 기기에서 실행하세요.

  • 에지 AI 디바이스: 추론 가속화를 위해 사용자 지정 델리게이트가 포함된 특수 엣지 AI 하드웨어에 배포하세요.

  • IoT 디바이스: 클라우드 연결 요구 사항 없이 온디바이스 추론을 위해 IoT 디바이스에 통합하세요.

Ultralytics YOLO11 모델을 ExecuTorch로 내보내기

Ultralytics YOLO11 모델을 ExecuTorch 형식으로 변환하면 모바일 및 에지 디바이스에 효율적으로 배포할 수 있습니다.

설치

ExecuTorch 내보내기에는 Python 3.10 이상 및 특정 종속성이 필요합니다:

설치

# Install Ultralytics package
pip install ultralytics

설치 프로세스와 관련된 자세한 지침 및 모범 사례는 YOLO11 설치 가이드를 확인하십시오. YOLO11에 필요한 패키지를 설치하는 동안 어려움이 발생하면 일반적인 문제 가이드에서 해결 방법과 팁을 참조하십시오.

사용법

YOLO11 모델을 ExecuTorch로 내보내는 방법은 간단합니다:

사용법

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo11n_executorch_model' directory

executorch_model = YOLO("yolo11n_executorch_model")

results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ExecuTorch format
yolo export model=yolo11n.pt format=executorch # creates 'yolo11n_executorch_model' directory

# Run inference with the exported model
yolo predict model=yolo11n_executorch_model source=https://ultralytics.com/images/bus.jpg

인수 내보내기

ExecuTorch 형식으로 내보낼 때 다음 인수를 지정할 수 있습니다:

인수 유형 기본값 설명
imgsz int 또는 list 640 모델 입력용 이미지 크기(높이, 너비)
device str 'cpu' 내보내기에 사용할 장치('cpu')

출력 구조

ExecuTorch 내보내기는 모델과 메타데이터가 포함된 디렉터리를 생성합니다:

yolo11n_executorch_model/
├── yolo11n.pte              # ExecuTorch model file
└── metadata.yaml            # Model metadata (classes, image size, etc.)

익스포트된 ExecuTorch 모델 사용

모델을 익스포트한 후에는 ExecuTorch 런타임을 사용하여 대상 애플리케이션에 통합해야 합니다.

모바일 통합

모바일 애플리케이션iOSAndroid)의 경우 필요합니다:

  1. ExecuTorch 런타임 추가: 모바일 프로젝트에 ExecuTorch 런타임 라이브러리를 포함하세요.
  2. 로드 모델: 로드 .pte 파일
  3. 추론을 실행합니다: 이미지 처리 및 예측 결과 얻기

iOS 통합 예시(Objective-C/C++):

// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples

#include <executorch/extension/module/module.h>

using namespace ::executorch::extension;

// Load the model
Module module("/path/to/yolo11n.pte");

// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});

// Run inference
const auto result = module.forward(tensor);

Android 통합 예제(Kotlin):

import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor

// Load the model
val module = Module.load("/path/to/yolo11n.pte")

// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)

// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArray

임베디드 Linux

임베디드 Linux 시스템의 경우 ExecuTorch C++ API를 사용합니다:

#include <executorch/extension/module/module.h>

// Load model
auto module = torch::executor::Module("yolo11n.pte");

// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = torch::executor::Tensor(input_data, {1, 3, 640, 640});

// Run inference
auto outputs = module.forward({input_tensor});

ExecuTorch를 애플리케이션에 통합하는 방법에 대한 자세한 내용은 ExecuTorch 설명서를 참조하세요.

성능 최적화

모델 크기 최적화

배포를 위해 모델 크기를 줄이려면:

  • 더 작은 모델을 사용하세요: 가장 작은 설치 공간을 위해 YOLO11n(나노)로 시작하세요.
  • 낮은 입력 해상도: 더 작은 이미지 크기 사용(예, imgsz=320 또는 imgsz=416)
  • 양자화: 양자화 기법 적용(향후 ExecuTorch 버전에서 지원)

추론 속도 최적화

더 빠른 추론을 위해:

  • XNNPACK 백엔드: 기본 XNNPACK 백엔드는 최적화된 CPU 추론을 제공합니다.
  • 하드웨어 가속: 플랫폼별 델리게이트 사용(예: iOS CoreML )
  • 일괄 처리: 가능한 경우 여러 이미지 처리

벤치마크

Ultralytics 팀은 YOLO11 모델을 벤치마킹하여 PyTorch ExecuTorch의 속도와 정확도를 비교했습니다.

성능

모델 형식 상태 크기(MB) 메트릭/mAP50-95(B) 추론 시간 (ms/im)
YOLO11n PyTorch 5.4 0.5060 337.67
YOLO11n ExecuTorch 11 0.5080 167.28
YOLO11s PyTorch 19 0.5770 928.80
YOLO11s ExecuTorch 37 0.5780 388.31

참고

추론 시간은 전/후 처리 시간을 포함하지 않습니다.

문제 해결

일반적인 문제

이슈: Python version error

솔루션: ExecuTorch에는 Python 3.10 이상이 필요합니다. Python 설치를 업그레이드하세요:

```bash
# Using conda
conda create -n executorch python=3.10
conda activate executorch
```

이슈: Export fails during first run

솔루션: ExecuTorch를 처음 사용할 때 컴포넌트를 다운로드하고 컴파일해야 할 수 있습니다. 다운로드했는지 확인하세요:

```bash
pip install --upgrade executorch
```

이슈: Import errors for ExecuTorch modules

해결 방법: ExecuTorch가 제대로 설치되었는지 확인하세요:

```bash
pip install executorch --force-reinstall
```

더 많은 문제 해결 도움말을 보려면 Ultralytics GitHub 이슈 또는 ExecuTorch 설명서를 참조하세요.

요약

YOLO11 모델을 ExecuTorch 형식으로 내보내면 모바일 및 엣지 기기에 효율적으로 배포할 수 있습니다. PyTorch 통합, 크로스 플랫폼 지원, 최적화된 성능을 갖춘 ExecuTorch는 엣지 AI 애플리케이션을 위한 탁월한 선택입니다.

주요 요점

  • 뛰어난 성능의 PyTorch 엣지 배포를 제공하는 ExecuTorch
  • 내보내기는 다음과 같이 간단합니다. format='executorch' 매개변수
  • 모델은 XNNPACK 백엔드를 통해 모바일 CPU에 최적화됩니다.
  • iOS, Android 및 임베디드 Linux 플랫폼 지원
  • Python 3.10 이상 및 FlatBuffers 컴파일러가 필요합니다.

FAQ

YOLO11 모델을 ExecuTorch 형식으로 내보내려면 어떻게 하나요?

Python 또는 CLI 사용하여 YOLO11 모델을 ExecuTorch로 내보냅니다:

```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
```

또는

```bash
yolo export model=yolo11n.pt format=executorch
```

ExecuTorch 내보내기를 위한 시스템 요구 사항은 무엇인가요?

ExecuTorch 내보내기에는 다음이 필요합니다:

  • Python 3.10 이상
  • executorch 패키지( pip install executorch)
  • PyTorch ( ultralytics 함께 자동으로 설치됨)

참고: 처음 내보내는 동안 ExecuTorch는 FlatBuffers 컴파일러를 비롯한 필요한 구성 요소를 자동으로 다운로드하고 컴파일합니다.

Python 직접 ExecuTorch 모델을 사용하여 추론을 실행할 수 있나요?

ExecuTorch 모델(.pte 파일)은 모바일 및 엣지 디바이스에 배포하기 위해 ExecuTorch 런타임을 사용하도록 설계되었습니다. 이러한 파일은 직접 로드할 수 없습니다. YOLO() 를 사용하여 추론할 수 있습니다. ExecuTorch 런타임 라이브러리를 사용하여 대상 애플리케이션에 통합해야 합니다.

ExecuTorch는 어떤 플랫폼을 지원하나요?

ExecuTorch 지원:

  • 모바일: iOS 및 Android
  • 임베디드 Linux: 라즈베리 파이, NVIDIA 젯슨 및 기타 ARM 디바이스
  • 데스크톱 Linux, macOS 및 Windows(개발용)

모바일 배포에 있어 ExecuTorch는 TFLite와 어떻게 비교되나요?

ExecuTorch와 TFLite는 모두 모바일 배포에 탁월합니다:

  • ExecuTorch: 더 나은 PyTorch 통합, 기본 PyTorch 워크플로, 성장하는 에코시스템
  • TFLite: 더 성숙하고 폭넓은 하드웨어 지원, 더 많은 배포 사례

이미 PyTorch 사용 중이고 기본 배포 경로를 원하는 경우 ExecuTorch를 선택하세요. 호환성을 극대화하고 성숙한 툴링을 원한다면 TFLite를 선택하세요.

GPU 가속과 함께 ExecuTorch 모델을 사용할 수 있나요?

예! ExecuTorch는 다양한 백엔드를 통해 하드웨어 가속을 지원합니다:

  • 모바일 GPU: 벌칸, 메탈 또는 OpenCL 델리게이트를 통해
  • NPU/DSP: 플랫폼별 델리게이트를 통해
  • 기본값: 최적화된 CPU 추론을 위한 XNNPACK

백엔드별 설정은 ExecuTorch 설명서를 참조하세요.



📅 생성일: 0일 전 ✏️ 업데이트: 0일 전

댓글