YOLO Vision 2026:

YOLO26 모델을 위한 TensorRT 내보내기#

컴퓨터 비전 모델을 고성능 환경에 배포할 때는 속도와 효율성을 극대화할 수 있는 포맷이 필요할 수 있습니다. 이는 특히 NVIDIA GPU에 모델을 배포할 때 더욱 그렇습니다.

TensorRT 내보내기 포맷을 사용하면 NVIDIA 하드웨어에서 빠르고 효율적인 추론을 위해 Ultralytics YOLO26 모델을 최적화할 수 있습니다. 이 가이드는 변환 과정을 쉽게 따라 할 수 있는 단계별로 안내하며 딥 러닝 프로젝트에서 NVIDIA의 고급 기술을 최대한 활용할 수 있도록 도와줍니다.

TensorRT#

NVIDIA TensorRT optimization workflow

NVIDIA가 개발한 TensorRT는 고속 딥 러닝 추론을 위해 설계된 고급 소프트웨어 개발 Kit (SDK)입니다. 이는 객체 감지와 같은 실시간 애플리케이션에 매우 적합합니다.

이 툴킷은 NVIDIA GPU에 맞게 딥러닝 모델을 최적화하여 더 빠르고 효율적인 작동을 가능하게 합니다. TensorRT 모델은 레이어 퓨전, 정밀도 보정(INT8 및 FP16), 동적 텐서 메모리 관리, 커널 자동 튜닝과 같은 기술을 포함하는 TensorRT 최적화를 거칩니다. 딥러닝 모델을 TensorRT 형식으로 변환하면 개발자는 NVIDIA GPU의 잠재력을 완전히 실현할 수 있습니다.

TensorRT는 TensorFlow, PyTorch, ONNX를 포함한 다양한 모델 포맷과의 호환성으로 잘 알려져 있으며, 개발자에게 서로 다른 프레임워크의 모델을 통합하고 최적화할 수 있는 유연한 솔루션을 제공합니다. 이러한 범용성 덕분에 다양한 하드웨어 및 소프트웨어 환경에서 효율적인 모델 배포가 가능합니다.

TensorRT 엔진은 하드웨어 및 런타임에 종속적입니다.

TensorRT는 빌드 GPU에서 엔진을 프로파일링하고 튜닝합니다. 배포 GPU 아키텍처에 맞게 빌드하고 TensorRT/CUDA 런타임과 일치시키세요. .engine 파일을 휴대 가능한 모델 포맷으로 취급하지 마세요. 엣지 배포의 경우, Ultralytics 플랫폼은 8가지 Jetson 타겟 선택 항목을 제공하며, 각 항목에 대해 실제 빌드 및 검증 상태가 문서화되어 있거나 대상 장치에서 로컬로 내보낼 수 있습니다.

TensorRT 모델의 주요 기능#

TensorRT 모델은 고속 딥러닝 추론에서 효율성과 효과를 높이는 다양한 핵심 기능을 제공합니다:

  • 정밀도 보정: TensorRT는 정밀도 보정을 지원하여 특정 정확도 요구 사항에 맞게 모델을 미세 조정할 수 있습니다. 여기에는 INT8 및 FP16과 같이 낮은 정밀도 형식에 대한 지원이 포함되며, 이를 통해 허용 가능한 정확도 수준을 유지하면서 추론 속도를 더욱 높일 수 있습니다.

  • 레이어 퓨전: TensorRT 최적화 프로세스에는 신경망의 여러 레이어를 단일 작업으로 결합하는 레이어 퓨전이 포함됩니다. 이는 메모리 액세스와 연산을 최소화하여 연산 오버헤드를 줄이고 추론 속도를 향상시킵니다.

