Hvordan trene et tilpasset datasett med YOLOv5?

Hvordan trene et tilpasset datasett med YOLOv5?

Kilde node: 1953267

Introduksjon

Vi har sett noen fancy termer for AI og dyp læring, slik som forhåndstrente modeller, transfer learning osv. La meg utdanne deg med en mye brukt teknologi og en av de viktigste og mest effektive: Overføringslæring med YOLOv5.

You Only Look Once, eller YOLO er en av de mest brukte dyplæringsbaserte objektidentifikasjonsmetodene. Ved å bruke et tilpasset datasett vil denne artikkelen vise deg hvordan du trener opp en av de nyeste variantene, YOLOv5.

Læringsmål 

  1. Denne artikkelen vil hovedsakelig fokusere på opplæring av YOLOv5-modellen på en tilpasset datasettimplementering.
  2. Vi skal se hva forhåndstrente modeller er og se hva overføringslæring er.
  3. Vi vil forstå hva YOLOv5 er og hvorfor vi bruker versjon 5 av YOLO.

Så, uten å kaste bort tid, la oss komme i gang med prosessen

Innholdsfortegnelse

  1. Forutdannede modeller
  2. Overfør læring
  3. Hva og hvorfor YOLOv5?
  4. Trinn involvert i overføringslæring
  5. Gjennomføring
  6. Noen utfordringer du kan møte
  7. konklusjonen

Forhåndsutdannede modeller

Du har kanskje hørt at dataforskere bruker begrepet "pre-trent modell" mye. Etter å ha forklart hva en dyplæringsmodell/nettverk gjør, vil jeg forklare begrepet. En dyplæringsmodell er en modell som inneholder ulike lag stablet sammen for å tjene et ensomt formål, som klassifisering, deteksjon osv. Deep learning-nettverk lærer ved å oppdage kompliserte strukturer i dataene som blir matet til dem og lagre vektene i en fil som brukes senere til å utføre lignende oppgaver. Forhåndsutdannede modeller er allerede trente Deep Learning-modeller. Hva det betyr er at de allerede er trent på et enormt datasett som inneholder millioner av bilder.

Slik er tensorflow nettstedet definerer forhåndstrente modeller: En forhåndstrent modell er et lagret nettverk som tidligere ble trent på et stort datasett, typisk på en storskala bildeklassifiseringsoppgave.

Noen svært optimaliserte og usedvanlig effektive ferdig trente modeller er tilgjengelig på internett. Ulike modeller brukes til å utføre ulike oppgaver. Noen av de ferdigtrente modellene er VGG-16, VGG-19, YOLOv5, YOLOv3 og ResNet 50.

Hvilken modell du skal bruke avhenger av oppgaven du ønsker å utføre. For eksempel, hvis jeg ønsker å utføre en objektdeteksjon oppgave, vil jeg bruke YOLOv5-modellen.

Overfør læring

Overfør læring er den viktigste teknikken som letter oppgaven til en dataforsker. Å lære opp en modell er en heftig og tidkrevende oppgave; hvis en modell er trent fra bunnen av, gir det vanligvis ikke særlig gode resultater. Selv om vi trener en modell som ligner på en forhåndstrent modell, vil den ikke yte like effektivt, og det kan ta uker før en modell trener. I stedet kan vi bruke de forhåndstrente modellene og bruke de allerede lærte vektene ved å trene dem på et tilpasset datasett for å utføre en lignende oppgave. Disse modellene er svært effektive og raffinerte når det gjelder arkitektur og ytelse, og de har kommet seg til toppen ved å prestere bedre i ulike konkurranser. Disse modellene er trent på svært store datamengder, noe som gjør dem mer mangfoldige i kunnskap.

Så overføre læring betyr i utgangspunktet å overføre kunnskap oppnådd ved å trene modellen på tidligere data for å hjelpe modellen til å lære bedre og raskere for å utføre en annen, men lignende oppgave.

For eksempel ved å bruke en YOLOv5 for objektdeteksjon, men objektet er noe annet enn objektets tidligere data som ble brukt.

Hva og hvorfor YOLOv5?

YOLOv5 er en forhåndsopplært modell som står for at du bare ser når versjon 5 er brukt for sanntidsgjenkjenning av objekter og har vist seg å være svært effektiv når det gjelder nøyaktighet og slutningstid. Det finnes andre versjoner av YOLO, men som man ville forutse, yter YOLOv5 bedre enn andre versjoner. YOLOv5 er rask og enkel å bruke. Den er basert på PyTorch-rammeverket, som har et større fellesskap enn Yolo v4 Darknet.

Yolov5

Vi skal nå se på arkitekturen til YOLOv5.

Strukturen kan se forvirrende ut, men det spiller ingen rolle da vi ikke trenger å se på arkitekturen i stedet direkte bruke modellen og vektene.

