Ultralytics YOLO27:
Get Started

Ultralytics YOLO NCNN 내보내기#

모바일이나 임베디드 시스템처럼 연산 성능이 제한된 기기에 컴퓨터 비전 모델을 배포하려면 형식을 신중하게 선택해야 합니다. 최적화된 형식을 사용하면 리소스가 제한된 기기에서도 고급 컴퓨터 비전 작업을 효율적으로 처리할 수 있습니다.

NCNN 형식으로 내보내면 Ultralytics YOLO26 모델을 경량 기기 기반 애플리케이션에 맞게 최적화할 수 있습니다. 이 가이드에서는 모바일 및 임베디드 기기의 성능을 향상하기 위해 모델을 NCNN 형식으로 변환하는 방법을 설명합니다.

NCNN으로 내보내는 이유#

NCNN high-performance neural network inference framework

Tencent가 개발한 NCNN 프레임워크는 휴대폰, 임베디드 기기, IoT 기기를 포함한 모바일 플랫폼에 특화된 고성능 신경망 추론 연산 프레임워크입니다. NCNN은 Linux, Android, iOS, macOS를 비롯한 다양한 플랫폼과 호환됩니다.

NCNN은 모바일 CPU에서 빠른 처리 속도를 제공하는 것으로 잘 알려져 있으며, 딥러닝 모델을 모바일 플랫폼에 신속하게 배포할 수 있어 AI 기반 애플리케이션 개발에 탁월한 선택입니다.

NCNN 모델의 주요 기능#

NCNN 모델은 기기 내 머신러닝을 지원하는 여러 주요 기능을 제공하여 개발자가 모바일, 임베디드 및 엣지 기기에 모델을 배포할 수 있도록 돕습니다:

  • 효율성과 고성능: NCNN 모델은 가볍고, 리소스가 제한된 Raspberry Pi와 같은 모바일 및 임베디드 기기에 최적화되어 있으면서도 컴퓨터 비전 작업에서 높은 정확도를 유지합니다.

  • 양자화: NCNN은 모델 가중치와 활성화의 정밀도를 낮춰 성능을 높이고 메모리 사용량을 줄이는 기법인 양자화를 지원합니다.

  • 호환성: NCNN 모델은 TensorFlow, Caffe, ONNX 등 널리 사용되는 딥러닝 프레임워크와 호환되므로, 개발자는 기존 모델과 워크플로를 활용할 수 있습니다.

  • 사용 편의성: NCNN은 형식 간 모델 변환을 위한 사용자 친화적인 도구를 제공하여 다양한 개발 환경에서 원활하게 상호 운용할 수 있도록 합니다.

  • Vulkan GPU 가속: NCNN은 Vulkan을 지원하여 AMD, Intel 및 NVIDIA가 아닌 다른 GPU를 포함한 여러 공급업체의 GPU에서 가속 추론을 수행할 수 있으므로, 더 다양한 하드웨어에 고성능으로 배포할 수 있습니다.

NCNN 배포 옵션#

NCNN 모델은 다양한 배포 플랫폼과 호환됩니다.

  • 모바일 배포: Android 및 iOS에 최적화되어 있어 모바일 애플리케이션에 원활하게 통합하고 효율적인 온디바이스 추론을 수행할 수 있습니다.

  • 임베디드 시스템 및 IoT 디바이스: Raspberry Pi 및 NVIDIA Jetson과 같은 리소스 제약이 있는 디바이스에 적합합니다. Ultralytics 가이드를 사용한 Raspberry Pi의 표준 추론 성능이 충분하지 않은 경우 NCNN을 사용하면 성능을 크게 개선할 수 있습니다.

  • 데스크톱 및 서버 배포: 개발, 학습 및 평가 워크플로를 위해 Linux, Windows, macOS 전반의 배포를 지원합니다.

Vulkan GPU 가속#

NCNN은 Vulkan을 통해 GPU 가속을 지원하므로 AMD, Intel 및 NVIDIA가 아닌 다른 그래픽 카드를 포함한 다양한 GPU에서 고성능 추론을 수행할 수 있습니다. 특히 다음과 같은 경우에 유용합니다.

  • 공급업체 간 GPU 지원: NVIDIA GPU로 제한되는 CUDA와 달리 Vulkan은 여러 GPU 공급업체의 제품에서 작동합니다.
  • 멀티 GPU 시스템: device="vulkan:0", device="vulkan:1" 등을 사용하여 GPU가 여러 개인 시스템에서 특정 Vulkan 디바이스를 선택합니다.
  • 엣지 및 데스크톱 배포: CUDA를 사용할 수 없는 디바이스에서 GPU 가속을 활용합니다.

Vulkan 가속을 사용하려면 추론을 실행할 때 Vulkan 디바이스를 지정합니다.