TensorRT neural network layer fusion optimization

  • 동적 텐서 메모리 관리: TensorRT는 추론 중에 텐서 메모리 사용을 효율적으로 관리하여 메모리 오버헤드를 줄이고 메모리 할당을 최적화합니다. 그 결과 GPU 메모리 활용도가 더욱 효율적으로 바뀝니다.

  • 자동 커널 튜닝: TensorRT는 자동 커널 튜닝을 적용하여 모델의 각 레이어에 대해 가장 최적화된 GPU 커널을 선택합니다. 이러한 적응형 접근 방식은 모델이 GPU의 계산 능력을 최대한 활용하도록 보장합니다.

TensorRT의 배포 옵션#

YOLO26 모델을 TensorRT 형식으로 내보내기 위한 코드를 살펴보기 전에, TensorRT 모델이 일반적으로 어디에 사용되는지 이해해 보겠습니다.

TensorRT는 여러 배포 옵션을 제공하며, 각 옵션은 통합의 용이성, 성능 최적화, 유연성 간의 균형이 다릅니다:

  • TensorFlow 내 배포: 이 방법은 TensorRT를 TensorFlow에 통합하여 최적화된 모델이 친숙한 TensorFlow 환경에서 실행되도록 합니다. TF-TRT가 지원 및 미지원 레이어의 혼합을 효율적으로 처리할 수 있으므로 이러한 모델에 유용합니다.

NVIDIA TensorRT optimization workflow

  • 독립형 TensorRT Runtime API: 세밀한 제어가 가능하며 성능이 중요한 애플리케이션에 이상적입니다. 더 복잡하지만 지원되지 않는 연산자를 직접 구현할 수 있습니다.

  • NVIDIA Triton Inference Server: 다양한 프레임워크의 모델을 지원하는 옵션입니다. 클라우드 또는 에지 추론에 특히 적합하며, 동시 모델 실행 및 모델 분석과 같은 기능을 제공합니다.

지원되는 작업#

TensorRT 내보내기는 7가지 모든 Ultralytics 태스크를 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 해당 헤드가 포함된 유일한 패밀리인 YOLO26에서만 사용할 수 있습니다.

작업YOLOv8YOLO11YOLO26
Detect
세그먼트
시맨틱
깊이
분류
Pose
OBB

YOLO26 모델을 TensorRT로 내보내기#

YOLO26 모델을 TensorRT 형식으로 변환하여 실행 효율성을 개선하고 성능을 최적화할 수 있습니다.

설치#

필수 패키지를 설치하려면 다음을 실행하십시오:

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

설치 과정과 관련된 자세한 지침과 모범 사례를 보려면 YOLO26 설치 가이드를 확인하세요. YOLO26에 필요한 패키지를 설치하는 동안 문제가 발생하면 일반적인 문제 가이드를 참조하여 해결책과 팁을 확인하세요.

사용법#

사용법을 살펴보기 전에 YOLO26 models offered by Ultralytics에서 제공하는 다양한 모델들을 꼭 확인해 보세요. 이를 통해 프로젝트 요구사항에 가장 적합한 모델을 선택할 수 있습니다.

TensorRT 포맷은 Export, Predict, Validate 모드를 지원합니다. 추론과 검증에는 NVIDIA GPU가 필요합니다. 모델을 내보낸 후 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하세요.

내보내기(Export)
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo26n.engine'
추론(Predict)
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
검증
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

내보내기 인수#

