YOLOv8s billedgenkendelse er enestående, men træning af modellen er en vigtig opgave, du ikke bør overse.

YOLOv8 er en real-time objektdetektionsalgoritme, der er meget udbredt inden for objektdetektion. Det er en del af You Only Look Once (YOLO) serien udviklet af Ultralytics. Algoritmen sporer, registrerer, segmenterer forekomster, estimerer positurer og klassificerer objekter i billeder og videoer. Det sigter mod at være hurtigere og mere præcist end sine forgængere algoritmer.

Brug af YOLOv8 på eksperimentelle datasæt som CIFAR-10 og CIFAR-100 er ofte lettere for Proof-of-Concept-projekter (POC) end på datasæt fra den virkelige verden, der kræver tilpassede datasæt.

Denne tutorial vil lede dig gennem de trin, der er involveret i at træne YOLOv8 på brugerdefinerede data.

Opsætning af Python-miljøet

Start med at installere udviklingsmiljøet for projektet ved at følge instruktionerne nedenfor.

  1. Gå til terminalen og opret en ny mappe med navnet yolov8projekt:
    mkdir yolov8project
  2. Naviger til projektbiblioteket og skabe et virtuelt miljø:
    cd yolov8project
    python -m venv env
  3. instagram viewer
  4. Aktiver derefter det virtuelle miljø.
    # På Windows
    env/Scripts/activate

    # På Linux/macOS
    source env/bin/activate

    For at køre din kode skal du installere Ultralytics, et bibliotek til objektdetektering og billedsegmentering. Det er også en YOLOv8-afhængighed. Installer det ved hjælp af pip ved at køre kommandoen nedenfor.
    pip installere ultralytics
  5. Denne kommando installerer YOLOv8's præ-trænede model, yolov8n.pt. Test modellen ved at køre nedenstående kommandoer for at udføre en detektion med fortrænede vægte på dit valgte billede eller video ved hjælp af YOLOv8.
    #billedgenkendelse
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"

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

    Hvis alt fungerer perfekt, vil resultaterne være tilgængelige i yolov8projekt mappe i kører/detect/exp undermappe.

Forberedelse af dit brugerdefinerede datasæt

Trinene til at forberede dit brugerdefinerede datasæt omfatter dataindsamling, datamærkning og dataopdeling (træning, test, validering).

Dataindsamling

Dette er processen med at indsamle et sæt billeder, der har de objekter, du vil opdage. Sørg for at bruge billeder af høj kvalitet, i fokus, og objekterne er tydeligt synlige. Du kan bruge en række værktøjer til at indsamle billeder, såsom Google Billeder, Flickr eller dit eget kamera. Hvis du ikke har et billeddatasæt, skal du bruge datasættet fra åbne billeder database. Denne artikel vil bruge byggepladssikkerhedsbilledet datasæt fra Kaggle.

Datamærkning

Når du har samlet dine billeder, skal du mærke dem. Dette betyder at identificere objekterne i hvert billede og deres afgrænsningsfelter. Der er flere tilgængelige værktøjer til at hjælpe dig med at mærke dine data, såsom LabelImg, CVAT og Roboflow. Disse værktøjer er alle gratis at bruge.

Opdeling af data

For at træne maskinlæringsmodeller skal du opdele dine data i trænings- og testsæt. Prøv at bruge et splitforhold på 70%-30%, når du bruger store mængder data. Ellers skal du holde dig til 80%-20% for at undgå at over- eller undermontere din model.

Brug opdelte mapper, for tilfældigt at opdele dine data i tog-, test- og valideringssættene med dit ønskede opdelingsforhold.

Konfiguration af YOLOv8 til dit datasæt

Efter at have mærket dine data, skal du fortsætte med at konfigurere YOLOv8 til dit brugerdefinerede datasæt. Dette involverer oprettelse af en konfigurationsfil, der specificerer følgende:

  • Vejen til dine træningsdata.
  • Stien til dine valideringsdata.
  • Antallet af klasser, du ønsker at registrere.

