Hogyan taníthatunk egyéni adatkészletet a YOLOv5 segítségével?

Hogyan taníthatunk egyéni adatkészletet a YOLOv5 segítségével?

Forrás csomópont: 1953267

Bevezetés

Láttunk néhány divatos kifejezést a mesterséges intelligenciára és a mély tanulásra, mint például előre betanított modellek, transzfertanulás stb. Hadd oktassam Önt egy széles körben használt technológiával, és az egyik legfontosabb és leghatékonyabb: Tanulás átvitele a YOLOv5-tel.

A You Only Look Once, vagy a YOLO az egyik legszélesebb körben használt mély tanuláson alapuló objektum azonosítási módszer. Ez a cikk egy egyéni adatkészlet használatával bemutatja, hogyan taníthatja meg annak egyik legújabb változatát, a YOLOv5-öt.

Tanulási célok 

  1. Ez a cikk elsősorban a YOLOv5-modell egyéni adatkészlet-megvalósításon való betanítására összpontosít.
  2. Meglátjuk, mik az előre betanított modellek, és meglátjuk, mi az átviteli tanulás.
  3. Meg fogjuk érteni, mi az a YOLOv5, és miért használjuk a YOLO 5-ös verzióját.

Tehát időveszteség nélkül kezdjük el a folyamatot

Tartalomjegyzék

  1. Előre betanított modellek
  2. Transzfer tanulás
  3. Mi és miért YOLOv5?
  4. A transzfertanulás lépései
  5. Implementáció
  6. Néhány kihívás, amellyel szembenézhet
  7. Következtetés

Előképzett modellek

Talán hallotta már, hogy az adattudósok széles körben használják az „előre képzett modell” kifejezést. Miután elmagyaráztam, mit csinál egy mély tanulási modell/hálózat, elmagyarázom a kifejezést. A mélytanulási modell olyan modell, amely különböző rétegeket halmozott össze, hogy egyedüli célt szolgáljon, például osztályozást, észlelést stb. A mély tanulási hálózatok úgy tanulnak, hogy bonyolult struktúrákat fedeznek fel a hozzájuk betáplált adatokban, és elmentik a súlyokat egy fájlba, amely később hasonló feladatok elvégzésére használják. Az előképzett modellek már betanított mélytanulási modellek. Ez azt jelenti, hogy már képzettek egy hatalmas adatkészletre, amely több millió képet tartalmaz.

Itt van, hogyan TensorFlow a weboldal előre betanított modelleket határoz meg: Az előre betanított modell egy mentett hálózat, amelyet korábban egy nagy adathalmazra tanítottak, jellemzően egy nagyméretű képosztályozási feladatra.

Néhány nagyon optimalizált és rendkívül hatékony előképzett modellek elérhetők az interneten. A különböző feladatok elvégzésére különböző modelleket használnak. Az előre betanított modellek közül néhány a VGG-16, VGG-19, YOLOv5, YOLOv3 és ResNet 50.

A használni kívánt modell az elvégzendő feladattól függ. Például, ha szeretnék előadni egy tárgy észlelése feladathoz a YOLOv5 modellt fogom használni.

Transzfer tanulás

Transzfer tanulás a legfontosabb technika, amely megkönnyíti az adattudósok munkáját. A modell betanítása nehéz és időigényes feladat; ha egy modellt a semmiből képeznek ki, az általában nem ad túl jó eredményeket. Még ha egy előre betanított modellhez hasonló modellt is betanítunk, az nem fog olyan hatékonyan teljesíteni, és hetekig is eltarthat, amíg egy modellt betanít. Ehelyett használhatjuk az előre betanított modelleket, és felhasználhatjuk a már megtanult súlyokat úgy, hogy egy egyedi adathalmazra tanítjuk őket hasonló feladat végrehajtására. Ezek a modellek rendkívül hatékonyak és kifinomultabbak az architektúra és a teljesítmény tekintetében, és a különböző versenyeken jobb teljesítményükkel a csúcsra jutottak. Ezek a modellek nagyon nagy mennyiségű adatra vannak kiképezve, így tudásuk változatosabbá válik.

