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.
- Gå til terminalen og lag en ny katalog med navnet yolov8prosjekt:
mkdir yolov8project
- Naviger til prosjektkatalogen og lage et virtuelt miljø:
cd yolov8project
python -m venv env - Deretter aktiverer du det virtuelle miljøet.
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.# På Windows
env/Scripts/activate# På Linux/macOS
source env/bin/activatepip installer ultralytics
- 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.
Hvis alt fungerer perfekt, vil resultatene være tilgjengelige i yolov8prosjekt katalogen i kjører/oppdag/eksp underkatalog.#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"
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.