Kuinka kouluttaa mukautettu tietojoukko YOLOv5: llä?

Kuinka kouluttaa mukautettu tietojoukko YOLOv5: llä?

Lähdesolmu: 1953267

esittely

Olemme nähneet joitain hienoja termejä tekoälylle ja syväoppimiselle, kuten esikoulutetut mallit, siirto-oppiminen jne. Haluan kouluttaa sinut laajasti käytetyllä tekniikalla ja yhdellä tärkeimmistä ja tehokkaimmista: Transfer learning with YOLOv5.

You Only Look Once eli YOLO on yksi laajimmin käytetyistä syväoppimiseen perustuvista objektintunnistusmenetelmistä. Tämä artikkeli näyttää mukautetun tietojoukon avulla, kuinka voit kouluttaa yhtä sen uusimmista muunnelmista, YOLOv5:stä.

Oppimistavoitteet 

  1. Tämä artikkeli keskittyy pääasiassa YOLOv5-mallin koulutukseen mukautetun tietojoukon toteutuksessa.
  2. Näemme, mitä esikoulutetut mallit ovat ja mitä siirto-oppiminen on.
  3. Ymmärrämme, mikä YOLOv5 on ja miksi käytämme YOLOn versiota 5.

Joten, tuhlaamatta aikaa, aloitetaan prosessi

Sisällysluettelo

  1. Esikoulutetut mallit
  2. Siirrä oppiminen
  3. Mitä ja miksi YOLOv5?
  4. Siirto-oppimisen vaiheet
  5. Täytäntöönpano
  6. Joitakin haasteita, jotka voit kohdata
  7. Yhteenveto

Valmiiksi koulutetut mallit

Olet ehkä kuullut datatieteilijöiden käyttävän termiä "esikoulutettu malli" laajasti. Selitettyään, mitä syväoppimismalli/verkosto tekee, selitän termin. Syväoppimismalli on malli, joka sisältää useita kerroksia pinottuna yhteen palvelemaan yksittäistä tarkoitusta, kuten luokittelua, havaitsemista jne. Syväoppimisverkot oppivat löytämään monimutkaisia ​​rakenteita niille syötetystä tiedosta ja tallentamalla painot tiedostoon, joka käytetään myöhemmin vastaavien tehtävien suorittamiseen. Esikoulutetut mallit ovat jo koulutettuja syväoppimismalleja. Se tarkoittaa, että heidät on jo koulutettu valtavaan tietojoukkoon, joka sisältää miljoonia kuvia.

Tässä on miten TensorFlow verkkosivusto määrittelee valmiiksi koulutetut mallit: Esiopetettu malli on tallennettu verkko, joka on aiemmin koulutettu suurelle tietojoukolle, tyypillisesti suuren mittakaavan kuvan luokittelutehtävään.

Jotkut erittäin optimoituja ja poikkeuksellisen tehokkaita valmiiksi koulutetut mallit ovat saatavilla Internetissä. Eri tehtävien suorittamiseen käytetään erilaisia ​​malleja. Jotkut esiopetetuista malleista ovat VGG-16, VGG-19, YOLOv5, YOLOv3 ja ResNet 50.

Käytettävä malli riippuu tehtävästä, jonka haluat suorittaa. Esimerkiksi, jos haluan suorittaa esineiden havaitseminen Käytän YOLOv5-mallia.

Siirrä oppiminen

Siirrä oppiminen on tärkein tekniikka, joka helpottaa datatieteilijän työtä. Mallin kouluttaminen on raskas ja aikaa vievä tehtävä; jos mallia koulutetaan tyhjästä, se ei yleensä anna kovin hyviä tuloksia. Vaikka kouluttaisimme esikoulutetun mallin kaltaisen mallin, se ei toimi yhtä tehokkaasti, ja mallin harjoitteleminen voi kestää viikkoja. Sen sijaan voimme käyttää esikoulutettuja malleja ja käyttää jo opittuja painoja harjoittelemalla niitä mukautetulla tietojoukolla suorittamaan samanlainen tehtävä. Nämä mallit ovat erittäin tehokkaita ja hienostuneita arkkitehtuuriltaan ja suorituskyvyltään, ja ne ovat päässeet huipulle menestymällä paremmin erilaisissa kilpailuissa. Nämä mallit on koulutettu erittäin suurille tietomäärille, mikä tekee niistä monipuolisempia.

