Ultralytics YOLOv8 op NVIDIA Jetson met behulp van DeepStream SDK en TensorRT
Deze uitgebreide handleiding biedt een gedetailleerde handleiding voor het implementeren van Ultralytics YOLOv8 op NVIDIA Jetson apparaten met behulp van DeepStream SDK en TensorRT. Hier gebruiken we TensorRT om de inferentieprestaties op het Jetson platform te maximaliseren.
Opmerking
Deze handleiding is getest met zowel Seeed Studio reComputer J4012 die is gebaseerd op NVIDIA Jetson Orin NX 16GB met JetPack versie JP5.1.3 als Seeed Studio reComputer J1020 v2 die is gebaseerd op NVIDIA Jetson Nano 4GB met JetPack versie JP4.6.4. Verwacht wordt dat het werkt op alle NVIDIA Jetson hardware, inclusief de nieuwste en oudere versies.
Wat is NVIDIA DeepStream?
NVIDIA's DeepStream SDK is een complete streaming analytics toolkit gebaseerd op GStreamer voor AI-gebaseerde multi-sensor verwerking, video, audio en beeldbegrip. Het is ideaal voor vision AI-ontwikkelaars, softwarepartners, startups en OEM's die IVA (Intelligent Video Analytics) apps en diensten bouwen. Je kunt nu stroomverwerkingspijplijnen maken met neurale netwerken en andere complexe verwerkingstaken zoals traceren, video coderen/decoderen en video renderen. Deze pijplijnen maken real-time analyse van video-, beeld- en sensorgegevens mogelijk. De multi-platform ondersteuning van DeepStream biedt je een snellere, eenvoudigere manier om vision AI toepassingen en diensten te ontwikkelen op locatie, aan de rand en in de cloud.
Vereisten
Voordat u deze handleiding gaat volgen:
- Ga naar onze documentatie, Snelstartgids: NVIDIA Jetson met Ultralytics YOLOv8 om je NVIDIA Jetson-apparaat in te stellen met Ultralytics YOLOv8
-
Installeer DeepStream SDK volgens de JetPack versie
- Installeer DeepStream 6.0.1 voor JetPack 4.6.4
- Installeer DeepStream 6.3 voor JetPack 5.1.3
Tip
In deze handleiding hebben we de Debian pakketmethode gebruikt om DeepStream SDK op het Jetson-apparaat te installeren. Je kunt ook de DeepStream SDK op Jetson (Gearchiveerd) bezoeken om toegang te krijgen tot oudere versies van DeepStream.
DeepStream-configuratie voor YOLOv8
Hier gebruiken we marcoslucianops/DeepStream-Yolo GitHub repository die NVIDIA DeepStream SDK ondersteuning voor YOLO modellen bevat. We waarderen de inspanningen van marcoslucianops voor zijn bijdragen!
-
Afhankelijkheden installeren
-
Kloon de volgende opslagplaats
-
Download Ultralytics YOLOv8 detectiemodel (.pt) naar keuze van YOLOv8 releases. Hier gebruiken we yolov8s.pt.
Opmerking
Je kunt ook een aangepast getraind YOLOv8 model gebruiken.
-
Model converteren naar ONNX
Geef de onderstaande argumenten door aan de bovenstaande opdracht
Gebruik voor DeepStream 6.0.1 opset 12 of lager. De standaardinstelling is 16.
De deductiegrootte wijzigen (standaard: 640)
Voorbeeld voor 1280:
Om de ONNX model (DeepStream >= 6.0)
Dynamische batchgrootte gebruiken (DeepStream >= 6.1)
Statische batchgrootte gebruiken (voorbeeld voor batchgrootte = 4)
-
Stel de CUDA-versie in op basis van de geïnstalleerde JetPack-versie
Voor JetPack 4.6.4:
Voor JetPack 5.1.3:
-
Stel de bibliotheek samen
-
Bewerk de
config_infer_primary_yoloV8.txt
bestand volgens uw model (voor YOLOv8s met 80 klassen) -
Bewerk de
deepstream_app_config
bestand -
U kunt ook de videobron wijzigen in
deepstream_app_config
bestand. Hier wordt een standaard videobestand geladen
Deductie uitvoeren
Opmerking
Het zal lang duren om de TensorRT motorbestand voordat u de deductie start. Dus heb even geduld.
Tip
Als u het model wilt ombouwen naar FP16-precisie, stelt u eenvoudig in model-engine-file=model_b1_gpu0_fp16.engine
en network-mode=2
binnen config_infer_primary_yoloV8.txt
INT8 kalibratie
Als je INT8 precisie wilt gebruiken voor inferentie, moet je de onderstaande stappen volgen
-
Set
OPENCV
Omgevingsvariabele -
Stel de bibliotheek samen
-
Download voor de COCO-dataset de val2017uitpakken en verplaatsen naar
DeepStream-Yolo
map -
Een nieuwe map maken voor kalibratie-images
-
Voer het volgende uit om 1000 willekeurige afbeeldingen uit de COCO-gegevensset te selecteren om kalibratie uit te voeren
Opmerking
NVIDIA beveelt ten minste 500 afbeeldingen aan om een goede nauwkeurigheid te krijgen. In dit voorbeeld zijn 1000 afbeeldingen gekozen om een betere nauwkeurigheid te krijgen (meer afbeeldingen = meer nauwkeurigheid). Je kunt het instellen vanaf kop -1000. Bijvoorbeeld, voor 2000 afbeeldingen, kop -2000. Dit proces kan lang duren.
-
Creëer de
calibration.txt
bestand met alle geselecteerde afbeeldingen -
Omgevingsvariabelen instellen
Opmerking
Hogere INT8_CALIB_BATCH_SIZE waarden resulteren in een grotere nauwkeurigheid en een hogere kalibratiesnelheid. Stel het in op basis van je GPU-geheugen.
-
Werk de
config_infer_primary_yoloV8.txt
bestandVan
Naar
Deductie uitvoeren
MultiStream-installatie
Als u meerdere streams wilt instellen onder één deepstream-toepassing, kunt u de volgende wijzigingen aanbrengen in de deepstream_app_config.txt
bestand
-
Wijzig de rijen en kolommen om een rasterweergave te maken op basis van het aantal streams dat u wilt hebben. Voor 4 streams kunnen we bijvoorbeeld 2 rijen en 2 kolommen toevoegen.
-
Set
num-sources=4
en voeg toeuri
van alle 4 de stromen
Deductie uitvoeren
Benchmark resultaten
De volgende tabel geeft een overzicht van hoe YOLOv8s modellen presteren op verschillende TensorRT precisiewaterpassen met een invoergrootte van 640x640 op NVIDIA Jetson Orin NX 16GB.
Modelnaam | Precisie | Inferentietijd (ms/im) | FPS |
---|---|---|---|
YOLOv8s | FP32 | 15.63 | 64 |
FP16 | 7.94 | 126 | |
INT8 | 5.53 | 181 |
Dankbetuigingen
Deze gids is oorspronkelijk gemaakt door onze vrienden van Seeed Studio, Lakshantha en Elaine.