─░├žeri─če ge├ž

TensorRT ve DeepStream SDK kullanarak NVIDIA Jetson'a da─č─▒t─▒n

­čôÜ Bu k─▒lavuz, e─čitilmi┼č bir modelin NVIDIA Jetson Platformuna nas─▒l da─č─▒t─▒laca─č─▒n─▒ ve TensorRT ve DeepStream SDK kullan─▒larak nas─▒l ├ž─▒kar─▒m yap─▒laca─č─▒n─▒ a├ž─▒klamaktad─▒r. Burada, Jetson platformunda ├ž─▒kar─▒m performans─▒n─▒ en ├╝st d├╝zeye ├ž─▒karmak i├žin TensorRT adresini kullan─▒yoruz.

Donan─▒m Do─črulamas─▒

Bu k─▒lavuzu a┼ča─č─▒daki Jetson cihazlar─▒nda test ettik ve do─črulad─▒k

Ba┼člamadan ├ľnce

Bu k─▒lavuz i├žin gerekli olan CUDA, TensorRT ve DeepStream SDK'y─▒ i├žerdi─činden, JetPack SDK'y─▒ t├╝m SDK Bile┼čenleri ve DeepStream SDK ile birlikte Jetson cihaz─▒na d├╝zg├╝n bir ┼čekilde y├╝kledi─činizden emin olun.

JetPack SDK, donan─▒m h─▒zland─▒rmal─▒ AI-at-the-edge geli┼čtirme i├žin eksiksiz bir geli┼čtirme ortam─▒ sa─člar. T├╝m Jetson mod├╝lleri ve geli┼čtirici kitleri JetPack SDK taraf─▒ndan desteklenmektedir.

A┼ča─č─▒dakileri i├žeren iki ana kurulum y├Ântemi vard─▒r,

  1. SD Kart G├Âr├╝nt├╝ Y├Ântemi
  2. NVIDIA SDK Y├Âneticisi Y├Ântemi

NVIDIA resmi web sitesinden ├žok ayr─▒nt─▒l─▒ bir kurulum k─▒lavuzu bulabilirsiniz. Ayr─▒ca yukar─▒da bahsedilen reComputer J1010 ve reComputer J2021 ile ilgili k─▒lavuzlar─▒ da bulabilirsiniz.

Gerekli Paketleri Y├╝kleyin

  • Ad─▒m 1. Jetson cihaz─▒n─▒n terminaline eri┼čin, pip y├╝kleyin ve y├╝kseltin
sudo apt update
sudo apt install -y python3-pip
pip3 install --upgrade pip
  • Ad─▒m 2. A┼ča─č─▒daki repoyu klonlay─▒n
git clone https://github.com/ultralytics/yolov5
  • Ad─▒m 3. requirements.txt dosyas─▒n─▒ a├ž─▒n
cd yolov5
vi requirements.txt
  • Ad─▒m 5. A┼ča─č─▒daki sat─▒rlar─▒ d├╝zenleyin. Burada d├╝zenleme moduna girmek i├žin ├Ânce i tu┼čuna basman─▒z gerekir. ESC tu┼čuna bas─▒n, ard─▒ndan kaydetmek ve ├ž─▒kmak i├žin :wq yaz─▒n
# torch>=1.8.0
# torchvision>=0.9.0

Not: torch ve torchvision daha sonra kurulacaklar─▒ i├žin ┼čimdilik hari├ž tutulmu┼čtur.

  • Ad─▒m 6. A┼ča─č─▒daki ba─č─▒ml─▒l─▒─č─▒ y├╝kleyin
sudo apt install -y libfreetype6-dev
  • Ad─▒m 7. Gerekli paketleri y├╝kleyin
pip3 install -r requirements.txt

PyTorch ve Torchvision'─▒ y├╝kleyin

ARM aarch64 mimarisine dayanan Jetson platformunda ├žal─▒┼čmak i├žin uyumlu olmad─▒klar─▒ndan PyTorch ve Torchvision'─▒ pip'ten y├╝kleyemeyiz. Bu nedenle, ├Ânceden olu┼čturulmu┼č PyTorch pip wheel'i manuel olarak y├╝klememiz ve Torchvision'─▒ kaynaktan derlememiz / y├╝klememiz gerekir.