인수유형기본값설명
formatstr'engine'내보낸 모델의 대상 형식이며, 다양한 배포 환경과의 호환성을 정의합니다.
imgszint 또는 tuple640모델 입력에 사용할 원하는 이미지 크기입니다. 정방형 이미지의 경우 정수일 수 있으며, 특정 치수의 경우 튜플 (height, width)일 수 있습니다.
quantizeint 또는 strNone양자화 정밀도: 16(FP16) 또는 8(INT8/PTQ; 캘리브레이션 data/fraction 필요); 32/설정 안 함은 FP32입니다. 지원이 중단된 half/int8 플래그를 대체합니다.
dynamicboolFalse동적 입력 크기를 허용하여 다양한 이미지 크기를 처리하는 데 유연성을 높입니다.
simplifyboolTrueonnxslim(으)로 모델 그래프를 단순화하여 성능과 호환성을 잠재적으로 향상시킵니다.
opsetintNone중간 ONNX 그래프에 대한 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다.
workspacefloat 또는 NoneNoneTensorRT 최적화를 위해 GiB 단위의 최대 워크스페이스 크기를 설정하여 메모리 사용량과 성능의 균형을 맞춥니다. 장치 최대값까지 TensorRT가 자동으로 할당하도록 하려면 None을 사용하세요.
nmsboolFalse정확하고 효율적인 탐지 후처리에 필수적인 NMS(Non-Maximum Suppression)를 추가합니다.
batchint1내보낸 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다.
datastr'coco8.yaml'양자화에 필수적인 데이터셋 설정 파일의 경로 (기본값: coco8.yaml).
fractionfloat1.0INT8 양자화 보정에 사용할 데이터셋의 비율을 지정합니다. 전체 데이터셋의 하위 집합으로 보정할 수 있게 하여 실험이나 리소스가 제한된 경우에 유용합니다. INT8을 활성화하고 지정하지 않으면 전체 데이터셋이 사용됩니다.
devicestrNone내보낼 장치를 지정합니다: GPU (device=0), NVIDIA Jetson용 DLA (device=dla:0 또는 device=dla:1).

TensorRT로 내보낼 때는 CUDA를 지원하는 GPU를 사용해야 합니다.

TensorRT 11.0 및 DLA

TensorRT 11.0은 DLA를 지원하지 않습니다. device=dla:0 또는 device=dla:1에는 TensorRT 10.x를 사용하거나 TensorRT 11.0 GPU 엔진을 내보내세요.

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

INT8 양자화로 TensorRT 내보내기#

INT8 정밀도를 사용하여 TensorRT로 Ultralytics YOLO 모델을 내보내면 사후 학습 양자화(PTQ)가 실행됩니다. TensorRT는 PTQ를 위해 캘리브레이션을 사용하며, 이는 YOLO 모델이 대표 입력 데이터에 대해 추론을 처리할 때 각 활성화 텐서 내의 활성화 분포를 측정하고, 해당 분포를 사용하여 각 텐서의 스케일 값을 추정합니다. 양자화 후보인 각 활성화 텐서에는 캘리브레이션 프로세스를 통해 도출된 연관된 스케일이 있습니다.

TensorRT 11 양자화

TensorRT 11에서는 암시적 양자화와 IInt8Calibrator 인터페이스가 제거되었습니다. TensorRT 11 이상에서는 Ultralytics가 NVIDIA ModelOpt 명시적 양자화를 통해 INT8 양자화를 수행하며, 이는 엄격한 타입의 엔진을 빌드하기 전에 ONNX 그래프에 Q/DQ 노드를 삽입하고, FP16은 ModelOpt AutoCast 혼합 정밀도 변환으로 적용됩니다. quantize=8, quantize=16, data 인수는 동일하게 작동하며, ModelOpt는 최초 사용 시 자동으로 설치됩니다. TensorRT 7-10에서는 아래에 설명된 레거시 캘리브레이터가 대신 사용됩니다.

암시적으로 양자화된 네트워크를 처리할 때 TensorRT는 레이어 실행 시간을 최적화하기 위해 기회주의적으로 INT8을 사용합니다. 레이어가 INT8에서 더 빠르게 실행되고 데이터 입력 및 출력에 양자화 배율이 할당된 경우, 해당 레이어에는 INT8 정밀도의 커널이 할당됩니다. 그렇지 않은 경우 TensorRT는 해당 레이어의 실행 시간이 더 빠른 FP32 또는 FP16 정밀도 중 하나를 선택합니다.

보정 결과는 장치마다 다를 수 있으므로, 배포 시 TensorRT 모델 가중치를 사용할 동일한 장치에서 INT8 정밀도로 내보내기를 수행하는 것이 매우 중요합니다.