Oppimisen siirtäminen tarkoittaa siis pohjimmiltaan mallia kouluttamalla saadun tiedon siirtämistä aikaisempaan dataan, jotta malli oppii paremmin ja nopeammin suorittamaan erilaista, mutta samanlaista tehtävää.

Esimerkiksi YOLOv5:n käyttäminen kohteen havaitsemiseen, mutta kohde on jotain muuta kuin objektin aiempia käytettyjä tietoja.

Mitä ja miksi YOLOv5?

YOLOv5 on esikoulutettu malli, joka näyttää ulkoasua vain, kun versiota 5 käytetään reaaliaikaiseen objektien havaitsemiseen, ja se on osoittautunut erittäin tehokkaaksi tarkkuuden ja päättelyajan suhteen. YOLOsta on muitakin versioita, mutta kuten voisi ennustaa, YOLOv5 toimii paremmin kuin muut versiot. YOLOv5 on nopea ja helppokäyttöinen. Se perustuu PyTorch-kehykseen, jolla on suurempi yhteisö kuin Yolo v4 Darknet.

Yolov5

Tarkastellaan nyt YOLOv5:n arkkitehtuuria.

Rakenne voi näyttää hämmentävältä, mutta sillä ei ole väliä, koska meidän ei tarvitse katsoa arkkitehtuuria vaan käyttää suoraan mallia ja painoja.

Siirto-oppimisessa käytämme mukautettua tietojoukkoa eli dataa, jota malli ei ole koskaan nähnyt TAI dataa, johon mallia ei ole koulutettu. Koska mallia on jo harjoiteltu suurelle tietojoukolle, meillä on jo painot. Voimme nyt harjoitella mallia useille aikakausille tiedoilla, joita haluamme työstää. Koulutusta tarvitaan, koska malli on nähnyt tiedot ensimmäistä kertaa ja vaatii jonkin verran tietoa tehtävän suorittamiseksi.

Siirto-oppimisen vaiheet

Siirto-oppiminen on yksinkertainen prosessi, ja voimme tehdä sen muutamassa yksinkertaisessa vaiheessa:

  1. Tietojen valmistelu
  2. Oikea muoto huomautuksille
  3. Vaihda muutama kerros, jos haluat
  4. Opeta malli uudelleen muutaman iteroinnin ajaksi
  5. Vahvista/testaa

Tietojen valmistelu

Tietojen valmistelu voi olla aikaa vievää, jos valitsemasi tiedot ovat vähän isoja. Tietojen valmistelu tarkoittaa kuvien merkitsemistä, mikä on prosessi, jossa kuvat merkitään tekemällä kuvan kohteen ympärille laatikko. Näin merkityn kohteen koordinaatit tallennetaan tiedostoon, joka syötetään malliin harjoittelua varten. On olemassa muutamia nettisivuja, mm makeense.ai ja roboflow.com, joiden avulla voit merkitä tiedot. 

Näin voit merkitä YOLOv5-mallin tiedot osoitteessa makesense.ai.

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

2. Napsauta Aloita näytön oikeassa alakulmassa.

Yolov5

3. Valitse kuvat, jotka haluat merkitä, napsauttamalla keskellä korostettua ruutua.

Lataa kuvat, jotka haluat merkitä, ja napsauta kohteen tunnistus.
Yolov5

4. Kuvien lataamisen jälkeen sinua pyydetään luomaan tunnisteet tietojoukkosi eri luokille.

Havaitsen rekisterikilvet ajoneuvosta, joten ainoa, jota käytän, on "Rekisterikilpi". Voit tehdä lisää tarroja painamalla enteriä napsauttamalla valintaikkunan vasemmalla puolella olevaa +-painiketta.

Kun olet luonut kaikki tarrat, napsauta Aloita projekti.

Yolov5

Jos olet unohtanut tunnisteita, voit muokata niitä myöhemmin napsauttamalla toimintoja ja muokkaamalla sitten tunnisteita.

5. Aloita rajauslaatikon luominen kuvan objektin ympärille. Tämä harjoitus voi olla aluksi hieman hauskaa, mutta erittäin suurella datalla se voi olla väsyttävää.

rajauslaatikko

