μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

TensorRT YOLOv8 λͺ¨λΈμš© 내보내기

κ³ μ„±λŠ₯ ν™˜κ²½μ—μ„œ 컴퓨터 λΉ„μ „ λͺ¨λΈμ„ λ°°ν¬ν•˜λ €λ©΄ 속도와 νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” ν˜•μ‹μ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 특히 NVIDIA GPU에 λͺ¨λΈμ„ 배포할 λ•ŒλŠ” λ”μš± κ·Έλ ‡μŠ΅λ‹ˆλ‹€.

TensorRT 내보내기 ν˜•μ‹μ„ μ‚¬μš©ν•˜λ©΄ λͺ¨λΈμ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. Ultralytics YOLOv8 λͺ¨λΈμ„ ν–₯μƒμ‹œμΌœ NVIDIA ν•˜λ“œμ›¨μ–΄μ—μ„œ λΉ λ₯΄κ³  효율적으둜 μΆ”λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ°€μ΄λ“œλŠ” λ³€ν™˜ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ μ‰½κ²Œ 따라할 수 μžˆλŠ” 단계λ₯Ό μ œκ³΅ν•˜λ©° λ”₯ λŸ¬λ‹ ν”„λ‘œμ νŠΈμ—μ„œ NVIDIA의 κ³ κΈ‰ κΈ°μˆ μ„ μ΅œλŒ€ν•œ ν™œμš©ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

TensorRT

TensorRT κ°œμš”

TensorRTλŠ” 고속 λ”₯ λŸ¬λ‹ 좔둠을 μœ„ν•΄ μ„€κ³„λœ κ³ κΈ‰ μ†Œν”„νŠΈμ›¨μ–΄ 개발 ν‚€νŠΈ(SDK)둜, NVIDIAμ—μ„œ κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€. 물체 감지와 같은 μ‹€μ‹œκ°„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•©ν•©λ‹ˆλ‹€.

TensorRT λͺ¨λΈμ€ λ ˆμ΄μ–΄ 퓨전, μ •λ°€ 보정(INT8 및 FP16), 동적 tensor λ©”λͺ¨λ¦¬ 관리, 컀널 μžλ™ νŠœλ‹κ³Ό 같은 κΈ°μˆ μ„ ν¬ν•¨ν•˜λŠ” TensorRT μ΅œμ ν™”λ₯Ό 거치게 되며, 이 νˆ΄ν‚·μ€ NVIDIA GPU에 맞게 λ”₯ λŸ¬λ‹ λͺ¨λΈμ„ μ΅œμ ν™”ν•˜μ—¬ 더 λΉ λ₯΄κ³  효율적인 μž‘μ—…μ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. λ”₯ λŸ¬λ‹ λͺ¨λΈμ„ TensorRT ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λ©΄ κ°œλ°œμžλŠ” NVIDIA GPU의 잠재λ ₯을 μ™„μ „νžˆ μ‹€ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

TensorRT λŠ” TensorFlow, PyTorch, ONNX λ“± λ‹€μ–‘ν•œ λͺ¨λΈ ν˜•μ‹κ³Όμ˜ ν˜Έν™˜μ„±μœΌλ‘œ 잘 μ•Œλ €μ Έ 있으며, κ°œλ°œμžμ—κ²Œ λ‹€μ–‘ν•œ ν”„λ ˆμž„μ›Œν¬μ˜ λͺ¨λΈμ„ ν†΅ν•©ν•˜κ³  μ΅œμ ν™”ν•  수 μžˆλŠ” μœ μ—°ν•œ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ‹€μš©λ„μ„± 덕뢄에 λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄ 및 μ†Œν”„νŠΈμ›¨μ–΄ ν™˜κ²½μ—μ„œ 효율적으둜 λͺ¨λΈμ„ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

TensorRT λͺ¨λΈμ˜ μ£Όμš” κΈ°λŠ₯

