AI-modellen en platforms

Yolov8 ontrafeld: Ultralytics’ Virale Computer Vision Meesterwerk

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google
Blog featured image for YOLOv8

Tot nu toe stond objectdetectie in afbeeldingen met behulp van computer vision-modellen voor een groot obstakel van enkele seconden vertraging vanwege de verwerkingstijd. Deze vertraging belemmerde de praktische toepassing in gebruikscases zoals autonoom rijden. Echter, de release van de YOLOv8-computer vision-model door Ultralytics heeft de verwerkingstijd doorbroken. Het nieuwe model kan objecten in real-time detecteren met ongekende nauwkeurigheid en snelheid, waardoor het populair is in de computer vision-ruimte.

Dit artikel verkent YOLOv8, zijn mogelijkheden en hoe u uw eigen modellen kunt fine-tunen en maken via zijn open-source Github-repository.

Yolov8 uitgelegd

YOLOv8-Ultralytics

YOLO (You Only Live Once) is een populaire computer vision-model die objecten in afbeeldingen kan detecteren en segmenteren. Het model is door de jaren heen diverse keren bijgewerkt, met YOLOv8 als 8e versie.

Momenteel bouwt YOLOv8 voort op de mogelijkheden van eerdere versies door krachtige nieuwe functies en verbeteringen te introduceren. Dit maakt real-time objectdetectie in beeld- en videodata mogelijk met verbeterde nauwkeurigheid en precisie.

Van v1 tot v8: Een korte geschiedenis

Yolov1: De eerste versie van YOLO werd in 2015 uitgebracht als een single-stage objectdetectiemodel. Functies omvatten het lezen van de hele afbeelding om elke begrenzingsbox in één evaluatie te voorspellen.

Yolov2: De volgende versie, uitgebracht in 2016, bood een top-prestatie op benchmarks zoals PASCAL VOC en COCO en werkte op hoge snelheden (67-40 FPS). Het kon ook meer dan 9000 objectcategorieën detecteren, zelfs met beperkte specifieke detectiegegevens.

Yolov3: Gelanceerd in 2018, bood Yolov3 nieuwe functies zoals een effectievere backbone-netwerk, meerdere ankers en spatial pyramid pooling voor multi-scale feature-extractie.

Yolov4: Met de release van Yolov4 in 2020 werd de nieuwe Mosaic data-augmentatietechniek geïntroduceerd, die verbeterde trainingsmogelijkheden bood.

Yolov5: Uitgebracht in 2021, voegde Yolov5 krachtige nieuwe functies toe, waaronder hyperparameter-optimalisatie en geïntegreerde experimentenbewaking.

Yolov6: Met de release van Yolov6 in 2022 werd het model open-source gemaakt om community-gedreven ontwikkeling te stimuleren. Nieuwe functies werden geïntroduceerd, zoals een nieuwe self-distillatie-strategie en een Anchor-Aided Training (AAT)-strategie.

Yolov7: Uitgebracht in hetzelfde jaar, 2022, verbeterde Yolov7 de bestaande model in snelheid en nauwkeurigheid en was het snelste objectdetectiemodel op het moment van release.

Wat maakt YOLOv8 uniek?

Afbeelding van voertuigdetectie

YOLOv8’s ongekende nauwkeurigheid en hoge snelheid maken het computer vision-model uniek ten opzichte van eerdere versies. Het is een monumentale prestatie, aangezien objecten nu in real-time kunnen worden gedetecteerd zonder vertraging, in tegenstelling tot eerdere versies.

Maar daarnaast komt YOLOv8 met krachtige mogelijkheden, waaronder:

  1. Aanpasbare architectuur: YOLOv8 biedt een flexibele architectuur die ontwikkelaars kunnen aanpassen aan hun specifieke vereisten.
  2. Adaptieve training: YOLOv8’s nieuwe adaptieve trainingsmogelijkheden, zoals verliesfunctie-balans tijdens training en technieken, verbeteren de leercurve. Neem Adam, die bijdraagt aan betere nauwkeurigheid, snellere convergentie en betere modelprestaties.
  3. Geavanceerde beeldanalyse: Door nieuwe semantische segmentatie- en klassevoorspellingsmogelijkheden kan het model activiteiten, kleur, textuur en zelfs relaties tussen objecten detecteren, naast de core-objectdetectiefunctie.
  4. Gegevensaugmentatie: Nieuwe gegevensaugmentatietechnieken helpen bij het aanpakken van aspecten van beeldvariaties zoals lage resolutie, occlusie, enz. in real-world objectdetectiesituaties waarin de omstandigheden niet ideaal zijn.
  5. Backbone-ondersteuning: YOLOv8 biedt ondersteuning voor meerdere backbones, waaronder CSPDarknet (standaardbackbone), EfficientNet (lichtgewichtbackbone) en ResNet (klassieke backbone), die gebruikers kunnen kiezen.

