Overslaan naar inhoud

ONNX Exporteren voor YOLOv8 modellen

Bij het implementeren van computer vision-modellen hebt u vaak een modelindeling nodig die zowel flexibel als compatibel is met meerdere platforms.

Het exporteren van Ultralytics YOLOv8 modellen naar het formaat ONNX stroomlijnt de implementatie en zorgt voor optimale prestaties in verschillende omgevingen. Deze gids laat je zien hoe je eenvoudig je YOLOv8 modellen kunt converteren naar ONNX en hun schaalbaarheid en effectiviteit in echte toepassingen kunt verbeteren.

ONNX en ONNX Runtime

ONNX, wat staat voor Open Neural Network Exchange, is een gemeenschapsproject dat in eerste instantie door Facebook en Microsoft is ontwikkeld. De voortdurende ontwikkeling van ONNX is een gezamenlijke inspanning die wordt ondersteund door verschillende organisaties zoals IBM, Amazon (via AWS) en Google. Het project heeft als doel een open bestandsformaat te creƫren dat ontworpen is om modellen voor machinaal leren te representeren op een manier waardoor ze gebruikt kunnen worden in verschillende AI raamwerken en hardware.

ONNX modellen kunnen worden gebruikt om naadloos over te schakelen tussen verschillende raamwerken. Zo kan een deep learning model dat is getraind in PyTorch worden geĆ«xporteerd naar het formaat ONNX en vervolgens eenvoudig worden geĆÆmporteerd in TensorFlow.

ONNX

Als alternatief kunnen ONNX modellen gebruikt worden met ONNX Runtime. ONNX Runtime is een veelzijdige cross-platform versneller voor machine learning modellen die compatibel is met frameworks zoals PyTorch, TensorFlow, TFLite, scikit-learn, enz.

ONNX Runtime optimaliseert de uitvoering van ONNX modellen door gebruik te maken van hardwarespecifieke mogelijkheden. Door deze optimalisatie kunnen de modellen efficiƫnt en met hoge prestaties worden uitgevoerd op verschillende hardwareplatforms, waaronder CPU's, GPU's en gespecialiseerde versnellers.

ONNX met ONNX Runtime

Of het nu zelfstandig wordt gebruikt of in combinatie met ONNX Runtime, ONNX biedt een flexibele oplossing voor het implementeren en compatibel maken van machine learning modellen.

Belangrijkste kenmerken van ONNX modellen

Het vermogen van ONNX om met verschillende formaten om te gaan kan worden toegeschreven aan de volgende belangrijke eigenschappen:

  • Gemeenschappelijke modelrepresentatie: ONNX definieert een gemeenschappelijke set operatoren (zoals convoluties, lagen, etc.) en een standaard gegevensformaat. Wanneer een model wordt geconverteerd naar het ONNX formaat, worden de architectuur en gewichten vertaald naar deze gemeenschappelijke representatie. Deze uniformiteit zorgt ervoor dat het model begrepen kan worden door elk framework dat ONNX ondersteunt.

  • Versiebeheer en achterwaartse compatibiliteit: ONNX onderhoudt een versiebeheersysteem voor zijn gebruikers. Dit zorgt ervoor dat zelfs als de standaard evolueert, modellen die in oudere versies zijn gemaakt bruikbaar blijven. Achterwaartse compatibiliteit is een cruciale eigenschap die voorkomt dat modellen snel verouderd raken.

  • Modelrepresentatie op basis van grafieken: ONNX representeert modellen als computationele grafieken. Deze op grafieken gebaseerde structuur is een universele manier om modellen voor machinaal leren te representeren, waarbij knooppunten bewerkingen of berekeningen representeren en randen de tensoren die daartussen stromen. Deze indeling is gemakkelijk aan te passen aan verschillende raamwerken die modellen ook als grafieken representeren.

  • Hulpmiddelen en ecosysteem: Er is een rijk ecosysteem van tools rondom ONNX die helpen bij modelconversie, visualisatie en optimalisatie. Deze tools maken het voor ontwikkelaars gemakkelijker om te werken met ONNX modellen en om modellen naadloos te converteren tussen verschillende frameworks.

