bevezetés:
konvolúciós neurális hálózat (CNN vagy ConvNet) egy osztálya mély neurális hálózatok amelyet leginkább erre használnak képfelismerés, képosztályozás, objektumérzékelésstb.
a számítógépes látás fejlődése a mély tanulással idővel felépült és tökéletesedett, elsősorban egy adott algoritmus — egy konvolúciós neurális hálózat-révén.
a Google fotókereséshez, a Facebook az automatikus címkézési algoritmusokhoz, az Amazon a termékjavaslatokhoz használja, és a lista tovább folytatódik…
a CNN segítségével sok jó dolgot tehetsz, például egy kézzel írt számjegyfelismerési modellt készítettem, amely a képen lévő számjegyet 98-mal jósolja.82% – os pontosság.
bónusz:
kód -> https://github.com/UPPERCASEGUY/CNN-implementation
azt is, hogy a hűvös modellek kevés segítséget fogalmak tekintetében CNN. Ez a blog elkezdi építeni a CNNs-ről szóló koncepcióit,és jó vagy!
konvolúciós neurális hálózatok:
a Képosztályozás feladata egy bemeneti kép készítése és egy osztály vagy az osztályok valószínűségének kimenete, amely a legjobban leírja a képet. A CNN-ben egy képet inputként veszünk fel, fontosságot tulajdonítunk a kép különböző aspektusainak/jellemzőinek, és képesek vagyunk megkülönböztetni egymástól. A CNN-ben szükséges előfeldolgozás sokkal kisebb, mint más osztályozási algoritmusok.
építészet:
számítógépek nem látja a dolgokat, mint mi, a számítógépek kép nem más, mint egy mátrix.
a CNN-nek általában három rétege van: konvolúciós réteg, pooling réteg és teljesen összekapcsolt réteg.
konvolúciós réteg:
biztos vagyok benne, hogy már találkoztál a konvolúció szóval az életedben, és itt a jelentése nem változik. Igen! igazad van, ez a réteg arról szól, convolving tárgyak egymásra. A konvolúciós réteg a CNN központi építőeleme. A hálózat számítási terhelésének fő részét hordozza.
a konvolúció fő célja olyan jellemzők kinyerése, mint az élek, színek, sarkok a bemenetből. Ahogy mélyebbre megyünk a hálózaton belül,a hálózat elkezdi azonosítani a bonyolultabb jellemzőket, például alakzatokat, számjegyeket, arcrészeket is.
ez a réteg pontterméket hajt végre két mátrix között, ahol az egyik mátrix(más néven szűrő/kernel)a megtanulható paraméterek halmaza, a másik mátrix pedig a kép korlátozott része.
ha a kép RGB, akkor a szűrő magassága és szélessége kisebb lesz a képhez képest, de mélysége(magasság x szélesség x 3) megegyezik a képével.
RGB képek esetén a konvolváló rész a következőképpen jeleníthető meg:
a konvolúciós folyamat végén van egy kiemelt mátrixunk, amelynek kisebb paraméterei(méretei) vannak, mint a tényleges képnek, valamint világosabb jellemzői vannak, mint a tényleges. Tehát mostantól a kiemelt mátrixunkkal fogunk dolgozni.
Egyesítő Réteg:
ez a réteg kizárólag az adatok feldolgozásához szükséges számítási teljesítmény csökkentésére szolgál. Ez úgy történik, hogy a kiemelt mátrix méreteit még jobban csökkenti. Ebben a rétegben megpróbáljuk kivonni a domináns jellemzőket egy korlátozott mennyiségű szomszédságból. Tegyük ezt világossá egy példával.
a narancssárga mátrix a kiemelt mátrixunk, a barna egy pooling kernel, és a kék mátrixunkat kapjuk kimenetként az pooling elvégzése után. Tehát itt azt csináljuk, hogy a maximumot vesszük az összes szám közül, amelyek az összevonási régióban vannak, és minden alkalommal áthelyezzük az összevonási régiót, hogy feldolgozzuk a Mátrix egy másik szomszédságát.
kétféle pooling technika létezik: átlagos pooling és MAX-pooling.
a kettő közötti különbség az, hogy az átlag-poolingban a pooling régió összes értékének átlagát vesszük, a MAX-poolingban pedig csak a maximumot vesszük a pooling régióban található összes érték közül.
tehát a réteg összevonása után van egy mátrixunk, amely a kép főbb jellemzőit tartalmazza, és ennek a mátrixnak még kisebb méretei vannak, ami sokat segít a következő lépésben.
teljesen csatlakoztatott réteg:
eddig nem tettünk semmit a különböző képek osztályozásával kapcsolatban, amit tettünk, kiemeltünk néhány funkciót a képen, és drasztikusan csökkenti a kép méreteit.
innentől kezdve valójában elvégezzük az osztályozási folyamatot.
most, hogy a bemeneti képet megfelelő formává alakítottuk át a többszintű, teljesen összekapcsolt architektúránkhoz, a képet egy oszlopvektorba simítjuk. A lapított kimenetet egy előremenő neurális hálózatba táplálják, és a képzés minden iterációjára alkalmazzák a backpropagációt. Több korszakon keresztül a modell képes megkülönböztetni a domináns és bizonyos alacsony szintű jellemzőket a képeken, és osztályozni őket.
összefoglaló:
- adja meg a bemeneti képet a konvolúciós rétegbe.
- vegye konvolúció kiemelt kernel/szűrők.
- pooling réteg alkalmazása a méretek csökkentése érdekében.
- adja hozzá ezeket a rétegeket többször.
- simítsa el a kimenetet és táplálja be egy teljesen összekapcsolt rétegbe.
- most képezze ki a modellt backpropagation segítségével logisztikai regresszió.
és létrehoztad a konvolúciós neurális hálózatodat.