T├╝m PyTorch ve Torchvision ba─člant─▒lar─▒na eri┼čmek i├žin bu sayfay─▒ ziyaret edin.

JetPack 4.6 ve ├╝zeri taraf─▒ndan desteklenen s├╝r├╝mlerden baz─▒lar─▒ ┼čunlard─▒r.

PyTorch v1.10.0

JetPack 4.4 (L4T R32.4.3) / JetPack 4.4.1 (L4T R32.4.4) / JetPack 4.5 (L4T R32.5.0) / JetPack 4.5.1 (L4T R32.5.1) / JetPack 4.6 (L4T R32.6.1) taraf─▒ndan Python 3.6 ile desteklenir

PyTorch v1.12.0

JetPack 5.0 (L4T R34.1.0) / JetPack 5.0.1 (L4T R34.1.1) / JetPack 5.0.2 (L4T R35.1.0) taraf─▒ndan Python 3.8 ile desteklenir

wget <URL> -O <file_name>
pip3 install <file_name>

├ľrne─čin, burada JP4.6.1 ├žal─▒┼čt─▒r─▒yoruz ve bu nedenle PyTorch v1. 10.0'─▒ se├žiyoruz

cd ~
sudo apt-get install -y libopenblas-base libopenmpi-dev
wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl
pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl
  • Ad─▒m 2. Y├╝kledi─činiz PyTorch s├╝r├╝m├╝ne ba─čl─▒ olarak torchvision'─▒ y├╝kleyin. ├ľrne─čin, PyTorch v1 .10.0'─▒ se├žtik, bu da Torchvision v0.11.1'i se├žmemiz gerekti─či anlam─▒na geliyor
sudo apt install -y libjpeg-dev zlib1g-dev
git clone --branch v0.11.1 https://github.com/pytorch/vision torchvision
cd torchvision
sudo python3 setup.py install

Burada, PyTorch s├╝r├╝m├╝ne g├Âre y├╝klemeniz gereken ilgili torchvision s├╝r├╝m├╝n├╝n bir listesi bulunmaktad─▒r:

  • PyTorch v1.10 - torchvision v0.11.1
  • PyTorch v1.12 - torchvision v0.13.0

DeepStream Yap─▒land─▒rmas─▒ i├žin YOLOv5

  • Ad─▒m 1. A┼ča─č─▒daki repoyu klonlay─▒n
cd ~
git clone https://github.com/marcoslucianops/DeepStream-Yolo
  • Ad─▒m 2. DeepStream-Yolo /utils adresinden gen_wts_yoloV5.py dosyas─▒n─▒ kopyalay─▒n. yolov5 dizin
cp DeepStream-Yolo/utils/gen_wts_yoloV5.py yolov5
  • Ad─▒m 3. yolov5 reposunun i├žinde, pt dosyas─▒n─▒ YOLOv5 s├╝r├╝mlerinden indirin (YOLOv5s 6.1 i├žin ├Ârnek)
cd yolov5
wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt
  • Ad─▒m 4. cfg ve wts dosyalar─▒n─▒ olu┼čturun
python3 gen_wts_yoloV5.py -w yolov5s.pt

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

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

Example for 1280:

-s 1280
or
-s 1280 1280
  • Ad─▒m 5. Olu┼čturulan cfg ve wts dosyalar─▒n─▒ DeepStream-Yolo klas├Âr├╝ne kopyalay─▒n
cp yolov5s.cfg ~/DeepStream-Yolo
cp yolov5s.wts ~/DeepStream-Yolo
  • Ad─▒m 6. DeepStream-Yolo klas├Âr├╝n├╝ a├ž─▒n ve k├╝t├╝phaneyi derleyin
cd ~/DeepStream-Yolo
CUDA_VER=11.4 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.1
CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.0.1 / 6.0
  • Ad─▒m 7. config_infer_primary_yoloV5.txt dosyas─▒n─▒ modelinize g├Âre d├╝zenleyin
[property]
...
custom-network-config=yolov5s.cfg
model-file=yolov5s.wts
...
  • Ad─▒m 8. deepstream_app_config dosyas─▒n─▒ d├╝zenleyin