TensorRT λͺ¨λΈμ€ 고속 λ”₯λŸ¬λ‹ μΆ”λ‘ μ˜ νš¨μœ¨μ„±κ³Ό νš¨κ³Όμ— κΈ°μ—¬ν•˜λŠ” λ‹€μ–‘ν•œ μ£Όμš” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€:

  • μ •λ°€ 보정: TensorRT 은 μ •λ°€ 보정을 μ§€μ›ν•˜μ—¬ νŠΉμ • 정확도 μš”κ±΄μ— 맞게 λͺ¨λΈμ„ λ―Έμ„Έ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” ν—ˆμš© κ°€λŠ₯ν•œ 정확도 μˆ˜μ€€μ„ μœ μ§€ν•˜λ©΄μ„œ μΆ”λ‘  속도λ₯Ό λ”μš± 높일 수 μžˆλŠ” INT8 및 FP16κ³Ό 같은 κ°μ†Œλœ 정밀도 ν˜•μ‹μ— λŒ€ν•œ 지원이 ν¬ν•¨λ©λ‹ˆλ‹€.

  • λ ˆμ΄μ–΄ 퓨전: TensorRT μ΅œμ ν™” ν”„λ‘œμ„ΈμŠ€μ—λŠ” μ‹ κ²½λ§μ˜ μ—¬λŸ¬ λ ˆμ΄μ–΄λ₯Ό 단일 μž‘μ—…μœΌλ‘œ κ²°ν•©ν•˜λŠ” λ ˆμ΄μ–΄ 퓨전이 ν¬ν•¨λ©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ©”λͺ¨λ¦¬ μ•‘μ„ΈμŠ€ 및 계산을 μ΅œμ†Œν™”ν•˜μ—¬ 계산 μ˜€λ²„ν—€λ“œλ₯Ό 쀄이고 μΆ”λ‘  속도λ₯Ό ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

TensorRT λ ˆμ΄μ–΄ 퓨전

  • 동적 Tensor λ©”λͺ¨λ¦¬ 관리: TensorRT μΆ”λ‘  쀑 tensor λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ 효율적으둜 κ΄€λ¦¬ν•˜μ—¬ λ©”λͺ¨λ¦¬ μ˜€λ²„ν—€λ“œλ₯Ό 쀄이고 λ©”λͺ¨λ¦¬ 할당을 μ΅œμ ν™”ν•©λ‹ˆλ‹€. κ·Έ κ²°κ³Ό GPU λ©”λͺ¨λ¦¬ μ‚¬μš©λ₯ μ΄ λ”μš± νš¨μœ¨μ μž…λ‹ˆλ‹€.

  • μžλ™ 컀널 νŠœλ‹: TensorRT 은 μžλ™ 컀널 νŠœλ‹μ„ μ μš©ν•˜μ—¬ λͺ¨λΈμ˜ 각 λ ˆμ΄μ–΄μ— κ°€μž₯ μ΅œμ ν™”λœ GPU 컀널을 μ„ νƒν•©λ‹ˆλ‹€. 이 μ μ‘ν˜• μ ‘κ·Ό 방식은 λͺ¨λΈμ΄ GPU의 μ—°μ‚° λŠ₯λ ₯을 μ΅œλŒ€ν•œ ν™œμš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

배포 μ˜΅μ…˜ TensorRT

YOLOv8 λͺ¨λΈμ„ TensorRT ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λ‚΄λŠ” μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄κΈ° 전에 TensorRT λͺ¨λΈμ΄ 일반적으둜 μ‚¬μš©λ˜λŠ” μœ„μΉ˜λ₯Ό 이해해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

TensorRT λŠ” μ—¬λŸ¬ 가지 배포 μ˜΅μ…˜μ„ μ œκ³΅ν•˜λ©°, 각 μ˜΅μ…˜μ€ ν†΅ν•©μ˜ μš©μ΄μ„±, μ„±λŠ₯ μ΅œμ ν™”, μœ μ—°μ„± κ°„μ˜ κ· ν˜•μ„ λ‹€λ₯΄κ²Œ μœ μ§€ν•©λ‹ˆλ‹€:

  • TensorFlow 내에 배포: 이 방법은 TensorRT 을 TensorFlow 에 ν†΅ν•©ν•˜μ—¬ μ΅μˆ™ν•œ TensorFlow ν™˜κ²½μ—μ„œ μ΅œμ ν™”λœ λͺ¨λΈμ„ μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. 이 방법은 μ§€μ›λ˜λŠ” λ ˆμ΄μ–΄μ™€ μ§€μ›λ˜μ§€ μ•ŠλŠ” λ ˆμ΄μ–΄κ°€ ν˜Όν•©λœ λͺ¨λΈμ— μœ μš©ν•˜λ©°, TF-TRTκ°€ 이λ₯Ό 효율적으둜 μ²˜λ¦¬ν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

TensorRT κ°œμš”

  • λ…λ¦½ν˜• TensorRT λŸ°νƒ€μž„ API: μ„ΈλΆ„ν™”λœ μ œμ–΄ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ μ„±λŠ₯이 μ€‘μš”ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ΄μƒμ μž…λ‹ˆλ‹€. 더 λ³΅μž‘ν•˜μ§€λ§Œ μ§€μ›λ˜μ§€ μ•ŠλŠ” μ—°μ‚°μžλ₯Ό μ‚¬μš©μž μ§€μ •μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • NVIDIA Triton μΆ”λ‘  μ„œλ²„: λ‹€μ–‘ν•œ ν”„λ ˆμž„μ›Œν¬μ˜ λͺ¨λΈμ„ μ§€μ›ν•˜λŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€. 특히 ν΄λΌμš°λ“œ λ˜λŠ” 엣지 좔둠에 μ ν•©ν•˜λ©°, λ™μ‹œ λͺ¨λΈ μ‹€ν–‰ 및 λͺ¨λΈ 뢄석과 같은 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