INT8 내보내기 구성#

Ultralytics YOLO 모델에 export를 사용할 때 제공되는 인수는 내보낸 모델의 성능에 영향을 미칩니다. 또한 사용 가능한 장치 리소스에 따라 선택해야 하지만, 기본 인수는 Ampere(또는 그 이후) NVIDIA 외장 GPU 대부분에서 작동해야 합니다. GPU 내보내기에 사용되는 캘리브레이션 알고리즘은 "MINMAX_CALIBRATION"이며, NVIDIA Jetson의 DLA 내보내기는 "ENTROPY_CALIBRATION_2"을 사용합니다. 사용 가능한 옵션에 대한 자세한 내용은 TensorRT 개발자 가이드에서 확인할 수 있습니다. Ultralytics 테스트에서는 GPU 내보내기에 "MINMAX_CALIBRATION"가 가장 좋은 선택임을 확인했으며, 알고리즘은 내보내기 장치에 따라 자동으로 선택됩니다.

  • workspace : 모델 가중치를 변환하는 동안 장치 메모리 할당 크기(GiB 단위)를 제어합니다.

    • 캘리브레이션 니즈와 리소스 가용성에 따라 workspace 값을 조정하세요. workspace이 클수록 캘리브레이션 시간이 늘어날 수 있지만, TensorRT가 더 넓은 범위의 최적화 전략을 탐색할 수 있게 하여 모델 성능과 정확도를 잠재적으로 향상시킵니다. 반대로 workspace이 작으면 캘리브레이션 시간은 줄어들지만 최적화 전략이 제한되어 양자화된 모델의 품질에 영향을 미칠 수 있습니다.

    • 기본값은 workspace=None이며, 이를 통해 TensorRT가 메모리를 자동으로 할당할 수 있습니다. 수동으로 설정할 때 캘리브레이션이 중단(경고 없이 종료)되는 경우 이 값을 늘려야 할 수 있습니다.

    • TensorRT는 workspace 값이 디바이스에서 사용 가능한 메모리보다 클 경우 내보내기 중에 UNSUPPORTED_STATE을 보고합니다. 즉, workspace의 값을 낮추거나 None(으)로 설정해야 합니다.

    • workspace이 최대값으로 설정되어 있고 캘리브레이션이 실패하거나 중단되는 경우, 자동 할당을 위해 None을 사용하거나 imgszbatch의 값을 줄여 메모리 요구 사항을 낮추는 것을 고려하세요.

    • 기억하십시오. INT8을 위한 보정은 각 장치마다 고유합니다. 보정을 위해 "고성능" GPU를 빌려 사용할 경우 다른 장치에서 추론을 실행할 때 성능이 저하될 수 있습니다.

  • batch : 추론에 사용할 최대 배치 크기입니다. 추론 시 더 작은 배치를 사용할 수 있지만, 지정된 것보다 큰 배치는 추론에 사용할 수 없습니다.

참고

작은 배치를 사용하면 INT8 캘리브레이션 중에 부정확한 스케일링이 발생할 수 있습니다. 프로세스가 감지된 데이터를 기반으로 조정되기 때문입니다. 작은 배치는 전체 값 범위를 포착하지 못해 최종 캘리브레이션에 문제를 일으킬 수 있습니다. 더 큰 배치 크기를 사용하면 더 대표성 있는 캘리브레이션 결과를 보장하는 데 도움이 됩니다.

NVIDIA의 실험에 따르면 INT8 양자화 캘리브레이션을 사용할 때 모델 데이터의 특성을 잘 나타내는 최소 500장의 캘리브레이션 이미지를 사용하는 것이 권장됩니다. 이는 가이드일 뿐 엄격한 요구사항은 아니며, 데이터셋에서 좋은 성능을 내기 위해 무엇이 필요한지 직접 실험해 보아야 합니다. TensorRT를 사용한 INT8 캘리브레이션에는 캘리브레이션 데이터가 필요하므로, TensorRT용 quantize=8을 사용할 때 data 인수를 반드시 사용하고 캘리브레이션에 validation의 이미지를 사용할 data="my_dataset.yaml"를 사용하십시오. INT8 양자화로 TensorRT에 내보내기할 때 data에 값이 전달되지 않으면, 오류를 발생하는 대신 모델 태스크를 기반으로 한 "소규모" 예제 데이터셋 중 하나를 사용하는 것이 기본값으로 적용됩니다.

