─░├žeri─če ge├ž

Ultralytics YOLOv8 DeepStream SDK kullanarak NVIDIA Jetson'da ve TensorRT

This comprehensive guide provides a detailed walkthrough for deploying Ultralytics YOLOv8 on NVIDIA Jetson devices using DeepStream SDK and TensorRT. Here we use TensorRT to maximize the inference performance on the Jetson platform.

DeepStream NVIDIA Jetson'da

Not

This guide has been tested with both Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.

NVIDIA DeepStream nedir?

NVIDIA's DeepStream SDK is a complete streaming analytics toolkit based on GStreamer for AI-based multi-sensor processing, video, audio, and image understanding. It's ideal for vision AI developers, software partners, startups, and OEMs building IVA (Intelligent Video Analytics) apps and services. You can now create stream-processing pipelines that incorporate neural networks and other complex processing tasks like tracking, video encoding/decoding, and video rendering. These pipelines enable real-time analytics on video, image, and sensor data. DeepStream's multi-platform support gives you a faster, easier way to develop vision AI applications and services on-premise, at the edge, and in the cloud.

├ľn Ko┼čullar

Bu k─▒lavuzu izlemeye ba┼člamadan ├Ânce:

─░pucu

Bu k─▒lavuzda DeepStream SDK'y─▒ Jetson cihaz─▒na y├╝klemek i├žin Debian paket y├Ântemini kulland─▒k. DeepStream'in eski s├╝r├╝mlerine eri┼čmek i├žin DeepStream SDK on Jetson (Archived) sayfas─▒n─▒ da ziyaret edebilirsiniz.

┼×unun i├žin DeepStream Yap─▒land─▒rmas─▒ YOLOv8

Here we are using marcoslucianops/DeepStream-Yolo GitHub repository which includes NVIDIA DeepStream SDK support for YOLO models. We appreciate the efforts of marcoslucianops for his contributions!

  1. Y├╝kleme ba─č─▒ml─▒l─▒klar─▒

    pip install cmake
    pip install onnxsim
    
  2. A┼ča─č─▒daki depoyu kopyalay─▒n

    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    cd DeepStream-Yolo
    
  3. YOLOv8 s├╝r├╝mlerinden se├žti─činiz Ultralytics YOLOv8 alg─▒lama modelini (.pt) indirin. Burada yolov8s.pt kullan─▒yoruz.

    wget https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt
    

    Not

    ├ľzel e─čitimli bir YOLOv8 modeli de kullanabilirsiniz.

  4. Modeli ┼čuna d├Ân├╝┼čt├╝r ONNX

    python3 utils/export_yoloV8.py -w yolov8s.pt
    

    A┼ča─č─▒daki ba─č─▒ms─▒z de─či┼čkenleri yukar─▒daki komuta iletin

    DeepStream 6.0.1 i├žin opset 12 veya daha d├╝┼č├╝k bir s├╝r├╝m├╝ kullan─▒n. Varsay─▒lan i┼člem k├╝mesi 16'd─▒r.

    --opset 12
    

    ├ç─▒kar─▒m boyutunu de─či┼čtirmek i├žin (varsay─▒lan: 640)

    -s SIZE
    --size SIZE
    -s HEIGHT WIDTH
    --size HEIGHT WIDTH
    

    1280 i├žin ├Ârnek:

    -s 1280
    or
    -s 1280 1280
    

    Basitle┼čtirmek i├žin ONNX modeli (DeepStream >= 6.0)

    --simplify
    

    Dinamik toplu i┼č boyutu kullanmak i├žin (DeepStream >= 6.1)

    --dynamic
    

    Statik toplu i┼č boyutu kullanmak i├žin (toplu i┼č boyutu = 4 i├žin ├Ârnek)

    --batch 4
    
  5. CUDA s├╝r├╝m├╝n├╝ kurulu JetPack s├╝r├╝m├╝ne g├Âre ayarlay─▒n

    JetPack 4.6.4 i├žin:

    export CUDA_VER=10.2
    

    JetPack 5.1.3 i├žin:

    export CUDA_VER=11.4
    
  6. Kitapl─▒─č─▒ derleyin

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  7. D├╝zenleyin config_infer_primary_yoloV8.txt modelinize g├Âre dosya ( YOLOv8s 80 s─▒n─▒fl─▒)

    [property]
    ...
    onnx-file=yolov8s.onnx
    ...
    num-detected-classes=80
    ...
    
  8. D├╝zenleyin deepstream_app_config dosya

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yoloV8.txt
    
  9. Video kayna─č─▒n─▒ ┼čuradan da de─či┼čtirebilirsiniz: deepstream_app_config dosya. Burada varsay─▒lan bir video dosyas─▒ y├╝klenir

    ...
    [source0]
    ...
    uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
    