I transfer learning bruker vi det tilpassede datasettet dvs. dataene modellen aldri har sett før ELLER dataene som modellen ikke er trent på. Siden modellen allerede er trent på et stort datasett, har vi allerede vektene. Vi kan nå trene modellen for en rekke epoker på dataene vi ønsker å jobbe med. Opplæring er nødvendig da modellen har sett dataene for første gang og vil kreve noe kunnskap for å utføre oppgaven.

Trinn involvert i overføringslæring

Overføringslæring er en enkel prosess, og vi kan gjøre det i noen få enkle trinn:

  1. Dataforberedelse
  2. Riktig format for merknadene
  3. Bytt noen lag hvis du vil
  4. Tren modellen på nytt for noen gjentakelser
  5. Validere/Test

Dataklargjøring

Dataforberedelse kan være tidkrevende hvis dataene du har valgt er litt store. Dataforberedelse betyr å kommentere bildene, som er en prosess hvor du merker bildene ved å lage en boks rundt objektet i bildet. Ved å gjøre dette vil koordinatene til objektet som er markert lagres i en fil som deretter mates til modellen for trening. Det finnes noen få nettsider, som f.eks makesense.ai og roboflow.com, som kan hjelpe deg med å merke dataene. 

Her er hvordan du kan kommentere dataene for YOLOv5-modellen på makesense.ai.

1. Besøk https://www.makesense.ai/. 

2. Klikk på kom i gang nederst til høyre på skjermen.

Yolov5

3. Velg bildene du vil merke ved å klikke på boksen som er uthevet i midten.

Last inn bildene du vil kommentere og klikk på objektdeteksjon.
Yolov5

4. Etter å ha lastet inn bildene, vil du bli bedt om å lage etiketter for datasettets forskjellige klasser.

Jeg oppdager bilskilt på et kjøretøy, så den eneste etiketten jeg kommer til å bruke er "License Plate." Du kan lage flere etiketter ved å trykke på Enter ved å klikke på '+'-knappen på venstre side av dialogboksen.

Etter at du har opprettet alle etikettene, klikk på start prosjekt.

Yolov5

Hvis du har gått glipp av noen etiketter, kan du redigere dem senere ved å klikke på handlinger og deretter redigere etiketter.

5. Begynn å lage en avgrensningsramme rundt objektet i bildet. Denne øvelsen kan være litt morsom i utgangspunktet, men med veldig store data kan det være slitsomt.

avgrensningsboks

6. Etter å ha kommentert alle bildene må du lagre filen som vil inneholde koordinatene til avgrensende bokser sammen med klassen.

Så du må gå til handlingsknappen og klikke på eksporter merknader, ikke glem å sjekke alternativet 'En zip-pakke som inneholder filer i YOLO-format', da dette vil lagre filene i riktig format som kreves i YOLO-modellen.

YOLO modell

7. Dette er et viktig skritt, så følg det nøye.

Etter at du har alle filene og bildene, lag en mappe med et hvilket som helst navn. Klikk på mappen og lag to mapper til med navnebilder og etiketter inne i mappen. Ikke glem å navngi mappen det samme som ovenfor, siden modellen automatisk søker etter etiketter etter at du mater treningsbanen i kommandoen.

For å gi deg en ide om mappen, har jeg laget en mappe kalt 'CarsData' og i den mappen laget to mapper - 'bilder' og 'etiketter'.

yolov5

Inne i de to mappene må du lage ytterligere to mapper som heter 'train' og 'val'. I bildermappen kan du dele bildene etter din vilje, men du må være forsiktig når du deler opp etiketten, da etikettene skal matche bildene du har delt

8. Lag nå en zip-fil av mappen og last den opp til stasjonen slik at vi kan bruke den i colab.

Gjennomføring

Vi kommer nå til implementeringsdelen, som er veldig enkel, men vanskelig. Hvis du ikke vet hvilke filer du skal endre nøyaktig, vil du ikke kunne trene modellen på det tilpassede datasettet. 

Så her er kodene du bør følge for å trene YOLOv5-modellen på et tilpasset datasett

Jeg anbefaler at du bruker google colab for denne opplæringen, da den også gir GPU som gir raskere beregninger.

1. !git-klone https://github.com/ultralytics/yolov5
Dette vil lage en kopi av YOLOv5-depotet, som er et GitHub-depot laget av ultralytics.

2. cd yolov5
Dette er en kommandolinjeskallkommando som brukes til å endre gjeldende arbeidskatalog til YOLOv5-katalogen.

3. !pip install -r requirements.txt
Denne kommandoen vil installere alle pakkene og bibliotekene som brukes i opplæringen av modellen.

4. !unzip '/content/drive/MyDrive/CarsData.zip'
Pakk ut mappen som inneholder bilder og etiketter i google colab