예시
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(
    format="engine",
    dynamic=True,  # (1)!
    batch=8,  # (2)!
    workspace=4,  # (3)!
    quantize=8,
    data="coco.yaml",  # (4)!
)

# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. 동적 축을 사용한 내보내기이며, 명시적으로 설정하지 않아도 quantize=8으로 내보낼 때 기본적으로 활성화됩니다. 추가 정보는 내보내기 인수를 참조하세요.
  2. 내보낸 모델과 INT8 보정을 위해 최대 배치 크기를 8로 설정합니다.
  3. 변환 과정을 위해 장치 전체를 할당하는 대신 4 GiB의 메모리를 할당합니다.
  4. 캘리브레이션을 위해 COCO 데이터셋, 특히 검증에 사용되는 이미지(총 5,000장)를 사용합니다.
보정 캐시

TensorRT는 동일한 데이터를 사용하여 향후 모델 가중치 내보내기 속도를 높이는 데 재사용할 수 있는 캘리브레이션 .cache을 생성하지만, 데이터가 크게 다르거나 batch 값이 급격하게 변경되면 캘리브레이션이 저하될 수 있습니다. 이러한 상황에서는 기존 .cache의 이름을 변경하고 다른 디렉토리로 이동하거나 완전히 삭제해야 합니다.

YOLO와 TensorRT INT8 사용의 장점#

  • 모델 크기 축소: FP32에서 INT8로 양자화하면 모델 크기를 4배(디스크 또는 메모리에서) 줄일 수 있어 다운로드 시간이 빨라지고, 저장 공간 요구 사항이 낮아지며, 모델 배포 시 메모리 점유율이 감소합니다.

  • 전력 소비 감소: INT8로 내보낸 YOLO 모델의 정밀도가 낮아진 연산은 FP32 모델에 비해 특히 배터리로 작동하는 장치에서 전력을 덜 소비할 수 있습니다.

  • 추론 속도 향상: TensorRT는 대상 하드웨어에 맞춰 모델을 최적화하여 GPU, 임베디드 장치, 가속기에서 더 빠른 추론 속도를 유도할 수 있습니다.

추론 속도에 대한 참고 사항

TensorRT INT8로 내보낸 모델의 처음 몇 번의 추론 호출은 평소보다 전처리, 추론 및/또는 후처리 시간이 길어질 수 있습니다. 이는 추론 중에 imgsz을 변경할 때, 특히 imgsz이 내보내기 중에 지정된 것과 일치하지 않을 때(내보내기 imgsz가 TensorRT "최적" 프로필로 설정된 경우) 발생할 수 있습니다.

YOLO와 TensorRT INT8 사용의 단점#

  • 평가 지표 감소: 낮은 정밀도를 사용한다는 것은 mAP, Precision, Recall 또는 모델 성능을 평가하는 데 사용되는 기타 지표가 다소 저하될 수 있음을 의미합니다. 시그모이드 레이어는 점수 캘리브레이션을 유지하기 위해 더 높은 정밀도로 유지되지만, INT8은 여전히 신뢰도 값을 변화시킬 수 있으므로 INT8 모델 자체의 F1 곡선에서 작동 임계값을 선택하십시오. 다양한 디바이스의 소규모 샘플에서 INT8로 내보낼 때 mAP50mAP50-95의 차이를 비교하려면 Performance results section을 참조하십시오.

  • 개발 시간 증가: 데이터셋과 장치에 맞는 "최적"의 INT8 보정 설정을 찾는 데는 상당한 테스트 시간이 걸릴 수 있습니다.

  • 하드웨어 의존성: 보정 및 성능 향상은 하드웨어에 크게 의존할 수 있으며 모델 가중치의 이식성이 낮아집니다.