6. Kun olet kirjoittanut kaikki kuvat, sinun on tallennettava tiedosto, joka sisältää rajaruutujen koordinaatit luokan kanssa.

Joten sinun on siirryttävä toimintopainikkeeseen ja klikattava vientimerkintöjä. Älä unohda tarkistaa 'zip-paketti, joka sisältää tiedostoja YOLO-muodossa' -vaihtoehtoa, koska tämä tallentaa tiedostot oikeassa muodossa YOLO-mallissa vaaditulla tavalla.

YOLO malli

7. Tämä on merkittävä askel, joten noudata sitä huolellisesti.

Kun olet saanut kaikki tiedostot ja kuvat, luo kansio millä tahansa nimellä. Napsauta kansiota ja tee kansion sisällä kaksi muuta kansiota nimikuvilla ja tarroilla. Älä unohda nimetä kansio samalla tavalla kuin yllä, sillä malli etsii tunnisteita automaattisesti, kun olet syöttänyt harjoituspolun komennossa.

Jotta saisit käsityksen kansiosta, olen luonut kansion nimeltä 'CarsData' ja tehnyt siihen kaksi kansiota – 'images' ja 'labels'.

yolov5

Kahden kansion sisällä sinun on tehtävä vielä kaksi kansiota nimeltä "train" ja "val". Kuvakansiossa voit jakaa kuvat oman tahtosi mukaan, mutta tarraa jakaessasi on oltava varovainen, sillä tarrojen tulee vastata jakamiasi kuvia

8. Tee nyt kansiosta zip-tiedosto ja lataa se asemalle, jotta voimme käyttää sitä yhteistyössä.

Täytäntöönpano

Siirrymme nyt toteutusosaan, joka on hyvin yksinkertainen mutta hankala. Jos et tiedä, mitä tiedostoja tarkalleen muuttaa, et voi kouluttaa mallia mukautetulle tietojoukolle. 

Joten tässä on koodit, joita sinun tulee noudattaa harjoitellaksesi YOLOv5-mallia mukautetulla tietojoukolla

Suosittelen käyttämään google colabia tässä opetusohjelmassa, koska se tarjoaa myös GPU:n, joka mahdollistaa nopeammat laskelmat.

1. !git-klooni https://github.com/ultralytics/yolov5
Tämä tekee kopion YOLOv5-arkistosta, joka on ultralyticsin luoma GitHub-arkisto.

2. cd yolov5
Tämä on komentorivin komentotulkkikomento, jota käytetään muuttamaan nykyinen työhakemisto YOLOv5-hakemistoon.

3. !pip install -rvaatimukset.txt
Tämä komento asentaa kaikki mallin koulutuksessa käytetyt paketit ja kirjastot.

4. !pura '/content/drive/MyDrive/CarsData.zip'
Kuvia ja tarroja sisältävän kansion purkaminen Google Colabissa

Tässä tulee tärkein askel…

Olet nyt suorittanut melkein kaikki vaiheet ja sinun on kirjoitettava yksi koodirivi lisää, joka kouluttaa mallin, mutta ennen sitä sinun on suoritettava vielä muutama vaihe ja muutettava joitain hakemistoja, jotta voit antaa mukautetun tietojoukon polun. ja kouluta mallisi näiden tietojen perusteella.

Tässä on mitä sinun tulee tehdä.

Kun olet suorittanut yllä olevat 4 vaihetta, sinulla on yolov5-kansio google colabissasi. Mene yolov5-kansioon ja napsauta 'data'-kansiota. Nyt näet kansion nimeltä "coco128.yaml". 

yolov5

Mene eteenpäin ja lataa tämä kansio.

Kun kansio on ladattu, sinun on tehtävä siihen muutama muutos ja lähetettävä se takaisin samaan kansioon, josta latasit sen.

Katsotaan nyt lataamamme tiedoston sisältöä, ja se näyttää suunnilleen tältä.

yolov5

Aiomme muokata tätä tiedostoa tietojoukkomme ja merkintöjemme mukaan.

Olemme jo purkaneet tietojoukon colabissa, joten aiomme kopioida juna- ja vahvistuskuvien polun. Kun olet kopioinut junakuvien polun, joka on tietojoukkokansiossa ja näyttää tältä '/content/yolov5/CarsData/images/train', liitä se juuri lataamamme coco128.yaml-tiedostoon.

