Overslaan naar inhoud

YOLOv8 Inferenties optimaliseren met Neural Magic's DeepSparse Engine

Bij het inzetten van objectdetectiemodellen zoals Ultralytics YOLOv8 op verschillende hardware, kun je tegen unieke problemen aanlopen, zoals optimalisatie. Dit is waar YOLOv8's integratie met Neural Magic's DeepSparse Engine om de hoek komt kijken. Het verandert de manier waarop YOLOv8 modellen worden uitgevoerd en maakt prestaties op GPU-niveau direct mogelijk op CPU's.

Deze handleiding laat je zien hoe je YOLOv8 kunt implementeren met Neural Magic's DeepSparse, hoe je inferenties kunt uitvoeren en ook hoe je de prestaties kunt benchmarken om er zeker van te zijn dat het geoptimaliseerd is.

Neural MagicDeepSparse

Neural MagicOverzicht DeepSparse

Neural MagicDeepSparse is een inferentie-runtime ontworpen om de uitvoering van neurale netwerken op CPU's te optimaliseren. Het past geavanceerde technieken toe zoals sparsity, pruning en kwantisatie om de rekenkracht drastisch te verminderen met behoud van nauwkeurigheid. DeepSparse biedt een flexibele oplossing voor efficiënte en schaalbare uitvoering van neurale netwerken op verschillende apparaten.

Voordelen van de integratie van Neural Magic's DeepSparse met YOLOv8

Laten we eerst de voordelen van het gebruik van DeepSparse begrijpen, voordat we gaan kijken hoe we YOLOV8 kunnen implementeren met DeepSparse. Enkele belangrijke voordelen zijn:

  • Verbeterde inferentiesnelheid: Bereikt tot 525 FPS (op YOLOv8n), waardoor de inferentiemogelijkheden van YOLOv8 aanzienlijk sneller zijn dan bij traditionele methoden.

Verbeterde inferentiesnelheid

  • Geoptimaliseerde modelefficiëntie: Gebruikt snoeien en kwantificeren om de efficiëntie van YOLOv8 te verbeteren, waardoor het model kleiner wordt en er minder rekenkracht nodig is, terwijl de nauwkeurigheid behouden blijft.

Geoptimaliseerde modelefficiëntie

  • Hoge prestaties op standaard CPU's: Levert GPU-achtige prestaties op CPU's, waardoor een meer toegankelijke en kosteneffectieve optie ontstaat voor verschillende toepassingen.

  • Gestroomlijnde integratie en implementatie: Biedt gebruiksvriendelijke tools voor eenvoudige integratie van YOLOv8 in applicaties, inclusief annotatiefuncties voor afbeeldingen en video.

  • Ondersteuning voor verschillende modeltypen: Compatibel met zowel standaard als voor sparsity geoptimaliseerde YOLOv8 modellen, voor extra inzetflexibiliteit.

  • Kosteneffectieve en schaalbare oplossing: Verlaagt de operationele kosten en biedt schaalbare inzet van geavanceerde objectdetectiemodellen.

Hoe werkt Neural Magic's DeepSparse technologie?

Neural MagicDe Deep Sparse technologie van Deep Sparse is geïnspireerd op de efficiëntie van het menselijk brein bij het berekenen van neurale netwerken. Het neemt twee belangrijke principes van het brein als volgt over:

  • Spaarzaamheid: Het proces van sparsificatie bestaat uit het verwijderen van overbodige informatie uit deep learning netwerken, wat leidt tot kleinere en snellere modellen zonder afbreuk te doen aan de nauwkeurigheid. Deze techniek vermindert de grootte van het netwerk en de benodigde rekenkracht aanzienlijk.

  • Lokalisatie van referentie: DeepSparse gebruikt een unieke uitvoeringsmethode, waarbij het netwerk wordt opgedeeld in Tensor Kolommen. Deze kolommen worden dieptegewijs uitgevoerd en passen volledig in de cache van de CPU. Deze aanpak bootst de efficiëntie van de hersenen na, minimaliseert het verplaatsen van gegevens en maximaliseert het cachegebruik van de CPU.

Hoe Neural Magic's DeepSparse technologie werkt

Voor meer details over hoe Neural Magic's DeepSparse technologie werkt, bekijk hun blogpost.

Een spaarzame versie van YOLOv8 maken, getraind op een aangepaste dataset

SparseZoo, een open-source modelrepository van Neural Magic, biedt een verzameling vooraf gesparsificeerde YOLOv8 modelcheckpoints. Met SparseML, dat naadloos geïntegreerd is met Ultralytics, kunnen gebruikers deze sparse checkpoints moeiteloos fine-tunen op hun specifieke datasets met behulp van een eenvoudige opdrachtregelinterface.

