Kako usposobiti nabor podatkov po meri z YOLOv5?

Kako usposobiti nabor podatkov po meri z YOLOv5?

Izvorno vozlišče: 1953267

Predstavitev

Videli smo nekaj modnih izrazov za umetno inteligenco in globoko učenje, kot so vnaprej pripravljeni modeli, prenosno učenje itd. Naj vas izobrazim s široko uporabljeno tehnologijo in eno najpomembnejših in najučinkovitejših: prenosno učenje z YOLOv5.

Pogledaš samo enkrat ali YOLO je ena najpogosteje uporabljenih metod identifikacije predmetov, ki temeljijo na globokem učenju. Z uporabo nabora podatkov po meri vam bo ta članek pokazal, kako usposobiti eno njegovih najnovejših različic, YOLOv5.

Učni cilji 

  1. Ta članek se bo osredotočil predvsem na usposabljanje modela YOLOv5 za implementacijo nabora podatkov po meri.
  2. Videli bomo, kaj so vnaprej usposobljeni modeli in kaj je transferno učenje.
  3. Razumeli bomo, kaj je YOLOv5 in zakaj uporabljamo različico 5 YOLO.

Torej, brez izgubljanja časa, začnimo s postopkom

Kazalo vsebine

  1. Vnaprej usposobljeni modeli
  2. Prenosno učenje
  3. Kaj in zakaj YOLOv5?
  4. Koraki, vključeni v prenosno učenje
  5. Izvajanje
  6. Nekaj ​​izzivov, s katerimi se lahko soočite
  7. zaključek

Predhodno usposobljeni modeli

Morda ste že slišali, da podatkovni znanstveniki pogosto uporabljajo izraz »predizurjeni model«. Po razlagi, kaj počne model/omrežje globokega učenja, bom razložil izraz. Model globokega učenja je model, ki vsebuje različne plasti, zložene skupaj, tako da služijo enemu samemu namenu, kot je razvrščanje, odkrivanje itd. Mreže globokega učenja se učijo tako, da odkrijejo zapletene strukture v podatkih, ki so jim posredovani, in shranijo uteži v datoteko, ki se kasneje uporabljajo za izvajanje podobnih nalog. Vnaprej usposobljeni modeli so že usposobljeni modeli globokega učenja. To pomeni, da so že usposobljeni za ogromen nabor podatkov, ki vsebuje milijone slik.

Tukaj je opisano TensorFlow spletno mesto opredeljuje vnaprej pripravljene modele: Vnaprej naučen model je shranjeno omrežje, ki je bilo predhodno naučeno na velikem naboru podatkov, običajno na obsežni nalogi klasifikacije slik.

Nekateri zelo optimizirani in izredno učinkoviti predhodno usposobljeni modeli so na voljo na internetu. Za opravljanje različnih nalog se uporabljajo različni modeli. Nekateri vnaprej usposobljeni modeli so VGG-16, VGG-19, YOLOv5, YOLOv3 in ResNet 50.

Kateri model uporabiti, je odvisno od naloge, ki jo želite opraviti. Na primer, če želim izvesti odkrivanje predmetov nalogo, bom uporabil model YOLOv5.

Prenosno učenje

Prenosno učenje je najpomembnejša tehnika, ki olajša nalogo podatkovnega znanstvenika. Usposabljanje modela je težka in dolgotrajna naloga; če se model usposobi iz nič, običajno ne daje zelo dobrih rezultatov. Tudi če model urimo podobno kot predhodno usposobljen model, ne bo deloval tako učinkovito in lahko traja tedne, da se model usposobi. Namesto tega lahko uporabimo vnaprej usposobljene modele in uporabimo že naučene uteži tako, da jih urimo na naboru podatkov po meri za izvedbo podobne naloge. Ti modeli so zelo učinkoviti in izpopolnjeni v smislu arhitekture in zmogljivosti, na vrh pa so se prebili z boljšimi rezultati na različnih tekmovanjih. Ti modeli se usposabljajo na zelo velikih količinah podatkov, zaradi česar so bolj raznoliki v znanju.

Prenos učenja torej v bistvu pomeni prenos znanja, pridobljenega z usposabljanjem modela na prejšnjih podatkih, da bi se model bolje in hitreje naučil izvajati drugačno, a podobno nalogo.

Na primer, uporaba YOLOv5 za zaznavanje predmeta, vendar je predmet nekaj drugega kot prej uporabljeni podatki predmeta.

Kaj in zakaj YOLOv5?

YOLOv5 je vnaprej usposobljen model, ki pomeni, da pogledate samo enkrat. Različica 5 se uporablja za odkrivanje predmetov v realnem času in se je izkazala za zelo učinkovito v smislu natančnosti in časa sklepanja. Obstajajo še druge različice YOLO, a kot bi lahko predvideli, YOLOv5 deluje bolje kot druge različice. YOLOv5 je hiter in enostaven za uporabo. Temelji na ogrodju PyTorch, ki ima večjo skupnost kot Yolo v4 Darknet.

Yolov5

Zdaj si bomo ogledali arhitekturo YOLOv5.