A transzfertanulás tehát alapvetően a modell korábbi adatokon való betanításával megszerzett tudás átadását jelenti, hogy a modell jobban és gyorsabban tanuljon meg egy eltérő, de hasonló feladat elvégzéséhez.

Például egy YOLOv5 használata az objektum észlelésére, de az objektum más, mint az objektum előzőleg használt adatai.

Mi és miért YOLOv5?

A YOLOv5 egy előre betanított modell, amely csak akkor jelenik meg, ha az 5-ös verziót valós idejű objektumészlelésre használják, és rendkívül hatékonynak bizonyult a pontosság és a következtetési idő tekintetében. Léteznek a YOLO-nak más verziói is, de ahogy azt előre sejtené, a YOLOv5 jobban teljesít, mint a többi verzió. A YOLOv5 gyors és könnyen használható. A PyTorch keretrendszeren alapul, amely nagyobb közösséggel rendelkezik, mint a Yolo v4 Darknet.

Yolov5

Most megnézzük a YOLOv5 architektúráját.

A szerkezet zavarónak tűnhet, de ez nem számít, mivel nem kell az architektúrát néznünk, hanem közvetlenül használjuk a modellt és a súlyokat.

Az átviteli tanulás során az egyéni adatkészletet használjuk, azaz azokat az adatokat, amelyeket a modell még soha nem látott, VAGY azokat az adatokat, amelyekre a modell nincs betanítva. Mivel a modell már nagy adathalmazra van betanítva, már megvannak a súlyok. Mostantól számos korszakra betaníthatjuk a modellt azokon az adatokon, amelyeken dolgozni szeretnénk. Képzésre van szükség, mivel a modell először látta az adatokat, és a feladat elvégzéséhez bizonyos ismeretekre lesz szükség.

A transzfertanulás lépései

A transzfertanulás egy egyszerű folyamat, és néhány egyszerű lépésben megtehetjük:

  1. Adatok előkészítése
  2. A megjegyzések megfelelő formátuma
  3. Ha akarod, változtass néhány réteget
  4. Tanítsa újra a modellt néhány iteráció erejéig
  5. Érvényesítés/teszt

Adatok előkészítése

Az adatok előkészítése időigényes lehet, ha a kiválasztott adat egy kicsit nagy. Az adat-előkészítés a képek annotálását jelenti, ami egy olyan folyamat, amelynek során a képen látható objektum köré dobozt készítve címkézzük fel a képeket. Ezzel a megjelölt objektum koordinátái egy fájlba kerülnek, amely ezután betanításra kerül a modellbe. Van néhány weboldal, mint pl értelmes.ai és a roboflow.com, amely segíthet az adatok címkézésében. 

Így jegyezheti fel a YOLOv5 modell adatait a makesense.ai oldalon.

1. Látogat https://www.makesense.ai/. 

2. Kattintson a Kezdés gombra a képernyő jobb alsó sarkában.

Yolov5

3. Válassza ki a címkézni kívánt képeket a középen kiemelt négyzetre kattintva.

Töltse be a megjegyzésekkel ellátni kívánt képeket, és kattintson a Tárgyérzékelés lehetőségre.
Yolov5

4. A képek betöltése után a rendszer felkéri, hogy hozzon létre címkéket az adatkészlet különböző osztályaihoz.

Rendszámokat észlelek egy járművön, ezért az egyetlen címke, amelyet használni fogok, a „Rendszámtábla”. További címkéket készíthet egyszerűen az Enter billentyű lenyomásával a párbeszédpanel bal oldalán található „+” gombra kattintva.

Miután létrehozta az összes címkét, kattintson a projekt indítása gombra.

Yolov5

Ha kihagyott egy címkét, később szerkesztheti azokat a műveletekre kattintva, majd szerkesztheti a címkéket.

5. Kezdje el egy határolókeret létrehozását a képen látható objektum körül. Ez a gyakorlat kezdetben egy kicsit szórakoztató lehet, de nagyon nagy adatmennyiséggel fárasztó lehet.