Vulkan 추론
from ultralytics import YOLO

# 내보낸 NCNN 모델 불러오기
ncnn_model = YOLO("./yolo26n_ncnn_model")

# Vulkan GPU 가속으로 추론 실행(첫 번째 Vulkan 디바이스)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")

# 멀티 GPU 시스템에서 두 번째 Vulkan 디바이스 사용
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")
Vulkan 요구 사항

GPU용 Vulkan 드라이버가 설치되어 있는지 확인합니다. 대부분의 최신 GPU 드라이버에는 기본적으로 Vulkan 지원이 포함되어 있습니다. Linux에서는 vulkaninfo과 같은 도구를, Windows에서는 Vulkan SDK를 사용하여 Vulkan 사용 가능 여부를 확인할 수 있습니다.

지원 작업#

NCNN 내보내기는 Ultralytics의 7가지 작업을 모두 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 해당 헤드를 제공하는 유일한 모델 계열인 YOLO26에서만 사용할 수 있습니다.

작업YOLOv8YOLO11YOLO26
탐지✅✅✅
세그멘테이션✅✅✅
시맨틱❌❌✅
깊이❌❌✅
분류✅✅✅
포즈✅✅✅
OBB✅✅✅

NCNN으로 내보내기: YOLO26 모델 변환#

YOLO26 모델을 NCNN 형식으로 변환하여 모델 호환성과 배포 유연성을 높일 수 있습니다.

설치#

필수 패키지를 설치하려면 다음을 실행하세요:

설치
# Install the required package for YOLO26
pip install ultralytics

자세한 지침과 모범 사례는 Ultralytics 설치 가이드를 참조하세요. 문제가 발생하면 해결 방법을 확인할 수 있는 일반적인 문제 가이드를 참조하세요.

사용법#

모든 Ultralytics YOLO26 모델은 별도의 설정 없이 내보내기를 지원하도록 설계되어 있어 원하는 배포 워크플로에 쉽게 통합할 수 있습니다. 애플리케이션에 가장 적합한 설정을 선택하려면 지원되는 내보내기 형식 및 구성 옵션 전체 목록을 확인하세요.

NCNN 형식은 내보내기, 예측, 검증 모드를 지원합니다. 모델을 내보낸 다음 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하세요.

내보내기
from ultralytics import YOLO

# YOLO26 모델 로드
model = YOLO("yolo26n.pt")

# 모델을 NCNN 형식으로 내보내기
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
예측
from ultralytics import YOLO

# 내보낸 NCNN 모델 불러오기
model = YOLO("./yolo26n_ncnn_model")

# 추론 실행
results = model("https://ultralytics.com/images/bus.jpg")
검증
from ultralytics import YOLO

# 내보낸 NCNN 모델 불러오기
model = YOLO("./yolo26n_ncnn_model")

# COCO8 데이터셋에서 정확도 검증
metrics = model.val(data="coco8.yaml")

내보내기 인수#

인수유형기본값설명
formatstr'ncnn'내보낸 모델의 대상 형식으로, 다양한 배포 환경과의 호환성을 정의합니다.
imgszint 또는 tuple640모델 입력에 사용할 이미지 크기입니다. 정사각형 이미지에는 정수를 사용하고, 특정 크기에는 튜플 (height, width)을 사용할 수 있습니다.
quantizeint 또는 strNone양자화 정밀도: 16(FP16)은 내보낸 가중치의 크기를 절반으로 줄입니다. 32을 지정하거나 값을 설정하지 않으면 FP32 가중치로 내보내며, 하드웨어가 지원하는 경우 NCNN CPU 런타임은 기본적으로 계속 FP16으로 연산합니다. 이 옵션은 더 이상 사용되지 않는 half 플래그를 대체합니다.
batchint1내보내기 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다.
devicestrNone내보내기에 사용할 장치를 지정합니다. GPU(device=0), CPU(device=cpu), Apple 실리콘용 MPS(device=mps)를 사용할 수 있습니다.

내보내기 프로세스에 관한 자세한 내용은 내보내기에 관한 Ultralytics 문서 페이지를 참조하세요.

내보낸 YOLO26 NCNN 모델 배포#

Ultralytics YOLO26 모델을 NCNN 형식으로 내보낸 후에는 위 사용 예시와 같이 YOLO("yolo26n_ncnn_model/") 메서드를 사용하여 배포할 수 있습니다. 플랫폼별 배포 지침은 다음 자료를 참조하세요.

  • Android: Android 애플리케이션에서 객체 탐지를 수행하도록 NCNN 모델을 빌드하고 통합합니다.

  • macOS: macOS 시스템에 NCNN 모델을 배포합니다.

  • Linux: Raspberry Pi 및 유사한 임베디드 시스템을 포함한 Linux 디바이스에 NCNN 모델을 배포합니다.

  • Windows x64: Visual Studio를 사용하여 Windows x64에 NCNN 모델을 배포합니다.

