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요청된 정밀도: FP16의 경우 16, INT8의 경우 8(PTQ 방식은 보정용 data/fraction이 필요하지만 가중치 전용 방식은 필요하지 않음)입니다. 32/설정되지 않음은 해당 형식에서 지원되는 경우 FP32를 의미합니다. FP32로 내보낼 수 없는 형식은 명시적으로 지정된 32를 거부하거나 필요한 정밀도로 대체합니다. 네이티브 PyTorch 행은 내보내지 않습니다. 16만 이 행에 적용되며, CPU가 아닌 장치에서 FP16 추론을 선택합니다. 그렇지 않으면 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
IMX500imxyolo11n_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를 위해 기본적으로 원시 출력을 사용합니다(YOLO26은 Axelera에서 NMS가 필요 없는 헤드를 유지합니다). 사용 가능한 NMS가 필요 없는 헤드를 선택하려면 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만 이 행에 적용되며, CPU가 아닌 장치에서 FP16 추론을 선택합니다. 그렇지 않으면 FP32로 실행됩니다. 각 형식은 이후 자체 런타임 정밀도로 추론을 실행합니다.
    • device: 연산 장치를 지정합니다(예: "cpu", "cuda:0").
    • verbose: 벤치마크 실패를 기록하는 대신 예외를 발생시킵니다. 부동 소수점 값을 전달하면 각 형식의 지표가 해당 하한값을 초과하도록 요구할 수도 있습니다.

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

댓글