Opret en config.yaml-fil for at gemme konfigurationen:

sti:(datasætvejvisersti)
tog:(togdatasætfoldersti)
prøve:(prøvedatasætfoldersti)
gyldig:(valideringdatasætfoldersti)

# Klasser
nc:5# erstat baseret på dit datasæts antal klasser

# Klassenavne
# udskift alle klassenavne med dine egne klassers navne
navne:['klasse1','klasse2','klasse 3','klasse 4','klasse5']

Oprettelse af konfigurationsfilen er en nyttig måde at strukturere og gemme de afgørende parametre for din computervisionsmodel. Sørg for at opdatere filen config.yaml i overensstemmelse med dit datasæts art og struktur.

Sørg for at bruge de korrekte stier til dine datasæt, da træning af modellen er fuldt ud afhængig af konfigurationsfilen.

Træning af YOLOv8 i brugerdefinerede data

Når du har oprettet konfigurationsfilen, skal du begynde at træne YOLOv8. Brug kommandolinjeværktøjet YOLOv8 til at træne din model. Kommandolinjeværktøjet tager flere parametre, såsom stien til konfigurationsfilen, antallet af epoker og billedstørrelsen som følger:

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

Der er flere dele af denne kommando.

opgave angiver opgavetypen: opdage, segmentere eller klassificere. mode repræsenterer en handling: tog, forudsige, val, eksport, spor eller benchmark. model er den model, der skal bruges, i dette tilfælde yolov8n.pt. Du kan også bruge yolov8s/yolov8l/yolov8x.

epoker repræsenterer antallet af træningsrunder (10). imgsz repræsenterer billedstørrelsen (640). Billedstørrelsen skal altid indstilles til et multiplum af 32.

Her er et eksempel på det output, du kan forvente:

Den tid, der bruges til træning, afhænger af størrelsen af ​​dit datasæt, antallet af epoker og antallet af klasser, du vil opdage. Når træningsprocessen er afsluttet, vil du have en trænet YOLOv8-model, som du vil bruge til at opdage objekter i billeder og videoer.

Når træningen er færdig, skal du konkludere med de nye vægte, best.pt

yolo task=detect mode=forudsig model="løb/tog/vægte/bedste.pt" source="image.png"

Naviger til runs/train/exp/weights/best.pt bibliotek for at få adgang til de specialtrænede vægte. YOLOv8 vil have gemt det forudsagte billede i kører/detect/exp undermappe.

Evaluering af modellens ydeevne

Du kan evaluere ydeevnen af ​​YOLOv8-modellen ved hjælp af følgende kommando, som evaluerer modellen på et sæt testbilleder:

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

De forventede resultater er som følger:

Evalueringsprocessen vil generere forskellige målinger, såsom præcision, tilbagekaldelse og F1-score. Præcisionsmetrikken måler procentdelen af ​​objekter, der er registreret korrekt. Recall-metrikken måler procentdelen af ​​objekter, som YOLOv8 registrerer. F1-score er et vægtet gennemsnit af præcisions- og genkaldsmetrikkene.

Implementering af din tilpassede YOLOv8-model

Test ydeevnen af ​​din YOLOv8-model.

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

Udgangen er som følger:

Gem derefter modellens vægte i en fil.

yolo eksport model=sti/til/best.pt format=onnx

Brug filen til at indlæse modellen i din applikation og brug den til at detektere objekter i realtid. Hvis du implementerer modellen til en cloud-tjeneste, brug skytjenesten til at registrere objekter i billeder og videoer, der er på tjenesten.

YOLOv8 Takeaway

Ultralytics-teamet har løbende forbedret YOLO-seriens modeller. Dette har gjort dem til industriledere inden for objektdetektionsteknologi og computersynsområdet.

YOLOv8 er en forbedret model, du kan bruge til at håndtere mange typer computervisionsprojekter.