Struktura je morda videti zmedena, vendar ni pomembno, saj nam ni treba gledati na arhitekturo, namesto da neposredno uporabimo model in uteži.

Pri prenosnem učenju uporabljamo nabor podatkov po meri, tj. podatke, ki jih model še nikoli ni videl, ALI podatke, na katerih se model ne uri. Ker je model že naučen na velikem naboru podatkov, že imamo uteži. Zdaj lahko urimo model za več epoh na podatkih, na katerih želimo delati. Usposabljanje je potrebno, saj je model prvič videl podatke in bo za izvedbo naloge zahteval nekaj znanja.

Koraki, vključeni v prenosno učenje

Transferno učenje je preprost proces, ki ga lahko izvedemo v nekaj preprostih korakih:

  1. Priprava podatkov
  2. Pravi format za opombe
  3. Če želite, spremenite nekaj plasti
  4. Ponovno usposobite model za nekaj ponovitev
  5. Potrdi/testiraj

Priprava podatkov

Priprava podatkov je lahko dolgotrajna, če so vaši izbrani podatki nekoliko veliki. Priprava podatkov pomeni označevanje slik, kar je postopek, pri katerem slike označite tako, da okrog predmeta na sliki naredite okvir. S tem bodo koordinate označenega predmeta shranjene v datoteko, ki bo nato posredovana modelu za usposabljanje. Obstaja nekaj spletnih strani, kot npr Makesense.ai in roboflow.com, ki vam lahko pomaga pri označevanju podatkov. 

Tukaj je opisano, kako lahko označite podatke za model YOLOv5 na makesense.ai.

1. obisk https://www.makesense.ai/. 

2. Kliknite na začetek v spodnjem desnem kotu zaslona.

Yolov5

3. Izberite slike, ki jih želite označiti, tako da kliknete polje, označeno na sredini.

Naložite slike, ki jih želite označiti, in kliknite zaznavanje predmeta.
Yolov5

4. Po nalaganju slik boste pozvani, da ustvarite oznake za različne razrede nabora podatkov.

Na vozilu zaznam registrske tablice, zato je edina oznaka, ki jo bom uporabil, »registrska tablica«. Ustvarite lahko več oznak tako, da preprosto pritisnete Enter in kliknete gumb '+' na levi strani pogovornega okna.

Ko ustvarite vse nalepke, kliknite na začni projekt.

Yolov5

Če ste zamudili katero od oznak, jih lahko pozneje uredite tako, da kliknete dejanja in nato uredite oznake.

5. Začnite ustvarjati omejevalni okvir okoli predmeta na sliki. Ta vaja je na začetku morda nekoliko zabavna, vendar je lahko z zelo velikimi podatki utrujajoča.

mejna škatla

6. Ko označite vse slike, morate shraniti datoteko, ki bo vsebovala koordinate omejevalnih okvirjev skupaj z razredom.

Zato se morate pomakniti do gumba za dejanja in klikniti opombe za izvoz. Ne pozabite označiti možnosti »Paket zip, ki vsebuje datoteke v formatu YOLO«, saj boste tako shranili datoteke v pravilni obliki, kot je zahtevano v modelu YOLO.

Model YOLO

7. To je pomemben korak, zato ga natančno upoštevajte.

Ko imate vse datoteke in slike, ustvarite mapo s poljubnim imenom. Kliknite na mapo in ustvarite še dve mapi z imenom slike in oznake znotraj mape. Ne pozabite poimenovati mape enako kot zgoraj, saj model samodejno išče oznake, potem ko podate vadbeno pot v ukaz.

Da bi vam predstavili mapo, sem ustvaril mapo z imenom 'CarsData' in v tej mapi naredil dve mapi – 'images' in 'labels.'

yolov5

Znotraj dveh map morate narediti še dve mapi z imenom 'train' in 'val'. V mapi s slikami lahko slike razdelite po svoji volji, vendar bodite previdni pri razdeljevanju nalepk, saj se morajo nalepke ujemati s slikami, ki ste jih razdelili.

8. Zdaj naredite datoteko zip mape in jo naložite na pogon, da jo lahko uporabimo v sodelovanju.

Izvajanje

Zdaj bomo prišli do izvedbenega dela, ki je zelo preprost, a zapleten. Če ne veste, katere datoteke natančno spremeniti, ne boste mogli usposobiti modela na naboru podatkov po meri. 

Tukaj so torej kode, ki jih morate upoštevati za usposabljanje modela YOLOv5 na naboru podatkov po meri

Priporočam, da za to vadnico uporabite google colab, saj ponuja tudi GPE, ki omogoča hitrejše izračune.

1. Klon !git https://github.com/ultralytics/yolov5
S tem boste naredili kopijo repozitorija YOLOv5, ki je repozitorij GitHub, ki ga je ustvaril ultralytics.

2. cd yolov5
To je ukaz lupine ukazne vrstice, ki se uporablja za spremembo trenutnega delovnega imenika v imenik YOLOv5.

3. !pip install -r requirements.txt
Ta ukaz bo namestil vse pakete in knjižnice, uporabljene pri usposabljanju modela.