├ç─▒kar─▒m─▒ ├çal─▒┼čt─▒r

deepstream-app -c deepstream_app_config.txt

Not

Olu┼čturmak uzun zaman alacak TensorRT ├ç─▒kar─▒ma ba┼člamadan ├Ânce motor dosyas─▒. Bu y├╝zden l├╝tfen sab─▒rl─▒ olun.

YOLOv8 deepstream ile

─░pucu

Modeli FP16 hassasiyetine d├Ân├╝┼čt├╝rmek istiyorsan─▒z, model-engine-file=model_b1_gpu0_fp16.engine ve network-mode=2 i├žinde config_infer_primary_yoloV8.txt

INT8 Kalibrasyonu

├ç─▒kar─▒m i├žin INT8 hassasiyetini kullanmak istiyorsan─▒z, a┼ča─č─▒daki ad─▒mlar─▒ izlemeniz gerekir

  1. Ayarlamak OPENCV ortam de─či┼čkeni

    export OPENCV=1
    
  2. Kitapl─▒─č─▒ derleyin

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  3. COCO veri k├╝mesi i├žin val2017'ye gidin, ├ž─▒kar─▒n ve DeepStream-Yolo klas├Âr

  4. Kalibrasyon g├Âr├╝nt├╝leri i├žin yeni bir dizin olu┼čturun

    mkdir calibration
    
  5. Kalibrasyonu ├žal─▒┼čt─▒rmak ├╝zere COCO veri k├╝mesinden 1000 rastgele g├Âr├╝nt├╝ se├žmek i├žin a┼ča─č─▒dakileri ├žal─▒┼čt─▒r─▒n

    for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do \
        cp ${jpg} calibration/; \
    done
    

    Not

    NVIDIA recommends at least 500 images to get a good accuracy. On this example, 1000 images are chosen to get better accuracy (more images = more accuracy). You can set it from head -1000. For example, for 2000 images, head -2000. This process can take a long time.

  6. Olu┼čtur calibration.txt Se├žilen t├╝m g├Âr├╝nt├╝leri i├žeren dosya

    realpath calibration/*jpg > calibration.txt
    
  7. Ortam de─či┼čkenlerini ayarlama

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
    

    Not

    Daha y├╝ksek INT8_CALIB_BATCH_SIZE de─čerleri daha fazla do─čruluk ve daha h─▒zl─▒ kalibrasyon h─▒z─▒ ile sonu├žlanacakt─▒r. Bunu GPU belle─činize g├Âre ayarlay─▒n.

  8. G├╝ncelle config_infer_primary_yoloV8.txt dosya

    Kimden

    ...
    model-engine-file=model_b1_gpu0_fp32.engine
    #int8-calib-file=calib.table
    ...
    network-mode=0
    ...
    

    i├žin

    ...
    model-engine-file=model_b1_gpu0_int8.engine
    int8-calib-file=calib.table
    ...
    network-mode=1
    ...
    

├ç─▒kar─▒m─▒ ├çal─▒┼čt─▒r

deepstream-app -c deepstream_app_config.txt

MultiStream Kurulumu

Tek bir derin ak─▒┼č uygulamas─▒ alt─▒nda birden fazla ak─▒┼č ayarlamak i├žin, deepstream_app_config.txt dosya

  1. Sahip olmak istedi─činiz ak─▒┼č say─▒s─▒na g├Âre bir ─▒zgara g├Âr├╝nt├╝s├╝ olu┼čturmak i├žin sat─▒rlar─▒ ve s├╝tunlar─▒ de─či┼čtirin. ├ľrne─čin, 4 ak─▒┼č i├žin 2 sat─▒r ve 2 s├╝tun ekleyebiliriz.

    [tiled-display]
    rows=2
    columns=2
    
  2. Ayarlamak num-sources=4 ve ekle uri 4 ak─▒┼č─▒n t├╝m├╝n├╝n

    [source0]
    enable=1
    type=3
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    num-sources=4
    

├ç─▒kar─▒m─▒ ├çal─▒┼čt─▒r

deepstream-app -c deepstream_app_config.txt
├çoklu ak─▒┼č kurulumu

Benchmark Sonu├žlar─▒

A┼ča─č─▒daki tabloda YOLOv8s modellerinin NVIDIA Jetson Orin NX 16GB ├╝zerinde 640x640 giri┼č boyutuyla farkl─▒ TensorRT hassasiyet seviyelerinde nas─▒l performans g├Âsterdi─či ├Âzetlenmektedir.

Model Adı Hassasiyet Çıkarım Süresi (ms/im) FPS
YOLOv8s FP32 15.63 64
FP16 7.94 126
INT8 5.53 181

Te┼čekk├╝r

Bu rehber ba┼člang─▒├žta Seeed Studio, Lakshantha ve Elaine'deki arkada┼člar─▒m─▒z taraf─▒ndan olu┼čturuldu.

SSS

Bir NVIDIA Jetson cihaz─▒nda Ultralytics YOLOv8 adresini nas─▒l kurabilirim?

To set up Ultralytics YOLOv8 on an NVIDIA Jetson device, you first need to install the DeepStream SDK compatible with your JetPack version. Follow the step-by-step guide in our Quick Start Guide to configure your NVIDIA Jetson for YOLOv8 deployment.

NVIDIA Jetson ├╝zerinde YOLOv8 ile TensorRT kullanman─▒n faydas─▒ nedir?

TensorRT 'u YOLOv8 ile kullanmak, ├ž─▒kar─▒m i├žin modeli optimize ederek gecikme s├╝resini ├Ânemli ├Âl├ž├╝de azalt─▒r ve NVIDIA Jetson cihazlar─▒nda verimi art─▒r─▒r. TensorRT katman f├╝zyonu, hassas kalibrasyon ve ├žekirdek otomatik ayarlama yoluyla y├╝ksek performansl─▒, d├╝┼č├╝k gecikmeli derin ├Â─črenme ├ž─▒kar─▒m─▒ sa─člar. Bu, ├Âzellikle video analizi ve otonom makineler gibi ger├žek zamanl─▒ uygulamalar i├žin yararl─▒ olan daha h─▒zl─▒ ve daha verimli y├╝r├╝tme sa─člar.

Ultralytics YOLOv8 adresini DeepStream SDK ile farkl─▒ NVIDIA Jetson donan─▒mlar─▒nda ├žal─▒┼čt─▒rabilir miyim?

Yes, the guide for deploying Ultralytics YOLOv8 with the DeepStream SDK and TensorRT is compatible across the entire NVIDIA Jetson lineup. This includes devices like the Jetson Orin NX 16GB with JetPack 5.1.3 and the Jetson Nano 4GB with JetPack 4.6.4. Refer to the section DeepStream Configuration for YOLOv8 for detailed steps.

DeepStream i├žin bir YOLOv8 modelini ONNX adresine nas─▒l d├Ân├╝┼čt├╝rebilirim?

Bir YOLOv8 modelini DeepStream ile da─č─▒tmak ├╝zere ONNX bi├žimine d├Ân├╝┼čt├╝rmek i├žin utils/export_yoloV8.py komut dosyas─▒ndan DeepStream-Yolo Depo.

─░┼čte ├Ârnek bir komut:

python3 utils/export_yoloV8.py -w yolov8s.pt --opset 12 --simplify

Model d├Ân├╝┼čt├╝rme hakk─▒nda daha fazla ayr─▒nt─▒ i├žin model d─▒┼ča aktarma b├Âl├╝m├╝m├╝ze g├Âz at─▒n.

NVIDIA Jetson Orin NX ├╝zerinde YOLOv8 i├žin performans k─▒yaslamalar─▒ nelerdir?

YOLOv8 modellerinin NVIDIA Jetson Orin NX 16GB ├╝zerindeki performans─▒ TensorRT hassasiyet seviyelerine g├Âre de─či┼čir. ├ľrne─čin, YOLOv8s modelleri elde eder:

  • FP32 Hassasiyeti: 15,63 ms/im, 64 FPS
  • FP16 Hassasiyeti: 7,94 ms/im, 126 FPS
  • INT8 Hassasiyeti: 5,53 ms/im, 181 FPS

These benchmarks underscore the efficiency and capability of using TensorRT-optimized YOLOv8 models on NVIDIA Jetson hardware. For further details, see our Benchmark Results section.



Olu┼čturma 2024-07-01, G├╝ncelleme 2024-07-05
Yazarlar: glenn-jocher (1), lakshanthad (1)

Yorumlar