...
[primary-gie]
...
config-file=config_infer_primary_yoloV5.txt
  • Ad─▒m 9. deepstream_app_config dosyas─▒ndaki video kayna─č─▒n─▒ de─či┼čtirin. Burada a┼ča─č─▒da g├Ârebilece─činiz gibi varsay─▒lan bir video dosyas─▒ y├╝klenir
...
[source0]
...
uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4

├ç─▒karsamay─▒ ├çal─▒┼čt─▒r─▒n

deepstream-app -c deepstream_app_config.txt
YOLOv5 deepstream FP32 ile

Yukar─▒daki sonu├ž Jetson Xavier NX ├╝zerinde FP32 ve YOLOv5s 640x640 ile ├žal─▒┼čmaktad─▒r. FPS 'nin 30 civar─▒nda oldu─čunu g├Ârebiliyoruz.

INT8 Kalibrasyonu

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

  • Ad─▒m 1. OpenCV'yi y├╝kleyin
sudo apt-get install libopencv-dev
  • Ad─▒m 2. OpenCV deste─či ile nvdsinfer_custom_impl_Yolo k├╝t├╝phanesini derleyin/yeniden derleyin
cd ~/DeepStream-Yolo
CUDA_VER=11.4 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.1
CUDA_VER=10.2 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.0.1 / 6.0
  • Ad─▒m 3. COCO veri seti i├žin val2017'yi indirin, ay─▒klay─▒n ve DeepStream-Yolo klas├Âr├╝ne ta┼č─▒y─▒n

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

mkdir calibration
  • Ad─▒m 5. Kalibrasyonu ├žal─▒┼čt─▒rmak ├╝zere COCO veri setinden 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, iyi bir do─čruluk elde etmek i├žin en az 500 g├Âr├╝nt├╝ ├Ânerir. Bu ├Ârnekte, daha iyi do─čruluk elde etmek i├žin 1000 g├Âr├╝nt├╝ se├žilmi┼čtir (daha fazla g├Âr├╝nt├╝ = daha fazla do─čruluk). Daha y├╝ksek INT8_CALIB_BATCH_SIZE de─čerleri daha fazla do─čruluk ve daha h─▒zl─▒ kalibrasyon h─▒z─▒ ile sonu├žlanacakt─▒r. GPU belle─činize g├Âre ayarlay─▒n. Ba┼č -1000 aras─▒nda ayarlayabilirsiniz. ├ľrne─čin 2000 g├Âr├╝nt├╝ i├žin head -2000. Bu i┼člem uzun s├╝rebilir.

  • Ad─▒m 6. Se├žilen t├╝m g├Âr├╝nt├╝leri i├žeren calibration.txt dosyas─▒n─▒ olu┼čturun
realpath calibration/*jpg > calibration.txt
  • Ad─▒m 7. Ortam de─či┼čkenlerini ayarlay─▒n
export INT8_CALIB_IMG_PATH=calibration.txt
export INT8_CALIB_BATCH_SIZE=1
  • Ad─▒m 8. config_infer_primary_yoloV5.txt dosyas─▒n─▒ g├╝ncelleyin

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
...
  • Ad─▒m 9. ├ç─▒karsamay─▒ ├žal─▒┼čt─▒r─▒n
deepstream-app -c deepstream_app_config.txt
YOLOv5 deepstream INT8 ile

Yukar─▒daki sonu├ž INT8 ve YOLOv5s 640x640 ile Jetson Xavier NX ├╝zerinde ├žal─▒┼č─▒yor. FPS 'nin 60 civar─▒nda oldu─čunu g├Ârebiliyoruz.

Benchmark sonu├žlar─▒

A┼ča─č─▒daki tabloda farkl─▒ modellerin Jetson Xavier NX ├╝zerinde nas─▒l performans g├Âsterdi─či ├Âzetlenmektedir.

Model Adı Hassasiyet Çıkarım Boyutu Çıkarım Süresi (ms) FPS
YOLOv5s FP32 320x320 16.66 60
FP32 640x640 33.33 30
INT8 640x640 16.66 60
YOLOv5n FP32 640x640 16.66 60

Ek

Bu e─čitim seeed'deki arkada┼člar─▒m─▒z @lakshanthad ve Elaine taraf─▒ndan yaz─▒lm─▒┼čt─▒r.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (7)

Yorumlar