Her kommer det viktigste steget...

Du har nå utført nesten alle trinnene og må skrive en kode til som skal trene modellen, men før det må du utføre noen flere trinn og endre noen kataloger for å gi banen til det tilpassede datasettet ditt. og tren modellen din på disse dataene.

Her er hva du må gjøre.

Etter å ha utført de 4 trinnene ovenfor, vil du ha yolov5-mappen i google colab. Gå til yolov5-mappen, og klikk på 'data'-mappen. Nå vil du se en mappe som heter 'coco128.yaml'. 

yolov5

Gå videre og last ned denne mappen.

Etter at mappen er lastet ned, må du gjøre noen endringer i den og laste den opp tilbake til samme mappe som du lastet den ned fra.

La oss nå se på innholdet i filen vi har lastet ned, og den vil se omtrent slik ut.

yolov5

Vi skal tilpasse denne filen i henhold til datasettet og merknadene våre.

Vi har allerede pakket ut datasettet på colab, så vi skal kopiere banen til tog- og valideringsbildene våre. Etter å ha kopiert banen til togbildene, som vil være i datasett-mappen og ser omtrent slik ut '/content/yolov5/CarsData/images/train', limer du den inn i coco128.yaml-filen, som vi nettopp lastet ned.

Gjør det samme med test- og valideringsbildene.

Nå etter at vi er ferdige med dette, vil vi nevne antall klasser som 'nc: 1'. Antall klasser, i dette tilfellet, er kun 1. Vi vil da nevne navnet som vist på bildet nedenfor. Fjern alle de andre klassene og den kommenterte delen, som ikke er nødvendig, hvoretter filen vår skal se omtrent slik ut.

Yolo

Lagre denne filen med hvilket navn du ønsker. Jeg har lagret filen med navnet customPath.yaml og laster nå opp denne filen tilbake til colab på samme sted der coco128.yaml var. 

Nå er vi ferdige med redigeringsdelen og klare til å trene modellen.

Kjør følgende kommando for å trene modellen for noen få interaksjoner på det tilpassede datasettet.

Ikke glem å endre navnet på filen du har lastet opp ('customPath.yaml). Du kan også endre antall epoker du ønsker å trene modellen. I dette tilfellet skal jeg trene modellen kun i 3 epoker.

5. !python train.py –img 640 –batch 16 –epoker 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

Husk banen der du laster opp mappen. Hvis banen endres, vil ikke kommandoene fungere i det hele tatt.

Etter at du har kjørt denne kommandoen, skal modellen din begynne å trene, og du vil se noe slikt på skjermen.

Yolo

Yolo

Etter at alle epokene er fullført, kan modellen din testes på et hvilket som helst bilde.

Du kan gjøre litt mer tilpasning i detect.py-filen om hva du vil lagre og hva du ikke liker, oppdagelsene hvor bilskiltene oppdages osv.

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

Du kan bruke denne kommandoen til å teste prediksjonen til modellen på noen av bildene.

Noen utfordringer du kan møte

Selv om trinnene som er forklart ovenfor er riktige, er det noen problemer du kan møte hvis du ikke følger dem nøyaktig. 

  1. Feil vei: Dette kan være hodepine eller et problem. Hvis du har kommet inn på feil vei et sted i treningen av bildet, kan det ikke være lett å identifisere, og du vil ikke kunne trene modellen.
  2. Feil format på etiketter: Dette er et utbredt problem som folk står overfor når de trener en YOLOv5. Modellen godtar kun et format der hvert bilde har sin egen tekstfil med ønsket format inni. Ofte mates en XLS-formatfil eller en enkelt CSV-fil til nettverket, noe som resulterer i en feil. Hvis du laster ned dataene fra et sted, i stedet for å kommentere hvert eneste bilde, kan det være et annet filformat som etikettene lagres i. Her er en artikkel for å konvertere XLS-formatet til YOLO-formatet. (lenke etter ferdigstillelse av artikkelen).
  3. Ikke navngi filene riktig: Ikke navngi filen riktig vil igjen føre til en feil. Vær oppmerksom på trinnene mens du navngir mappene og unngå denne feilen.

konklusjonen

I denne artikkelen lærte vi hva overføringslæring er og den forhåndstrente modellen. Vi lærte når og hvorfor man skal bruke YOLOv5-modellen og hvordan man trener modellen på et tilpasset datasett. Vi gikk gjennom hvert eneste trinn, fra å klargjøre datasettet til å endre banene og til slutt mate dem til nettverket i implementeringen av teknikken, og forsto grundig trinnene. Vi så også på vanlige problemer man møter når man trener en YOLOv5 og løsningen på dem. Jeg håper denne artikkelen hjalp deg med å trene din første YOLOv5 på et tilpasset datasett og at du liker artikkelen.

Tidstempel:

Mer fra Analytics Vidhya