De beeldherkenning van YOLOv8 is uitstekend, maar het trainen van het model is een belangrijke taak die je niet over het hoofd mag zien.

YOLOv8 is een real-time objectdetectie-algoritme dat veel wordt gebruikt op het gebied van objectdetectie. Het maakt deel uit van de serie You Only Look Once (YOLO), ontwikkeld door Ultralytics. Het algoritme volgt, detecteert, segmenteert instanties, schat de pose en classificeert objecten in afbeeldingen en video's. Het is bedoeld om sneller en nauwkeuriger te zijn dan zijn voorgangersalgoritmen.

Het gebruik van YOLOv8 op experimentele datasets zoals CIFAR-10 en CIFAR-100 is vaak gemakkelijker voor Proof-of-Concept (POC)-projecten dan op real-world datasets die aangepaste datasets vereisen.

Deze zelfstudie leidt u door de stappen voor het trainen van YOLOv8 op aangepaste gegevens.

De Python-omgeving opzetten

Begin met het installeren van de ontwikkelomgeving voor het project volgens de onderstaande instructies.

  1. Ga naar de terminal en maak een nieuwe map met de naam jolov8project:
    mkdir yolov8project
  2. instagram viewer
  3. Navigeer naar de projectdirectory en creëer een virtuele omgeving:
    cdyolov8project
    python -m venv env
  4. Activeer vervolgens de virtuele omgeving.
    # Op Windows
    env/Scripts/activeren

    # Op Linux / macOS
    source env/bin/activeren

    Om uw code uit te voeren, moet u Ultralytics installeren, een bibliotheek voor objectdetectie en beeldsegmentatie. Het is ook een YOLOv8-afhankelijkheid. Installeer het pip gebruiken door de onderstaande opdracht uit te voeren.
    pip ultralytics installeren
  5. Deze opdracht installeert het vooraf getrainde model van de YOLOv8, yolov8n.pt. Test het model door de onderstaande opdrachten uit te voeren om een ​​detectie uit te voeren met vooraf getrainde gewichten op respectievelijk de door u gekozen afbeelding of video met behulp van YOLOv8.
    #beeld detectie
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"

    #videodetectie
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"

    Als alles perfect werkt, zullen de resultaten beschikbaar zijn in de jolov8project map in de loopt/detect/exp submap.

Uw aangepaste dataset voorbereiden

De stappen om uw aangepaste dataset voor te bereiden, omvatten het verzamelen van gegevens, het labelen van gegevens en het splitsen van gegevens (training, testen, validatie).

Gegevensverzameling

Dit is het proces van het verzamelen van een set afbeeldingen met de objecten die u wilt detecteren. Zorg ervoor dat u afbeeldingen van hoge kwaliteit gebruikt, in focus en dat de objecten duidelijk zichtbaar zijn. U kunt verschillende tools gebruiken om afbeeldingen te verzamelen, zoals Google Afbeeldingen, Flickr of uw eigen camera. Als u geen afbeeldingsgegevensset hebt, gebruikt u de gegevensset van de openafbeeldingen databank. In dit artikel wordt het veiligheidsbeeld bouwplaats gebruikt dataset van Kaggle.

Gegevens labelen

Nadat je je afbeeldingen hebt verzameld, moet je ze labelen. Dit betekent het identificeren van de objecten in elke afbeelding en hun begrenzingsvakken. Er zijn verschillende tools beschikbaar om u te helpen uw gegevens te labelen, zoals LabelImg, CVAT en Roboflow. Deze tools zijn allemaal gratis te gebruiken.

De gegevens splitsen

Om machine learning-modellen te trainen, moet u uw gegevens opsplitsen in trainings- en testsets. Probeer een splitsingsratio van 70%-30% te gebruiken bij het gebruik van grote hoeveelheden gegevens. Houd anders vast aan 80% -20% om te voorkomen dat uw model te veel of te weinig past.

Gebruik gesplitste mappen, om uw gegevens willekeurig op te splitsen in de trein-, test- en validatiesets met de door u gewenste splitsingsverhouding.

YOLOv8 configureren voor uw dataset

Nadat u uw gegevens hebt gelabeld, gaat u verder met het configureren van YOLOv8 voor uw aangepaste gegevensset. Dit omvat het maken van een configuratiebestand dat het volgende specificeert:

  • Het pad naar uw trainingsgegevens.
  • Het pad naar uw validatiegegevens.
  • Het aantal klassen dat u wilt detecteren.