Ultralytics YOLO TensorRT 내보내기 성능#

NVIDIA A100#

성능

Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1로 테스트됨

COCO로 학습되었으며 80개의 사전 학습된 클래스를 포함하는 이러한 모델의 사용 예시는 Detection Docs를 참조하십시오.

참고

사전 학습된 가중치 yolov8n.engine을(를) 사용하여 각 테스트에 대해 표시된 mean, min(가장 빠름), max(가장 느림)의 추론 시간

정밀도평가 테스트평균
(ms)
최소 | 최대
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch크기
(픽셀)
FP32추론(Predict)0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16추론(Predict)0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8추론(Predict)0.280.27 | 0.318640
INT8COCOval0.290.470.331640

소비자용 GPU#

탐지 성능 (COCO)

Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6로 테스트됨

참고

사전 학습된 가중치 yolov8n.engine을(를) 사용하여 각 테스트에 대해 표시된 mean, min(가장 빠름), max(가장 느림)의 추론 시간

정밀도평가 테스트평균
(ms)
최소 | 최대
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch크기
(픽셀)
FP32추론(Predict)1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16추론(Predict)0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8추론(Predict)0.520.38 | 1.008640
INT8COCOval0.740.470.331640

임베디드 장치#

탐지 성능 (COCO)

JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1로 테스트됨

참고

사전 학습된 가중치 yolov8n.engine을(를) 사용하여 각 테스트에 대해 표시된 mean, min(가장 빠름), max(가장 느림)의 추론 시간

정밀도평가 테스트평균
(ms)
최소 | 최대
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch크기
(픽셀)
FP32추론(Predict)6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16추론(Predict)3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8추론(Predict)2.302.29 | 2.358640
INT8COCOval2.320.460.321640
정보

설정 및 구성에 대해 자세히 알아보려면 NVIDIA Jetson 및 Ultralytics YOLO 퀵스타트 가이드를 참조하세요.

정보

설정 및 구성에 대해 자세히 알아보려면 NVIDIA DGX Spark 및 Ultralytics YOLO 퀵스타트 가이드를 참조하세요.

평가 방법#

이 모델들이 어떻게 내보내지고 테스트되었는지에 대한 정보를 보려면 아래 섹션을 펼치십시오.

내보내기 구성

내보내기 구성 인수에 대한 자세한 내용은 내보내기 모드를 참조하세요.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)

# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=16)

# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)
예측 루프

추가 정보는 예측 모드를 참조하세요.

import cv2

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")

for _ in range(100):
    result = model.predict(
        [img] * 8,  # batch=8 of the same image
        verbose=False,
        device="cuda",
    )
검증 구성

검증 구성 인수에 대한 자세한 내용은 val 모드를 참조하세요.

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

내보낸 YOLO26 TensorRT 모델 배포#

Ultralytics YOLO26 모델을 TensorRT 형식으로 성공적으로 내보냈으므로, 이제 배포할 준비가 되었습니다. 다양한 환경에서 TensorRT 모델을 배포하는 방법에 대한 자세한 지침은 다음 리소스를 참조하십시오:

요약#

이 가이드에서는 Ultralytics YOLO26 모델을 NVIDIA의 TensorRT 모델 형식으로 변환하는 데 중점을 두었습니다. 이 변환 단계는 YOLO26 모델의 효율성과 속도를 향상시켜 다양한 배포 환경에서 더욱 효과적으로 사용할 수 있도록 만드는 데 중요합니다.

사용 세부 정보에 대한 자세한 내용은 TensorRT 공식 문서를 확인하세요.

추가적인 Ultralytics YOLO26 통합에 관심이 있으시다면, 통합 가이드 페이지에서 유용한 리소스와 인사이트를 다양하게 제공하고 있습니다.

