YOLOv8s bildegjenkjenning er enestående, men å trene modellen er en viktig oppgave du ikke bør overse.

YOLOv8 er en sanntids-objektdeteksjonsalgoritme som er mye brukt innen objektdeteksjon. Den er en del av You Only Look Once (YOLO)-serien utviklet av Ultralytics. Algoritmen sporer, oppdager, segmenterer forekomster, anslår posering og klassifiserer objekter i bilder og videoer. Den har som mål å være raskere og mer nøyaktig enn forgjengerens algoritmer.

Å bruke YOLOv8 på eksperimentelle datasett som CIFAR-10 og CIFAR-100 er ofte enklere for Proof-of-Concept (POC)-prosjekter enn på virkelige datasett som krever tilpassede datasett.

Denne opplæringen vil lede deg gjennom trinnene som er involvert i å trene YOLOv8 på tilpassede data.

Sette opp Python-miljøet

Start med å installere utviklingsmiljøet for prosjektet, følg instruksjonene nedenfor.

  1. Gå til terminalen og lag en ny katalog med navnet yolov8prosjekt:
    mkdir yolov8project
  2. Naviger til prosjektkatalogen og lage et virtuelt miljø:
    cd yolov8project
    python -m venv env
  3. instagram viewer
  4. Deretter aktiverer du det virtuelle miljøet.
    # På Windows
    env/Scripts/activate

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

    For å kjøre koden din må du installere Ultralytics, et bibliotek for objektdeteksjon og bildesegmentering. Det er også en YOLOv8-avhengighet. Installer den ved hjelp av pip ved å kjøre kommandoen nedenfor.
    pip installer ultralytics
  5. Denne kommandoen installerer YOLOv8s ferdigtrente modell, yolov8n.pt. Test modellen ved å kjøre kommandoene nedenfor for å gjøre en deteksjon med forhåndstrente vekter på ditt valgte bilde eller video ved å bruke YOLOv8.
    #bildegjenkjenning
    yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"

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

    Hvis alt fungerer perfekt, vil resultatene være tilgjengelige i yolov8prosjekt katalogen i kjører/oppdag/eksp underkatalog.

Forbereder ditt tilpassede datasett

Trinnene for å forberede det tilpassede datasettet inkluderer datainnsamling, datamerking og datadeling (opplæring, testing, validering).

Datainnsamling

Dette er prosessen med å samle et sett med bilder som har objektene du ønsker å oppdage. Sørg for å bruke bilder av høy kvalitet, i fokus, og objektene er godt synlige. Du kan bruke en rekke verktøy for å samle bilder, for eksempel Google Bilder, Flickr eller ditt eget kamera. Hvis du ikke har et bildedatasett, bruk datasettet fra åpne bilder database. Denne artikkelen vil bruke sikkerhetsbildet for byggeplassen datasett fra Kaggle.

Datamerking

Etter å ha samlet inn bildene dine, må du merke dem. Dette betyr å identifisere objektene i hvert bilde og deres avgrensningsbokser. Det er flere verktøy tilgjengelig for å hjelpe deg med å merke dataene dine, for eksempel LabelImg, CVAT og Roboflow. Disse verktøyene er alle gratis å bruke.

Splitting av data

For å trene maskinlæringsmodeller må du dele opp dataene dine i trenings- og testsett. Prøv å bruke et 70%-30% delforhold når du bruker store datamengder. Ellers, hold deg til 80%-20% for å unngå å over- eller undertilpasse modellen din.

Bruk delte mapper, for å dele dataene dine tilfeldig inn i tog-, test- og valideringssettene med ønsket delforhold.

Konfigurere YOLOv8 for datasettet ditt

Etter å ha merket dataene dine, fortsett med å konfigurere YOLOv8 for ditt egendefinerte datasett. Dette innebærer å lage en konfigurasjonsfil som spesifiserer følgende:

  • Veien til treningsdataene dine.
  • Banen til valideringsdataene dine.
  • Antall klasser du vil oppdage.