요약#

이 가이드에서는 리소스 제약이 있는 디바이스에서 효율성과 속도를 높이기 위해 Ultralytics YOLO26 모델을 NCNN 형식으로 내보내는 방법을 설명했습니다.

자세한 내용은 공식 NCNN 문서를 참조하세요. 다른 내보내기 옵션은 통합 가이드 페이지에서 확인하세요.

자주 묻는 질문#

  • Ultralytics YOLO26 모델을 NCNN 형식으로 내보내려면 다음을 수행합니다.

    • Python: YOLO 클래스의 export 메서드를 사용합니다.

      from ultralytics import YOLO
      
      # YOLO26 모델 로드
      model = YOLO("yolo26n.pt")
      
      # NCNN 형식으로 내보내기
      model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
    • CLI: yolo export 명령을 사용합니다.

      yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

    내보내기 옵션에 대한 자세한 내용은 내보내기 문서를 참조하세요.

  • Ultralytics YOLO26 모델을 NCNN으로 내보내면 다음과 같은 여러 이점을 얻을 수 있습니다.

    • 효율성: NCNN 모델은 모바일 및 임베디드 디바이스에 최적화되어 있어 컴퓨팅 리소스가 제한적이어도 높은 성능을 제공합니다.
    • 양자화: NCNN은 모델 속도를 높이고 메모리 사용량을 줄이는 양자화 기법을 지원합니다.
    • 폭넓은 호환성: Android, iOS, Linux, macOS를 포함한 다양한 플랫폼에 NCNN 모델을 배포할 수 있습니다.
    • Vulkan GPU 가속: Vulkan을 통해 AMD, Intel 및 NVIDIA가 아닌 다른 GPU의 가속을 활용하여 추론 속도를 높입니다.

    자세한 내용은 NCNN으로 내보내야 하는 이유 섹션을 참조하세요.

  • Tencent가 개발한 NCNN은 모바일 플랫폼에 특화되어 최적화되어 있습니다. NCNN을 사용해야 하는 주요 이유는 다음과 같습니다.

    • 고성능: 모바일 CPU에서 효율적이고 빠르게 처리하도록 설계되었습니다.
    • 크로스 플랫폼: TensorFlow 및 ONNX와 같은 널리 사용되는 프레임워크와 호환되므로 여러 플랫폼에서 모델을 더 쉽게 변환하고 배포할 수 있습니다.
    • 커뮤니티 지원: 활발한 커뮤니티 지원을 통해 지속적인 개선과 업데이트가 이루어집니다.

    자세한 내용은 NCNN 모델의 주요 기능 섹션을 참조하세요.

  • NCNN은 다양한 플랫폼을 지원하는 다목적 솔루션입니다.

    • 모바일: Android, iOS.
    • 임베디드 시스템 및 IoT 디바이스: Raspberry Pi 및 NVIDIA Jetson과 같은 디바이스.
    • 데스크톱 및 서버: Linux, Windows, macOS.

    Raspberry Pi에서 성능을 개선하려면 Raspberry Pi 가이드에 설명된 대로 NCNN 형식을 사용하는 것이 좋습니다.

  • Android에서 YOLO26 모델을 배포하려면 다음을 수행합니다.

    1. Android용 빌드: Android용 NCNN 빌드 가이드를 따릅니다.
    2. 앱과 통합: NCNN Android SDK를 사용하여 내보낸 모델을 애플리케이션에 통합하고 효율적인 온디바이스 추론을 수행합니다.

    자세한 지침은 내보낸 YOLO26 NCNN 모델 배포를 참조하세요.

    고급 가이드와 사용 사례는 Ultralytics 배포 가이드에서 확인하세요.

  • NCNN은 AMD, Intel 및 NVIDIA가 아닌 다른 GPU의 가속을 위해 Vulkan을 지원합니다. Vulkan을 사용하려면 다음을 수행합니다.

    from ultralytics import YOLO
    
    # NCNN 모델을 로드하고 Vulkan GPU를 사용하여 실행
    model = YOLO("yolo26n_ncnn_model")
    results = model("image.jpg", device="vulkan:0")  # 첫 번째 Vulkan 디바이스 사용

    멀티 GPU 시스템에서는 디바이스 인덱스를 지정합니다(예: 두 번째 GPU의 경우 vulkan:1). GPU용 Vulkan 드라이버가 설치되어 있는지 확인합니다. 자세한 내용은 Vulkan GPU 가속 섹션을 참조하세요.

댓글