Gebruik van ONNX

Voordat we ingaan op het exporteren YOLOv8 modellen naar de ONNX formaat, laten we eens kijken waar ONNX Meestal worden modellen gebruikt.

CPU Inzet

ONNX modellen worden vaak ingezet op CPU's vanwege hun compatibiliteit met ONNX Runtime. Deze runtime is geoptimaliseerd voor CPU uitvoering. Het verbetert de inferentiesnelheid aanzienlijk en maakt realtime CPU implementaties haalbaar.

Ondersteunde implementatieopties

Hoewel ONNX modellen meestal worden gebruikt op CPU's, kunnen ze ook worden ingezet op de volgende platformen:

  • GPU Versnelling: ONNX biedt volledige ondersteuning voor GPU versnelling, met name NVIDIA CUDA . Dit maakt efficiĆ«nte uitvoering op NVIDIA GPU's mogelijk voor taken die veel rekenkracht vereisen.

  • Rand en mobiele apparaten: ONNX is ook beschikbaar voor rand en mobiele apparaten, perfect voor inferentiescenario's op het apparaat en in realtime. Het is lichtgewicht en compatibel met randapparatuur.

  • Webbrowsers: ONNX kan direct in webbrowsers draaien, waardoor interactieve en dynamische webgebaseerde AI-toepassingen mogelijk worden.

YOLOv8 modellen exporteren naar ONNX

Je kunt modelcompatibiliteit en inzetflexibiliteit uitbreiden door YOLOv8 modellen te converteren naar ONNX formaat.

Installatie

Voer het volgende uit om het vereiste pakket te installeren:

Installatie

# Install the required package for YOLOv8
pip install ultralytics

Bekijk voor gedetailleerde instructies en best practices met betrekking tot het installatieproces onze YOLOv8 Installatiegids. Als je tijdens de installatie van de vereiste pakketten voor YOLOv8 problemen tegenkomt, raadpleeg dan onze gids Veelgestelde problemen voor oplossingen en tips.

Gebruik

Voordat je in de gebruiksaanwijzing duikt, moet je eerst het assortiment YOLOv8 modellen bekijken dat Ultralytics aanbiedt. Dit zal je helpen het meest geschikte model te kiezen voor jouw projectvereisten.

Gebruik

from ultralytics import YOLO

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

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolov8n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolov8n.onnx")

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

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

Ga voor meer informatie over het exportproces naar de Ultralytics documentatiepagina over exporteren.

Geƫxporteerde YOLOv8 ONNX modellen inzetten

Als je je Ultralytics YOLOv8 modellen met succes hebt geƫxporteerd naar het ONNX formaat, is de volgende stap het implementeren van deze modellen in verschillende omgevingen. Voor gedetailleerde instructies over het implementeren van je ONNX modellen, kun je een kijkje nemen in de volgende bronnen:

  • ONNX Runtime Python API-documentatie: Deze handleiding biedt essentiĆ«le informatie voor het laden en uitvoeren van ONNX modellen met ONNX Runtime.

  • Inzetten op randapparaten: Bekijk deze documentatiepagina voor verschillende voorbeelden van het inzetten van ONNX modellen op randapparaten.

  • ONNX Handleidingen op GitHub: Een verzameling uitgebreide tutorials die verschillende aspecten van het gebruik en de implementatie van ONNX modellen in verschillende scenario's behandelen.

Samenvatting

In deze handleiding heb je geleerd hoe je Ultralytics YOLOv8 modellen kunt exporteren naar ONNX formaat om hun interoperabiliteit en prestaties op verschillende platforms te verbeteren. Je hebt ook kennis gemaakt met de ONNX Runtime en ONNX deployment opties.

Ga voor meer informatie over het gebruik naar de officiƫle documentatie opONNX .

Als je meer wilt weten over andere Ultralytics YOLOv8 integraties, bezoek dan onze integratiegids pagina. Daar vind je veel nuttige bronnen en inzichten.