Gebruikers kunnen de backbone zelfs aanpassen door CSPDarknet53 te vervangen door elke andere CNN-architectuur die compatibel is met YOLOv8’s invoer- en uitvoerdimensies.

Training en fine-tuning van YOLOv8

Het YOLOv8-model kan worden gefine-tuned om aan bepaalde use-cases te voldoen of volledig getraind worden om een gespecialiseerd model te creëren. Meer informatie over de trainingsprocedures kan worden gevonden in de officiële documentatie.

Laten we onderzoeken hoe u beide bewerkingen kunt uitvoeren.

Fine-tuning van YOLOV8 met een aangepast dataset

De fine-tuning-bewerking laadt een bestaand model en gebruikt de standaardgewichten als startpunt voor training. Intuïtief gezien onthoudt het model alle eerder verworven kennis, en de fine-tuning-bewerking voegt nieuwe informatie toe door de gewichten aan te passen.

Het YOLOv8-model kan worden gefine-tuned met uw Python-code of via de command-line interface (CLI).

1. Fine-tune een YOLOv8-model met Python

Start door het Ultralytics-pakket in uw code te importeren. Laad vervolgens het aangepaste model dat u wilt trainen met de volgende code:

Eerst installeert u de Ultralytics-bibliotheek vanuit de officiële distributie.

# Installeer het ultralytics-pakket van PyPI
pip install ultralytics

Voer vervolgens de volgende code uit in een Python-bestand:

from ultralytics import YOLO

# Laad een model
model = YOLO(‘yolov8n.pt’) # laad een voorgetraind model (aanbevolen voor training)

# Train het model op de MS COCO-dataset
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

Standaard zal de code het model trainen met de COCO-dataset voor 100 epochs. U kunt deze instellingen echter ook configureren in een YAML-bestand.

Zodra u het model traint met uw instellingen en datapad, bewaakt u de voortgang, test en stemt u het model af en blijft u het opnieuw trainen totdat uw gewenste resultaten zijn bereikt.

2. Fine-tune een YOLOv8-model met de CLI

Om een model te trainen met de CLI, voert u de volgende script uit in de opdrachtregel:

yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640

De CLI-opdracht laadt het voorgetrainde `yolov8n.pt`-model en traint het verder op de dataset gedefinieerd in het `coco8.yaml`-bestand.

Uw eigen model maken met YOLOv8

Er zijn twee manieren om een aangepast model te maken met het YOLO-raamwerk:

  • Training van scratch: Deze benadering laat u toe om de vooraf gedefinieerde YOLOv8-architectuur te gebruiken, maar zal geen voorgetrainde gewichten gebruiken. De training zal van scratch plaatsvinden.
  • Aangepaste architectuur: U past de standaard YOLO-architectuur aan en traint de nieuwe structuur van scratch.

De implementatie van beide methoden blijft hetzelfde. Om een YOLO-model van scratch te trainen, voert u de volgende Python-code uit:

from ultralytics import YOLO

# Laad een model
model = YOLO(‘yolov8n.yaml’) # bouw een nieuw model vanuit YAML

# Train het model
results = model.train(data=’coco128.yaml’, epochs=100, imgsz=640)

Let op dat we dit keer een `.yaml`-bestand in plaats van een `.pt`-bestand hebben geladen. Het YAML-bestand bevat de architectuurinformatie voor het model, en er worden geen gewichten geladen. De trainingsopdracht zal het model van scratch trainen.

Om een aangepaste architectuur te trainen, moet u de aangepaste structuur definiëren in een `.yaml`-bestand, vergelijkbaar met het `yolov8n.yaml`-bestand hierboven. Vervolgens laadt u dit bestand en traint u het model met dezelfde code als hierboven.

Om meer te leren over objectdetectie met AI en om op de hoogte te blijven van de laatste AI-trends, bezoekt u unite.ai.

Haziqa is een Data Scientist met uitgebreide ervaring in het schrijven van technische inhoud voor AI- en SaaS-bedrijven.