Maak een bestand config.yaml om de configuratie op te slaan:

pad:(datasetmappad)
trein:(treingegevenssetmappad)
test:(testgegevenssetmappad)
geldig:(geldigmakinggegevenssetmappad)

# Klassen
nc:5# vervang op basis van het aantal klassen van uw dataset

# Klasse namen
# vervang alle klassennamen door de namen van je eigen klassen
namen:['klas 1','klasse2','klasse3','klasse4','klasse5']

Het maken van het configuratiebestand is een handige manier om de cruciale parameters voor uw computervisiemodel te structureren en op te slaan. Zorg ervoor dat u het bestand config.yaml bijwerkt volgens de aard en structuur van uw dataset.

Zorg ervoor dat u de juiste paden voor uw datasets gebruikt, aangezien het trainen van het model volledig afhankelijk is van het configuratiebestand.

YOLOv8 trainen op aangepaste gegevens

Nadat u het configuratiebestand hebt gemaakt, begint u met het trainen van YOLOv8. Gebruik de opdrachtregeltool YOLOv8 om uw model te trainen. De opdrachtregeltool gebruikt verschillende parameters, zoals het pad naar het configuratiebestand, het aantal tijdperken en de afbeeldingsgrootte als volgt:

yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640

Deze opdracht bestaat uit verschillende onderdelen.

taak stelt het type taak in: detecteren, segmenteren of classificeren. modus vertegenwoordigt een actie: trainen, voorspellen, val, exporteren, volgen of benchmarken. model is het te gebruiken model, in dit geval yolov8n.pt. Je kunt ook yolov8s/yolov8l/yolov8x gebruiken.

tijdperken staat voor het aantal trainingsrondes (10). imgsz vertegenwoordigt de afbeeldingsgrootte (640). De afbeeldingsgrootte moet altijd worden ingesteld op een veelvoud van 32.

Hier is een voorbeeld van de uitvoer die u kunt verwachten:

De tijd die nodig is voor training is afhankelijk van de grootte van uw dataset, het aantal tijdperken en het aantal klassen dat u wilt detecteren. Zodra het trainingsproces is voltooid, beschikt u over een getraind YOLOv8-model dat u gaat gebruiken om objecten in afbeeldingen en video's te detecteren.

Nadat de training is voltooid, voert u conclusies uit met de nieuwe gewichten, best.pt

yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"

Navigeer naar de runs/train/exp/weights/best.pt directory om toegang te krijgen tot de op maat getrainde gewichten. YOLOv8 heeft het voorspelde beeld opgeslagen in de loopt/detect/exp submap.

De prestaties van het model evalueren

U kunt de prestaties van het YOLOv8-model evalueren met behulp van de volgende opdracht die het model evalueert op een reeks testafbeeldingen:

yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640

De verwachte resultaten zijn als volgt:

Het evaluatieproces genereert verschillende statistieken, zoals precisie, herinnering en F1-score. De precisiemetriek meet het percentage objecten dat correct wordt gedetecteerd. De recall-metriek meet het percentage objecten dat YOLOv8 detecteert. De F1-score is een gewogen gemiddelde van de precisie- en herinneringsstatistieken.

Uw aangepaste YOLOv8-model implementeren

Test de prestaties van uw YOLOv8-model.

yolo detect predict model=path/to/best.pt source='path/to/image.jpg'

De uitvoer is als volgt:

Sla vervolgens de gewichten van het model op in een bestand.

yolo export model=path/to/best.pt format=onnx

Gebruik het bestand om het model in uw toepassing te laden en gebruik het om objecten in realtime te detecteren. Als u het model implementeert op een cloud dienstverlening, gebruik de cloudservice om objecten te detecteren in afbeeldingen en video's die op de service staan.

YOLOv8 afhaalmaaltijden

Het team van Ultralytics heeft de modellen van de YOLO-serie continu verbeterd. Hierdoor zijn ze toonaangevend geworden op het gebied van objectdetectietechnologie en op het gebied van computervisie.

De YOLOv8 is een verbeterd model dat u kunt gebruiken voor vele soorten computervisieprojecten.