FAQ

Hoe exporteer ik YOLOv8 modellen naar het formaat ONNX met behulp van Ultralytics?

Voer de volgende stappen uit om je YOLOv8 modellen te exporteren naar de indeling ONNX met behulp van Ultralytics:

Gebruik

from ultralytics import YOLO

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

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolov8n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolov8n.onnx")

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

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

Ga voor meer informatie naar de exportdocumentatie.

Wat zijn de voordelen van het gebruik van ONNX Runtime voor het implementeren van YOLOv8 modellen?

Het gebruik van ONNX Runtime voor het implementeren van YOLOv8 modellen biedt verschillende voordelen:

  • Compatibel met meerdere platforms: ONNX Runtime ondersteunt verschillende platforms, zoals Windows, macOS en Linux, zodat je modellen soepel draaien in verschillende omgevingen.
  • Hardwareversnelling: ONNX Runtime kan gebruik maken van hardwarespecifieke optimalisaties voor CPU's, GPU's en speciale versnellers, waardoor inferentie met hoge prestaties mogelijk is.
  • Interoperabiliteit van raamwerken: Modellen getraind in populaire frameworks zoals PyTorch of TensorFlow kunnen eenvoudig worden geconverteerd naar ONNX formaat en worden uitgevoerd met ONNX Runtime.

Raadpleeg voor meer informatie de documentatie vanONNX Runtime.

Welke implementatieopties zijn beschikbaar voor YOLOv8 modellen die zijn geƫxporteerd naar ONNX?

YOLOv8 Modellen die worden geƫxporteerd naar ONNX kunnen worden ingezet op verschillende platforms, waaronder:

  • CPU's: ONNX Runtime gebruiken voor geoptimaliseerde CPU inferentie.
  • GPU's: NVIDIA CUDA gebruiken voor krachtige GPU versnelling.
  • Randapparaten: Lichtgewicht modellen uitvoeren op randapparaten en mobiele apparaten voor real-time inferentie op het apparaat.
  • Webbrowsers: Modellen direct uitvoeren in webbrowsers voor interactieve webgebaseerde toepassingen.

Bekijk voor meer informatie onze gids over de opties voor het implementeren van modellen.

Waarom zou ik de indeling ONNX gebruiken voor Ultralytics YOLOv8 modellen?

Het gebruik van het formaat ONNX voor Ultralytics YOLOv8 modellen biedt talloze voordelen:

  • Interoperabiliteit: ONNX maakt het mogelijk om modellen naadloos over te zetten tussen verschillende raamwerken voor machinaal leren.
  • Prestatieoptimalisatie: ONNX Runtime kan de modelprestaties verbeteren door gebruik te maken van hardwarespecifieke optimalisaties.
  • Flexibiliteit: ONNX ondersteunt verschillende implementatieomgevingen, zodat je hetzelfde model zonder aanpassingen op verschillende platforms kunt gebruiken.

Raadpleeg de uitgebreide handleiding over het exporteren van YOLOv8 modellen naar ONNX.

Hoe kan ik problemen oplossen bij het exporteren van YOLOv8 modellen naar ONNX?

Bij het exporteren van YOLOv8 modellen naar ONNX kun je veelvoorkomende problemen tegenkomen, zoals mismatchte afhankelijkheden of niet-ondersteunde bewerkingen. Om deze problemen op te lossen:

  1. Controleer of je de juiste versie van de vereiste afhankelijkheden hebt geĆÆnstalleerd.
  2. Raadpleeg de officiƫle ONNX documentatie voor ondersteunde operators en functies.
  3. Bekijk de foutmeldingen voor aanwijzingen en raadpleeg de gidsUltralytics Algemene problemen.

Als de problemen aanhouden, neem dan contact op met Ultralytics support voor verdere hulp.



Aangemaakt 2024-01-25, Bijgewerkt 2024-07-05
Auteurs: glenn-jocher (6), abirami-vina (1)

Reacties