határoló doboz

6. Az összes kép megjegyzése után el kell mentenie azt a fájlt, amely a határoló dobozok koordinátáit tartalmazza majd az osztállyal együtt.

Tehát a Műveletek gombra kell kattintania, és az export megjegyzésekre kell kattintania, ne felejtse el bejelölni a "YOLO formátumú fájlokat tartalmazó zip-csomag" opciót, mivel ez a fájlok a YOLO modellben előírt megfelelő formátumban menti el.

YOLO modell

7. Ez egy jelentős lépés, ezért gondosan kövesse.

Miután megvan az összes fájl és kép, hozzon létre egy mappát tetszőleges néven. Kattintson a mappára, és hozzon létre még két mappát a képekkel és címkékkel a mappán belül. Ne felejtse el elnevezni a mappát a fentiekkel megegyezően, mivel a modell automatikusan megkeresi a címkéket, miután betáplálta a tanítási útvonalat a parancsban.

Hogy képet adjunk a mappáról, létrehoztam egy „CarsData” nevű mappát, és abban két mappát – „images” és „labels”.

yolov5

A két mappán belül további két mappát kell létrehoznia, amelyek neve 'train' és 'val'. A képek mappában tetszés szerint kettéoszthatod a képeket, de a címke felosztásánál vigyázni kell, mert a címkéknek meg kell egyeznie a kettéosztott képekkel

8. Most készítsünk egy zip fájlt a mappából, és töltsük fel a meghajtóra, hogy a colabban tudjuk használni.

Implementáció

Most a megvalósítási részhez érkezünk, ami nagyon egyszerű, de trükkös. Ha nem tudja, hogy pontosan mely fájlokat kell módosítani, akkor nem tudja betanítani a modellt az egyéni adatkészletre. 

Tehát itt vannak azok a kódok, amelyeket követnie kell a YOLOv5 modell egyéni adatkészleten való betanításához

Azt javaslom, hogy ehhez az oktatóanyaghoz használja a google colab-ot, mivel az is biztosít GPU-t, amely gyorsabb számításokat tesz lehetővé.

1. !git klón https://github.com/ultralytics/yolov5
Ez másolatot készít a YOLOv5 adattárról, amely az ultralytics által létrehozott GitHub adattár.

2. cd yolov5
Ez egy parancssori shell-parancs, amellyel az aktuális munkakönyvtárat YOLOv5-re változtatja.

3. !pip install -r követelmények.txt
Ez a parancs telepíti a modell betanításához használt összes csomagot és könyvtárat.

4. !unzip '/content/drive/MyDrive/CarsData.zip'
A képeket és címkéket tartalmazó mappa kicsomagolása a google colabban

Itt jön a legfontosabb lépés…

Mostanra szinte az összes lépést végrehajtotta, és még egy kódsort kell írnia, amely betanítja a modellt, de előtte még néhány lépést kell végrehajtania, és módosítania kell néhány könyvtárat, hogy megadja az egyéni adatkészlet elérési útját. és betanítja modelljét azokra az adatokra.

Íme, mit kell tenned.

A fenti 4 lépés végrehajtása után a yolov5 mappa a google colabban lesz. Lépjen a yolov5 mappába, és kattintson a "data" mappára. Ekkor megjelenik egy „coco128.yaml” nevű mappa. 

yolov5

Menjen előre, és töltse le ezt a mappát.

A mappa letöltése után néhány változtatást kell végrehajtania rajta, és vissza kell töltenie ugyanabba a mappába, ahonnan letöltötte.

Most nézzük meg a letöltött fájl tartalmát, és valahogy így fog kinézni.

yolov5

Ezt a fájlt az adatkészletünknek és a megjegyzéseinknek megfelelően testre szabjuk.