Bekijk Neural Magic's SparseML YOLOv8 documentatie voor meer details.

Gebruik: YOLOV8 inzetten met DeepSparse

Het implementeren van YOLOv8 met Neural Magic's DeepSparse omvat een paar eenvoudige stappen. Voordat je in de gebruiksinstructies duikt, moet je eerst de reeks YOLOv8 modellen bekijken die Ultralytics aanbiedt. Dit helpt je bij het kiezen van het meest geschikte model voor jouw projectvereisten. Dit is hoe je kunt beginnen.

Stap 1: Installatie

Voer het volgende uit om de vereiste pakketten te installeren:

Installatie

# Install the required packages
pip install deepsparse[yolov8]

Stap 2: YOLOv8 exporteren naar ONNX Formaat

DeepSparse Engine vereist YOLOv8 modellen in ONNX formaat. Het exporteren van je model naar dit formaat is essentieel voor compatibiliteit met DeepSparse. Gebruik de volgende opdracht om YOLOv8 modellen te exporteren:

Model Export

# Export YOLOv8 model to ONNX format
yolo task=detect mode=export model=yolov8n.pt format=onnx opset=13

Dit commando slaat de yolov8n.onnx model naar je schijf.

Stap 3: Inferences implementeren en uitvoeren

Met je YOLOv8 model in ONNX formaat kun je inferenties implementeren en uitvoeren met DeepSparse. Dit kan eenvoudig met hun intuïtieve Python API:

Inferences inzetten en uitvoeren

from deepsparse import Pipeline

# Specify the path to your YOLOv8 ONNX model
model_path = "path/to/yolov8n.onnx"

# Set up the DeepSparse Pipeline
yolo_pipeline = Pipeline.create(task="yolov8", model_path=model_path)

# Run the model on your images
images = ["path/to/image.jpg"]
pipeline_outputs = yolo_pipeline(images=images)

Stap 4: Prestatie benchmarken

Het is belangrijk om te controleren of je YOLOv8 model optimaal presteert op DeepSparse. Je kunt de prestaties van je model benchmarken om doorvoer en latentie te analyseren:

Benchmarking

# Benchmark performance
deepsparse.benchmark model_path="path/to/yolov8n.onnx" --scenario=sync --input_shapes="[1,3,640,640]"

Stap 5: Extra functies

DeepSparse biedt extra functies voor praktische integratie van YOLOv8 in toepassingen, zoals beeldannotatie en dataset evaluatie.

Extra functies

# For image annotation
deepsparse.yolov8.annotate --source "path/to/image.jpg" --model_filepath "path/to/yolov8n.onnx"

# For evaluating model performance on a dataset
deepsparse.yolov8.eval --model_path "path/to/yolov8n.onnx"

Het uitvoeren van het annotate commando verwerkt je gespecificeerde afbeelding, detecteert objecten en slaat de geannoteerde afbeelding op met bounding boxes en classificaties. De geannoteerde afbeelding wordt opgeslagen in een map met annotatie-resultaten. Dit helpt om een visuele weergave te geven van de detectiemogelijkheden van het model.

Functie voor beeldannotatie

Na het uitvoeren van het commando eval krijg je gedetailleerde uitvoercijfers zoals precisie, recall en mAP (gemiddelde gemiddelde precisie). Dit geeft een uitgebreid beeld van de prestaties van je model op de dataset. Deze functionaliteit is vooral handig voor het verfijnen en optimaliseren van je YOLOv8 modellen voor specifieke gebruikssituaties, zodat je verzekerd bent van een hoge nauwkeurigheid en efficiëntie.

Samenvatting

Deze gids onderzocht de integratie van Ultralytics' YOLOv8 met Neural Magic's DeepSparse Engine. Er werd benadrukt hoe deze integratie de prestaties van YOLOv8 op CPU-platforms verbetert door efficiëntie op GPU-niveau en geavanceerde sparsiteitstechnieken voor neurale netwerken te bieden.

Ga voor meer gedetailleerde informatie en geavanceerd gebruik naar Neural Magic's DeepSparse documentatie. Bekijk ook Neural Magic's documentatie over de integratie met YOLOv8 hier en bekijk een geweldige sessie erover hier.

Ga voor een breder begrip van de verschillende YOLOv8 integraties naar de Ultralytics integratiegids pagina, waar je een reeks andere interessante integratiemogelijkheden kunt ontdekken.



Aangemaakt 2023-12-30, Bijgewerkt 2024-05-18
Auteurs: glenn-jocher (4), abirami-vina (1)

Reacties