YOLOv8 λͺ¨λΈμ„ λ‹€μŒ μ£Όμ†Œλ‘œ 내보내기 TensorRT

YOLOv8 λͺ¨λΈμ„ TensorRT ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ μ‹€ν–‰ νš¨μœ¨μ„±μ„ 높이고 μ„±λŠ₯을 μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μΉ˜

ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ μ‹€ν–‰ν•©λ‹ˆλ‹€:

μ„€μΉ˜

# Install the required package for YOLOv8
pip install ultralytics

μ„€μΉ˜ κ³Όμ •κ³Ό κ΄€λ ¨λœ μžμ„Έν•œ 지침 및 λͺ¨λ²” μ‚¬λ‘€λŠ” YOLOv8 μ„€μΉ˜ κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. YOLOv8 에 ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λŠ” λ™μ•ˆ λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ 일반적인 문제 κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ—¬ ν•΄κ²° 방법과 νŒμ„ ν™•μΈν•˜μ„Έμš”.

μ‚¬μš©λ²•

μ‚¬μš© 지침을 μ‚΄νŽ΄λ³΄κΈ° 전에 Ultralytics μ—μ„œ μ œκ³΅ν•˜λŠ” λ‹€μ–‘ν•œ YOLOv8 λͺ¨λΈμ„ ν™•μΈν•˜μ„Έμš”. ν”„λ‘œμ νŠΈ μš”κ΅¬μ‚¬ν•­μ— κ°€μž₯ μ ν•©ν•œ λͺ¨λΈμ„ μ„ νƒν•˜λŠ” 데 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

μ‚¬μš©λ²•

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Export the model to TensorRT format
model.export(format='engine')  # creates 'yolov8n.engine'

# Load the exported TensorRT model
tensorrt_model = YOLO('yolov8n.engine')

# Run inference
results = tensorrt_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine''

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

내보내기 μ ˆμ°¨μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 내보내기 κ΄€λ ¨ λ¬Έμ„œ νŽ˜μ΄μ§€(Ultralytics )λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

내보낸 YOLOv8 TensorRT λͺ¨λΈ 배포

Ultralytics YOLOv8 λͺ¨λΈμ„ TensorRT ν˜•μ‹μœΌλ‘œ μ„±κ³΅μ μœΌλ‘œ λ‚΄λ³΄λƒˆμœΌλ©΄ 이제 배포할 μ€€λΉ„κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ μ„€μ •μ—μ„œ TensorRT λͺ¨λΈμ„ λ°°ν¬ν•˜λŠ” 방법에 λŒ€ν•œ μžμ„Έν•œ 지침은 λ‹€μŒ λ¦¬μ†ŒμŠ€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”:

μš”μ•½

이 κ°€μ΄λ“œμ—μ„œλŠ” Ultralytics YOLOv8 λͺ¨λΈμ„ NVIDIA의 TensorRT λͺ¨λΈ ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 데 쀑점을 λ‘μ—ˆμŠ΅λ‹ˆλ‹€. 이 λ³€ν™˜ λ‹¨κ³„λŠ” YOLOv8 λͺ¨λΈμ˜ νš¨μœ¨μ„±κ³Ό 속도λ₯Ό κ°œμ„ ν•˜μ—¬ 보닀 효과적이고 λ‹€μ–‘ν•œ 배포 ν™˜κ²½μ— μ ν•©ν•˜κ²Œ λ§Œλ“œλŠ” 데 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

μ‚¬μš© 방법에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ TensorRT 곡식 λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

Ultralytics YOLOv8 톡합에 λŒ€ν•œ μΆ”κ°€ 정보가 κΆκΈˆν•˜λ‹€λ©΄, 톡합 κ°€μ΄λ“œ νŽ˜μ΄μ§€μ—μ„œ λ‹€μ–‘ν•œ λ¦¬μ†ŒμŠ€μ™€ μΈμ‚¬μ΄νŠΈλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.



생성 2024-01-28, μ—…λ°μ΄νŠΈ 2024-03-03
μž‘μ„±μž: glenn-jocher (1), abirami-vina (1)

λŒ“κΈ€