Ultralytics YOLO27:
Get Started

Ultralytics YOLO를 사용한 모델 벤치마킹#

Ultralytics YOLO ecosystem and integrations

벤치마크 시각화#

소개#

모델을 학습하고 검증한 후에는 다양한 실제 시나리오에서 모델의 성능을 평가하는 것이 다음 단계입니다. Ultralytics YOLO26의 벤치마크 모드는 다양한 내보내기 형식에서 모델의 속도와 정확도를 평가할 수 있는 견고한 프레임워크를 제공합니다.

예비 속도 벤치마크는 출시 예정인 YOLO27 미리 보기를 참조하세요.



시청: Ultralytics YOLO26 모델 벤치마크 | 다양한 하드웨어에서 모델 성능을 비교하는 방법

벤치마킹이 중요한 이유#

  • 정보에 기반한 의사 결정: 속도와 정확도 간의 절충 관계를 파악합니다.
  • 리소스 할당: 다양한 내보내기 형식이 서로 다른 하드웨어에서 어떻게 작동하는지 파악합니다.
  • 최적화: 특정 사용 사례에서 어떤 내보내기 형식이 최상의 성능을 제공하는지 확인합니다.
  • 비용 효율성: 벤치마크 결과를 바탕으로 하드웨어 리소스를 더 효율적으로 사용합니다.

벤치마크 모드의 주요 지표#

  • mAP50-95: 객체 감지, 인스턴스 분할, 포즈 추정 및 OBB에 사용됩니다.
  • mIoU: 시맨틱 분할에 사용됩니다.
  • delta1: 깊이 추정에 사용됩니다.
  • accuracy_top1: 이미지 분류에 사용됩니다.
  • 추론 시간: 각 이미지를 처리하는 데 걸리는 시간(밀리초)입니다.

지원되는 내보내기 형식#

  • ONNX: 최적의 CPU 성능을 제공합니다.
  • TensorRT: GPU 효율성을 극대화합니다.
  • OpenVINO: Intel 하드웨어 최적화에 사용됩니다.
  • CoreML, TensorFlow SavedModel 등: 다양한 배포 요구 사항을 충족합니다.
팁
  • ONNX 또는 OpenVINO로 내보내면 CPU 속도를 최대 3배 높일 수 있습니다.
  • TensorRT로 내보내면 GPU 속도를 최대 5배 높일 수 있습니다.

사용 예시#

권장 설치

누락된 패키지를 방지하려면 벤치마킹 전에 내보내기 종속 항목과 함께 Ultralytics를 설치하세요.

pip install ultralytics[export]

지원되는 모든 내보내기 형식(ONNX, TensorRT 등)에서 YOLO26n 벤치마크를 실행합니다. 내보내기 옵션 전체 목록은 아래 인수 섹션을 참조하세요.

예제
from ultralytics.utils.benchmarks import benchmark

# GPU에서 벤치마크
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

# 특정 내보내기 형식 벤치마크
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")

인수#

model, data, imgsz, quantize, device, verbose 및 format과 같은 인수를 사용하면 필요에 맞게 벤치마크를 세밀하게 조정하고 다양한 내보내기 형식의 성능을 쉽게 비교할 수 있습니다.

키기본값설명
modelNone모델 파일의 경로를 지정합니다. .pt 및 .yaml 형식을 모두 지원합니다. 예를 들어 사전 학습된 모델이나 구성 파일에는 "yolo26n.pt"를 사용할 수 있습니다.
dataNone벤치마킹에 사용할 데이터셋 YAML의 경로이며, 일반적으로 검증 데이터의 경로와 설정이 포함됩니다. 예: "coco8.yaml". 분류 작업에서는 데이터셋 디렉터리나 내장 데이터셋 이름(예: imagenet10)을 사용합니다.
imgsz640모델의 입력 이미지 크기입니다. 정사각형 이미지에는 단일 정수를 사용해야 합니다(예: 640). benchmark()은 정사각형 이미지 크기만 지원합니다.
quantizeNone요청 정밀도: 16(FP16) 또는 8(INT8; PTQ 방식에는 보정 data/fraction이 필요하지만 가중치 전용 방식에는 필요하지 않음)입니다. 32 또는 미설정 시에는 형식이 지원하는 경우 FP32가 사용됩니다. FP32 내보내기를 지원하지 않는 형식에 32를 명시하면 오류가 발생하거나 해당 형식에 필요한 정밀도로 대체됩니다. 네이티브 PyTorch 행은 내보내지 않습니다. 16만 해당 행에 영향을 주며, FP16 추론을 선택합니다. 8, 32 및 미설정은 FP32로 실행됩니다. 각 형식은 자체 런타임 정밀도로 추론을 실행합니다. 더 이상 사용되지 않는 half/int8 플래그를 대체합니다.
deviceNone벤치마킹을 위한 연산 장치를 지정합니다(예: "cpu" 또는 "cuda:0"). 설정하지 않으면 사용 가능한 첫 번째 GPU를 사용하고, GPU가 없으면 CPU를 사용합니다.
verboseFalseTrue 또는 부동 소수점 값을 지정하면 어설션을 제외한 벤치마크 실패 시 오류를 기록하는 대신 예외를 발생시킵니다. 0.25과 같은 부동 소수점 값은 성공한 각 형식의 지표가 해당 하한값을 초과하는지도 어설션합니다.
eps0.001이미지별 추론 시간에 더한 뒤 FPS로 변환하는 작은 엡실론 값(밀리초)으로, 0으로 나누는 문제를 방지합니다. 변경하는 경우는 드뭅니다.
format''지정한 내보내기 형식(예: format=onnx)만 벤치마킹합니다. 모든 지원 형식을 자동으로 테스트하려면 비워 두세요.
독립형 `benchmark()` 함수의 기본값