Opprett en config.yaml-fil for å lagre konfigurasjonen:

sti:(datasettkatalogsti)
tog:(togdatasettmappesti)
test:(testdatasettmappesti)
gyldig:(valideringdatasettmappesti)

# Klasser
nc:5# erstatt basert på datasettets antall klasser

# Klassenavn
# erstatte alle klassenavn med dine egne klassers navn
navn:['klasse1','klasse2','klasse3','klasse4','klasse5']

Å lage konfigurasjonsfilen er en nyttig måte å strukturere og lagre de avgjørende parameterne for datamaskinsynsmodellen. Sørg for å oppdatere config.yaml-filen i henhold til datasettets natur og struktur.

Sørg for å bruke de riktige banene for datasettene dine siden trening av modellen er fullt avhengig av konfigurasjonsfilen.

Trening YOLOv8 på tilpassede data

Når du har opprettet konfigurasjonsfilen, begynn å trene YOLOv8. Bruk kommandolinjeverktøyet YOLOv8 for å trene modellen din. Kommandolinjeverktøyet tar flere parametere, for eksempel banen til konfigurasjonsfilen, antall epoker og bildestørrelsen som følger:

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

Det er flere deler av denne kommandoen.

oppgave angir oppgavetypen: oppdage, segmentere eller klassifisere. modus representerer en handling: tog, forutsi, val, eksport, spor eller benchmark. modell er modellen som skal brukes, i dette tilfellet yolov8n.pt. Du kan også bruke yolov8s/yolov8l/yolov8x.

epoker representerer antall treningsrunder (10). imgsz representerer bildestørrelsen (640). Bildestørrelsen skal alltid settes til et multiplum av 32.

Her er et eksempel på resultatet du kan forvente:

Tiden som brukes til trening avhenger av størrelsen på datasettet ditt, antall epoker og antall klasser du vil oppdage. Når treningsprosessen er fullført, vil du ha en opplært YOLOv8-modell som du skal bruke til å oppdage objekter i bilder og videoer.

Etter at treningen er fullført, gjør slutninger med de nye vektene, best.pt

yolo task=detect mode=forutsi modell="løper/tog/vekter/best.pt" source="image.png"

Naviger til runs/train/exp/weights/best.pt katalog for å få tilgang til de spesialtrente vektene. YOLOv8 vil ha lagret det forutsagte bildet i kjører/oppdag/eksp underkatalog.

Evaluering av modellens ytelse

Du kan evaluere ytelsen til YOLOv8-modellen ved å bruke følgende kommando som evaluerer modellen på et sett med testbilder:

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

De forventede resultatene er som følger:

Evalueringsprosessen vil generere ulike beregninger, for eksempel presisjon, tilbakekalling og F1-score. Presisjonsmetrikken måler prosentandelen av objekter som er riktig oppdaget. Recall-metrikken måler prosentandelen av objekter som YOLOv8 oppdager. F1-poengsummen er et vektet gjennomsnitt av presisjons- og tilbakekallingsverdiene.

Distribuere din egendefinerte YOLOv8-modell

Test ytelsen til YOLOv8-modellen din.

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

Utgangen er som følger:

Lagre deretter modellens vekter i en fil.

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

Bruk filen til å laste modellen inn i applikasjonen din og bruk den til å oppdage objekter i sanntid. Hvis du distribuerer modellen til en skytjeneste, bruk skytjenesten til å oppdage objekter i bilder og videoer som er på tjenesten.

YOLOv8 Takeaway

Ultralytics-teamet har kontinuerlig forbedret YOLO-seriens modeller. Dette har gjort dem til industriledere innen objektdeteksjonsteknologi og datasynsfeltet.

YOLOv8 er en forbedret modell du kan bruke til å håndtere mange typer datasynsprosjekter.