FAQ#

YOLO26 모델을 어떻게 TensorRT 형식으로 변환합니까?#

최적화된 NVIDIA GPU 추론을 위해 Ultralytics YOLO26 모델을 TensorRT 형식으로 변환하려면 다음 단계를 따르십시오:

  1. 필수 패키지 설치:

    pip install ultralytics
  2. YOLO26 모델 내보내기:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="engine")  # creates 'yolo26n.engine'
    
    # Run inference
    model = YOLO("yolo26n.engine")
    results = model("https://ultralytics.com/images/bus.jpg")

자세한 내용은 YOLO26 설치 가이드내보내기 문서를 방문하여 확인하세요.

YOLO26 모델에 TensorRT를 사용할 때의 이점은 무엇입니까?#

TensorRT를 사용하여 YOLO26 모델을 최적화하면 다음과 같은 이점이 있습니다:

  • 더 빠른 추론 속도: TensorRT는 모델 레이어를 최적화하고 정밀도 보정(INT8 및 FP16)을 사용하여 정확도 저하를 최소화하면서 추론 속도를 높입니다.
  • 메모리 효율성: TensorRT는 텐서 메모리를 동적으로 관리하여 오버헤드를 줄이고 GPU 메모리 활용도를 향상합니다.
  • 레이어 퓨전(Layer Fusion): 여러 레이어를 단일 작업으로 결합하여 계산 복잡성을 줄입니다.
  • 커널 자동 튜닝: 각 모델 레이어에 최적화된 GPU 커널을 자동으로 선택하여 최대 성능을 보장합니다.

자세히 알아보려면 NVIDIA의 공식 TensorRT 문서심층적인 TensorRT 개요를 살펴보세요.

YOLO26 모델에 TensorRT를 사용하여 INT8 양자화를 사용할 수 있습니까?#

예, INT8 양자화를 적용한 TensorRT를 사용하여 YOLO26 모델을 내보낼 수 있습니다. 이 프로세스에는 학습 후 양자화(PTQ) 및 보정이 포함됩니다:

  1. INT8로 내보내기:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml")
  2. 추론 실행:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.engine", task="detect")
    result = model.predict("https://ultralytics.com/images/bus.jpg")

자세한 내용은 INT8 양자화로 TensorRT 내보내기 섹션을 참조하세요.

NVIDIA Triton Inference Server에 YOLO26 TensorRT 모델을 배포하려면 어떻게 해야 합니까?#

NVIDIA Triton Inference Server에 YOLO26 TensorRT 모델을 배포하는 작업은 다음 리소스를 사용하여 수행할 수 있습니다:

이 가이드들은 다양한 배포 환경에서 YOLO26 모델을 효율적으로 통합하는 데 도움이 될 것입니다.

TensorRT로 내보낸 YOLO26 모델에서 관찰되는 성능 개선 사항은 무엇입니까?#

TensorRT를 통한 성능 개선은 사용된 하드웨어에 따라 달라질 수 있습니다. 다음은 일반적인 벤치마크 결과입니다:

  • NVIDIA A100:

    • FP32 추론: ~0.52 ms / 이미지
    • FP16 추론: ~0.34 ms / 이미지
    • INT8 추론: ~0.28 ms / 이미지
    • INT8 정밀도에서 mAP는 약간 감소하지만 속도는 크게 향상됩니다.
  • 소비자용 GPU (예: RTX 3080):

    • FP32 추론: ~1.06 ms / 이미지
    • FP16 추론: ~0.62 ms / 이미지
    • INT8 추론: ~0.52 ms / 이미지

다양한 하드웨어 구성에 대한 상세한 성능 벤치마크는 성능 섹션에서 확인할 수 있습니다.

TensorRT 성능에 대한 보다 포괄적인 인사이트는 Ultralytics 문서 및 성능 분석 리포트를 참조하세요.

댓글