독립형 benchmark() 함수(from ultralytics.utils.benchmarks import benchmark)는 위 표의 값이 아니라 자체 시그니처 기본값을 사용합니다. 특히 model="yolo26n.pt", imgsz=160 및 device="cpu"가 이에 해당합니다. yolo benchmark CLI와 동일하게 설정하려면 imgsz 및 device을 명시적으로 전달하세요.

내보내기 형식#

아래에 나열된 가능한 모든 내보내기 형식에서 벤치마크 실행을 자동으로 시도합니다. 또는 format 인수를 사용하여 특정 형식의 벤치마크를 실행할 수 있으며, 이 인수에는 아래에 언급된 형식을 지정할 수 있습니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n.pt✅-
TorchScripttorchscriptyolo26n.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None은 외부 NMS를 위한 원시 출력을 기본값으로 사용합니다. 사용 가능한 NMS-free head를 선택하려면 nms=False을 설정합니다. 지원되지 않는 형식은 해당 형식의 기본 출력 경로로 대체됩니다. 위의 nms 항목은 nms=True을 사용해 NMS를 포함할 수 있는 형식을 나타냅니다.

자세한 export 내용은 내보내기 페이지를 참조하세요.

자주 묻는 질문#

  • Ultralytics YOLO26에는 다양한 내보내기 형식에서 모델 성능을 평가하는 벤치마크 모드가 있습니다. 이 모드에서는 평균 정밀도(mAP50-95), 정확도, 밀리초 단위의 추론 시간과 같은 주요 지표를 확인할 수 있습니다. Python 또는 CLI 명령을 사용해 벤치마크를 실행할 수 있습니다. 예를 들어 GPU에서 벤치마크를 실행하려면 다음과 같이 합니다.

    예제
    from ultralytics.utils.benchmarks import benchmark
    
    # GPU에서 벤치마크
    benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

    벤치마크 인수에 대한 자세한 내용은 인수 섹션을 참조하세요.

  • YOLO26 모델을 ONNX, TensorRT, OpenVINO와 같은 다양한 형식으로 내보내면 배포 환경에 맞게 성능을 최적화할 수 있습니다. 예를 들면 다음과 같습니다.

    • ONNX: CPU 속도를 최대 3배 높입니다.
    • TensorRT: GPU 속도를 최대 5배 높입니다.
    • OpenVINO: Intel 하드웨어에 맞게 최적화됩니다.

    이러한 형식은 대상 하드웨어에서 추론 속도를 높여 다양한 실제 애플리케이션에서 모델을 더 효율적으로 사용할 수 있게 합니다. 자세한 내용은 내보내기 페이지를 참조하세요.

  • YOLO26 모델 벤치마킹은 다음과 같은 여러 이유로 중요합니다.

    • 정보에 기반한 의사 결정: 속도와 정확도 간의 절충 관계를 파악합니다.
    • 리소스 할당: 다양한 하드웨어 옵션에서의 성능을 측정합니다.
    • 최적화: 특정 사용 사례에 가장 적합한 성능을 제공하는 내보내기 형식을 확인합니다.
    • 비용 효율성: 벤치마크 결과를 바탕으로 하드웨어 사용을 최적화합니다.

    mAP50-95, Top-1 정확도, 추론 시간과 같은 주요 지표는 이러한 평가에 도움이 됩니다. 자세한 내용은 주요 지표 섹션을 참조하세요.

  • YOLO26은 다양한 내보내기 형식을 지원하며, 각 형식은 특정 하드웨어 및 사용 사례에 맞게 설계되었습니다.

    • ONNX: CPU 성능에 가장 적합합니다.
    • TensorRT: GPU 효율성에 이상적입니다.
    • OpenVINO: Intel 하드웨어에 맞게 최적화됩니다.
    • CoreML 및 TensorFlow: iOS 및 일반적인 ML 애플리케이션에 유용합니다.

    지원 형식 전체 목록과 각 형식의 장점은 지원되는 내보내기 형식 섹션을 참조하세요.

  • 벤치마크를 실행할 때 필요에 맞게 여러 인수를 사용자 지정할 수 있습니다.

    • model: 모델 파일의 경로입니다(예: "yolo26n.pt").
    • data: 데이터셋 YAML의 경로입니다(예: "coco8.yaml"). 분류 작업에서는 데이터셋 디렉터리나 내장 데이터셋 이름(예: imagenet10)을 사용합니다.
    • imgsz: 정사각형 입력 이미지 크기를 나타내는 단일 정수입니다(예: 640). 벤치마크 모드는 공정한 비교를 위해 PyTorch 및 내보낸 형식 모두에 동일한 정사각형 이미지 크기를 사용합니다.
    • quantize: 요청 정밀도입니다. FP16에는 16, INT8에는 8을 사용합니다(엣지 장치에 유용). 32 또는 미설정 시 형식이 지원하는 경우 FP32가 사용됩니다. FP32 내보내기를 지원하지 않는 형식에 32을 명시하면 오류가 발생하거나 해당 형식에 필요한 정밀도로 대체됩니다. 네이티브 PyTorch 행은 내보내지 않습니다. 16만 해당 행에 영향을 주어 FP16 추론을 선택하고, 8, 32 및 미설정은 FP32로 실행됩니다. 각 형식은 자체 런타임 정밀도로 추론을 실행합니다.
    • device: 연산 장치를 지정합니다(예: "cpu", "cuda:0").
    • verbose: 벤치마크 실패를 기록하는 대신 예외를 발생시킵니다. 부동 소수점 값을 전달하면 각 형식의 지표가 해당 하한값을 초과하도록 요구할 수도 있습니다.

    인수 전체 목록은 인수 섹션을 참조하세요.

댓글