Már kibontottuk az adatkészletet a colab-on, ezért másolni fogjuk a vonat és az érvényesítési képeink útvonalát. Miután kimásolta a vonatképek elérési útját, amely a dataset mappában lesz, és valahogy így néz ki: '/content/yolov5/CarsData/images/train', illessze be a coco128.yaml fájlba, amelyet éppen letöltöttünk.

Tegye ugyanezt a teszt- és érvényesítési képekkel.

Most, miután ezzel végeztünk, megemlítjük az osztályok számát, például 'nc: 1'. Az osztályok száma ebben az esetben csak 1. Ezután megemlítjük a nevet az alábbi képen látható módon. Távolítsa el az összes többi osztályt és a kommentált részt, amelyre nincs szükség, ezután a fájlunk valahogy így néz ki.

Yolo

Mentse el ezt a fájlt tetszőleges néven. Mentettem a fájlt customPath.yaml néven, és most újra feltöltöttem a colabba ugyanoda, ahol a coco128.yaml volt. 

Most végeztünk a szerkesztési résszel és készen állunk a modell betanítására.

Futtassa a következő parancsot, hogy betanítsa a modellt néhány interakcióra az egyéni adatkészleten.

Ne felejtse el megváltoztatni a feltöltött fájl nevét ('customPath.yaml). Módosíthatja a modell betanításához szükséges korszakok számát is. Ebben az esetben a modellt csak 3 korszakra fogom képezni.

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

Tartsa szem előtt a mappát feltöltő útvonalat. Ha az elérési út megváltozik, akkor a parancsok egyáltalán nem működnek.

A parancs futtatása után a modellnek el kell kezdenie a képzést, és valami ehhez hasonlót fog látni a képernyőn.

Yolo

Yolo

Miután az összes korszak lejárt, modellje bármilyen képen tesztelhető.

A detect.py fájlban további testreszabásokat végezhet, hogy mit szeretne menteni, és mi nem tetszik, a rendszámok észlelésének helyén stb.

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –forrás_a_kép_útvonala

Ezzel a paranccsal tesztelheti a modell előrejelzését egyes képeken.

Néhány kihívás, amellyel szembenézhet

Bár a fenti lépések helyesek, vannak problémák, amelyekkel szembesülhet, ha nem követi őket pontosan. 

  1. Rossz út: Ez lehet fejfájás vagy probléma. Ha valahol rossz útra léptél az imázs képzése során, nem lehet könnyű azonosítani, és nem tudod majd betanítani a modellt.
  2. A címkék rossz formátuma: Ez egy széles körben elterjedt probléma, amellyel az emberek szembesülnek a YOLOv5 betanítása során. A modell csak olyan formátumot fogad el, amelyben minden képnek saját szövegfájlja van, benne a kívánt formátummal. Gyakran egy XLS formátumú fájl vagy egyetlen CSV fájl kerül a hálózatba, ami hibát eredményez. Ha valahonnan letölti az adatokat, ahelyett, hogy minden egyes képhez megjegyzéseket fűzne, létezhet más fájlformátum is, amelyben a címkék mentésre kerülnek. Itt van egy cikk az XLS formátum YOLO formátumra való konvertálásához. (link a cikk befejezése után).
  3. A fájlok elnevezése nem megfelelő: A fájl nem megfelelő elnevezése ismét hibát okoz. Ügyeljen a lépésekre a mappák elnevezése során, és kerülje el ezt a hibát.

Következtetés

Ebben a cikkben megtudtuk, mi az a transzfertanulás és az előre betanított modell. Megtanultuk, mikor és miért kell használni a YOLOv5 modellt, és hogyan lehet betanítani a modellt egy egyéni adatkészletre. A technika megvalósítása során az adatkészlet elkészítésétől az utak megváltoztatásáig és végül a hálózatba betáplálásig minden lépésen végigmentünk, és alaposan megértettük a lépéseket. Megvizsgáltuk a YOLOv5 betanítása során felmerülő gyakori problémákat és azok megoldását is. Remélem, hogy ez a cikk segített az első YOLOv5-öt egyéni adatkészletre oktatni, és tetszett a cikk.

Időbélyeg:

Még több Analytics Vidhya