4. !unzip '/content/drive/MyDrive/CarsData.zip'
Razpakiranje mape, ki vsebuje slike in oznake v google colab

Tukaj je najpomembnejši korak …

Zdaj ste izvedli skoraj vse korake in morate napisati še eno vrstico kode, ki bo usposobila model, vendar morate pred tem izvesti še nekaj korakov in spremeniti nekaj imenikov, da podate pot svojemu naboru podatkov po meri in uri svoj model na teh podatkih.

Tukaj je tisto, kar morate storiti.

Ko izvedete zgornje 4 korake, boste imeli mapo yolov5 v svojem google colabu. Pojdite v mapo yolov5 in kliknite mapo 'data'. Zdaj boste videli mapo z imenom 'coco128.yaml'. 

yolov5

Nadaljujte in prenesite to mapo.

Ko je mapa prenesena, jo morate nekaj spremeniti in jo naložiti nazaj v isto mapo, iz katere ste jo prenesli.

Poglejmo zdaj vsebino datoteke, ki smo jo prenesli, in izgledala bo nekako takole.

yolov5

To datoteko bomo prilagodili glede na naš nabor podatkov in opombe.

Nabor podatkov smo že razpakirali na colab, zato bomo kopirali pot našega vlaka in potrditvene slike. Ko kopirate pot slik vlaka, ki bo v mapi z naborom podatkov in je videti nekako takole '/content/yolov5/CarsData/images/train', jo prilepite v datoteko coco128.yaml, ki smo jo pravkar prenesli.

Enako storite s preskusnimi in potrditvenimi slikami.

Zdaj, ko smo s tem končali, bomo omenili število razredov, kot je 'nc: 1'. Število razredov je v tem primeru samo 1. Nato bomo omenili ime, kot je prikazano na spodnji sliki. Odstranite vse ostale razrede in komentirani del, ki ni potreben, potem pa bi morala naša datoteka izgledati nekako takole.

jolo

Shranite to datoteko s poljubnim imenom. Shranil sem datoteko z imenom customPath.yaml in jo zdaj naložim nazaj v colab na isto mesto, kjer je bil coco128.yaml. 

Zdaj smo končali z delom za urejanje in smo pripravljeni na usposabljanje modela.

Zaženite naslednji ukaz, da usposobite svoj model za nekaj interakcij na svojem naboru podatkov po meri.

Ne pozabite spremeniti imena datoteke, ki ste jo naložili ('customPath.yaml). Spremenite lahko tudi število epoh, za katere želite usposobiti model. V tem primeru bom model usposobil samo za 3 obdobja.

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

Upoštevajte pot, kamor naložite mapo. Če se pot spremeni, ukazi sploh ne bodo delovali.

Ko zaženete ta ukaz, bi moral vaš model začeti trenirati in na zaslonu boste videli nekaj takega.

jolo

jolo

Ko so vse epohe zaključene, lahko vaš model preizkusite na kateri koli sliki.

V datoteki detect.py lahko naredite več prilagoditev glede tega, kaj želite shraniti in kaj vam ni všeč, zaznav, kjer so zaznane registrske tablice itd.

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

S tem ukazom lahko preizkusite napoved modela na nekaterih slikah.

Nekateri izzivi, s katerimi se lahko soočite

Čeprav so zgoraj razloženi koraki pravilni, lahko naletite na nekaj težav, če jih ne upoštevate natančno. 

  1. Napačna pot: To je lahko glavobol ali težava. Če ste nekje pri urjenju slike vnesli napačno pot, je morda težko prepoznati in modela ne boste mogli usposobiti.
  2. Napačna oblika oznak: To je zelo razširjena težava, s katero se srečujejo ljudje med usposabljanjem YOLOv5. Model sprejme samo obliko, v kateri ima vsaka slika svojo besedilno datoteko z želeno obliko znotraj. Pogosto se v omrežje posreduje datoteka formata XLS ali ena datoteka CSV, kar povzroči napako. Če podatke prenašate od nekje, lahko namesto označevanja vsake slike obstaja drugačna oblika datoteke, v kateri so oznake shranjene. Tukaj je članek o pretvorbi formata XLS v format YOLO. (povezava po zaključku članka).
  3. Nepravilno poimenovanje datotek: Nepravilno poimenovanje datoteke bo ponovno povzročilo napako. Bodite pozorni na korake pri poimenovanju map in se izognite tej napaki.

zaključek

V tem članku smo izvedeli, kaj je transferno učenje in vnaprej usposobljeni model. Naučili smo se, kdaj in zakaj uporabiti model YOLOv5 in kako usposobiti model na naboru podatkov po meri. Šli smo skozi vsak korak, od priprave nabora podatkov do spreminjanja poti in njihovega končnega podajanja v omrežje pri izvajanju tehnike, in temeljito razumeli korake. Ogledali smo si tudi pogoste težave, s katerimi se soočamo med usposabljanjem YOLOv5, in njihove rešitve. Upam, da vam je ta članek pomagal usposobiti vaš prvi YOLOv5 na naboru podatkov po meri in da vam je članek všeč.

Časovni žig:

Več od Analitika Vidhya