Tee sama testi- ja validointikuvien kanssa.

Nyt kun olemme tehneet tämän, mainitsemme luokkien määrän, kuten 'nc: 1'. Luokkien lukumäärä, tässä tapauksessa, on vain 1. Mainitsemme sitten nimen alla olevan kuvan mukaisesti. Poista kaikki muut luokat ja kommentoitu osa, jota ei tarvita, minkä jälkeen tiedostomme pitäisi näyttää suunnilleen tältä.

elät vain kerran

Tallenna tämä tiedosto haluamallasi nimellä. Olen tallentanut tiedoston nimellä customPath.yaml ja nyt lataan tämän tiedoston takaisin colabiin samaan paikkaan, jossa coco128.yaml oli. 

Nyt olemme tehneet editointiosuuden ja valmiita kouluttamaan mallia.

Suorita seuraava komento kouluttaaksesi mallisi muutamaan vuorovaikutukseen mukautetussa tietojoukossasi.

Älä unohda muuttaa lataamasi tiedoston nimeä ('customPath.yaml). Voit myös muuttaa mallin koulutusjaksojen määrää. Tässä tapauksessa aion kouluttaa mallia vain 3 aikakaudella.

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

Muista polku, johon lähetät kansion. Jos polkua muutetaan, komennot eivät toimi ollenkaan.

Kun olet suorittanut tämän komennon, mallisi pitäisi alkaa harjoitella ja näet jotain tällaista näytölläsi.

elät vain kerran

elät vain kerran

Kun kaikki aikakaudet on suoritettu, malliasi voidaan testata millä tahansa kuvalla.

Voit muokata detect.py-tiedostossa lisää, mitä haluat tallentaa ja mistä et pidä, tunnistuksia, missä rekisterikilvet havaitaan jne.

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –kuvan_lähdepolku

Tämän komennon avulla voit testata mallin ennustetta joissakin kuvissa.

Joitakin haasteita, jotka voit kohdata

Vaikka yllä selostetut vaiheet ovat oikein, voit kohdata joitain ongelmia, jos et noudata niitä tarkasti. 

  1. Väärä polku: Tämä voi olla päänsärky tai ongelma. Jos olet mennyt väärälle polulle jossain kuvan harjoittelussa, sen tunnistaminen ei välttämättä ole helppoa, etkä pysty kouluttamaan mallia.
  2. Väärä tarrojen muoto: Tämä on laajalle levinnyt ongelma, jonka ihmiset kohtaavat harjoittaessaan YOLOv5:tä. Malli hyväksyy vain muodon, jossa jokaisessa kuvassa on oma tekstitiedosto, jonka sisällä on haluttu muoto. Usein XLS-muotoinen tiedosto tai yksittäinen CSV-tiedosto syötetään verkkoon, mikä johtaa virheeseen. Jos lataat tietoja jostain, jokaisen kuvan merkitsemisen sijaan voi olla eri tiedostomuoto, jossa tarrat tallennetaan. Tässä on artikkeli XLS-muodon muuntamisesta YOLO-muotoon. (linkki artikkelin valmistumisen jälkeen).
  3. Tiedostoja ei nimetä oikein: Jos tiedostoa ei nimetä oikein, seurauksena on jälleen virhe. Kiinnitä huomiota vaiheisiin kansioiden nimeämisen aikana ja vältä tämä virhe.

Yhteenveto

Tässä artikkelissa opimme, mitä siirtooppiminen on ja esikoulutettu malli. Opimme milloin ja miksi käyttää YOLOv5-mallia ja kuinka kouluttaa mallia mukautetulle tietojoukolle. Kävimme läpi jokaisen vaiheen tietojoukon valmistelusta polkujen muuttamiseen ja lopulta syöttämiseen verkkoon tekniikan toteutuksessa ja ymmärsimme vaiheet perusteellisesti. Tarkastelimme myös yleisiä YOLOv5:n harjoittelun aikana ilmeneviä ongelmia ja niiden ratkaisuja. Toivon, että tämä artikkeli auttoi sinua kouluttamaan ensimmäistä YOLOv5:täsi mukautetulla tietojoukolla ja että pidät artikkelista.

Aikaleima:

Lisää aiheesta Analyysi Vidhya