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
- Ta članek se bo osredotočil predvsem na usposabljanje modela YOLOv5 za implementacijo nabora podatkov po meri.
- Videli bomo, kaj so vnaprej usposobljeni modeli in kaj je transferno učenje.
- Razumeli bomo, kaj je YOLOv5 in zakaj uporabljamo različico 5 YOLO.
Torej, brez izgubljanja časa, začnimo s postopkom
Kazalo vsebine
- Vnaprej usposobljeni modeli
- Prenosno učenje
- Kaj in zakaj YOLOv5?
- Koraki, vključeni v prenosno učenje
- Izvajanje
- Nekaj izzivov, s katerimi se lahko soočite
- 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.
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:
- Priprava podatkov
- Pravi format za opombe
- Če želite, spremenite nekaj plasti
- Ponovno usposobite model za nekaj ponovitev
- 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.
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.
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.
Č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.
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.
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.'
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'.
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.
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.
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.
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.
- 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.
- 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).
- 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č.
Podobni
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. Dostopite tukaj.
- vir: https://www.analyticsvidhya.com/blog/2023/02/how-to-train-a-custom-dataset-with-yolov5/
- 1
- 10
- a
- Sposobna
- nad
- Sprejema
- Po
- natančnost
- dejavnosti
- po
- naprej
- AI
- vsi
- že
- zneski
- in
- Arhitektura
- okoli
- članek
- pozornosti
- samodejno
- Na voljo
- izogniti
- nazaj
- temeljijo
- V bistvu
- pred
- spodaj
- Boljše
- Bit
- Bottom
- Pasovi
- škatle
- Gumb
- previdni
- previdno
- primeru
- CD
- center
- izzivi
- spremenite
- Spremembe
- spreminjanje
- preveriti
- izbran
- razred
- razredi
- Razvrstitev
- Koda
- kako
- komentiral
- Skupno
- skupnost
- Končana
- dokončanje
- zapleten
- izračuni
- zmedeno
- Vsebuje
- vsebina
- pretvorbo
- kopiranje
- pravilno
- ustvarjajo
- ustvaril
- Ustvarjanje
- Trenutna
- po meri
- customization
- prilagodite
- Darknet
- datum
- Priprava podatkov
- podatkovni znanstvenik
- globoko
- globoko učenje
- Določa
- odvisno
- Zaznali
- Odkrivanje
- Dialog
- drugačen
- neposredno
- imeniki
- odkrivanje
- razne
- tem
- dont
- prenesi
- pogon
- vsak
- Olajša
- izobraževanje
- Učinkovito
- učinkovito
- učinkovite
- Vnesite
- vneseno
- epohe
- Napaka
- itd
- Tudi
- Tudi vsak
- točno
- Primer
- Vaja
- Pojasnite
- razložiti
- pojasnjujejo
- izvoz
- nenavadno
- Obraz
- soočen
- FAST
- hitreje
- Fed
- hranjenje
- Nekaj
- file
- datoteke
- končno
- prva
- prvič
- Osredotočite
- sledi
- po
- format
- Okvirni
- iz
- zabava
- dobili
- GitHub
- Daj
- Go
- dogaja
- dobro
- GPU
- Glava
- Slišal
- pomoč
- pomagal
- tukaj
- Poudarjeno
- zelo
- hitting
- upam,
- Kako
- Kako
- HTTPS
- velika
- Ideja
- Identifikacija
- identificirati
- slika
- slike
- Izvajanje
- Pomembno
- in
- na začetku
- namestitev
- Namesto
- interakcije
- Internet
- vključeni
- IT
- Vedite
- znanje
- label
- Oznake
- velika
- obsežne
- večja
- plasti
- vodi
- UČITE
- naučili
- učenje
- knjižnice
- Licenca
- vrstica
- LINK
- nalaganje
- Poglej
- Pogledal
- POGLEDI
- je
- Znamka
- Izdelava
- označeno
- Stave
- Matter
- max širine
- pomeni
- Metode
- morda
- milijoni
- moti
- Model
- modeli
- več
- Najbolj
- Ime
- Imenovan
- poimenovanje
- Nimate
- potrebna
- mreža
- omrežij
- Številka
- predmet
- Zaznavanje objektov
- ONE
- optimizirana
- Možnost
- Da
- Ostalo
- lastne
- paket
- pakete
- del
- pot
- Plačajte
- ljudje
- opravlja
- performance
- izvajati
- opravlja
- Kraj
- platon
- Platonova podatkovna inteligenca
- PlatoData
- napovedati
- napoved
- priprava
- prejšnja
- prej
- problem
- Težave
- Postopek
- Projekt
- dokazano
- zagotavlja
- Namen
- pitorha
- pripravljen
- v realnem času
- nedavno
- Priporočamo
- rafinirano
- odstrani
- Skladišče
- zahteva
- obvezna
- Zahteve
- rezultat
- Rezultati
- Run
- Enako
- Shrani
- shranjevanje
- Znanstvenik
- Znanstveniki
- Zaslon
- služijo
- Shell
- shouldnt
- Prikaži
- pokazale
- pomemben
- Podoben
- Enostavno
- preprosto
- saj
- sam
- So
- Rešitev
- nekaj
- Nekaj
- nekje
- po delih
- zloženi
- stojala
- Začetek
- začel
- Korak
- Koraki
- Struktura
- taka
- Bodite
- Naloga
- Naloge
- Tehnologija
- Pogoji
- Test
- O
- njihove
- temeljito
- skozi
- čas
- zamudno
- do
- skupaj
- vrh
- Vlak
- usposobljeni
- usposabljanje
- prenos
- Prenos
- Navodila
- tipično
- razumeli
- razumel
- uporaba
- navadno
- potrjevanje
- različnih
- vozilo
- različica
- Spletna stran
- spletne strani
- Weeks
- Kaj
- ki
- medtem
- pogosto
- razširjen
- bo
- brez
- delo
- deluje
- bi
- pisati
- Napačen
- yaml
- Yolo
- Vaša rutina za
- zefirnet
- Zip