Convolutional Neural Network Tutorial
A mesterséges intelligencia hosszú utat tett meg, és zökkenőmentesen áthidalta az emberekben és a gépekben rejlő lehetőségeket. Az adatrajongók pedig világszerte a mesterséges intelligencia számos aspektusán dolgoznak, és az elképzeléseket valósággá változtatják – és az egyik ilyen csodálatos terület a számítógépes látás területe. Ennek a területnek az a célja, hogy a gépeket képessé tegye és konfigurálja arra, hogy úgy lássák a világot, mint az emberek, és a tudást számos feladatra és folyamatra használják (például képfelismerés, képelemzés és osztályozás stb.). És a számítógépes látás területén a mélytanulással elért előrelépések jelentős sikereket értek el, különösen a konvolúciós neurális hálózat algoritmusával.
Ebben a tananyagban a következőket tanulhatja meg:
- Bevezetés a CNN-hez
- Mi az a konvolúciós neurális hálózat?
- Hogyan ismerik fel a CNN-ek a képeket?
- A CNN rétegei
- Használati esetek megvalósítása a CNN segítségével
Bevezetés a CNN-be
Yann LeCun, a Facebook AI Research Group igazgatója a konvolúciós neurális hálózatok úttörője. Ő építette az első konvolúciós neurális hálózatot, a LeNet-et 1988-ban. A LeNet-et karakterfelismerési feladatokra használták, például irányítószámok és számjegyek olvasására.
Gondolkozott már azon, hogyan működik az arcfelismerés a közösségi médiában, vagy hogyan segít a tárgyfelismerés az önvezető autók építésében, vagy hogyan történik a betegségek felismerése vizuális képek segítségével az egészségügyben? Mindez a konvolúciós neurális hálózatoknak (CNN) köszönhetően lehetséges. Íme egy példa a konvolúciós neurális hálózatok működésének szemléltetésére:
Tegyük fel, hogy van egy kép egy madárról, és szeretné azonosítani, hogy az valóban egy madár vagy valami más tárgy. Először is a kép pixeleit tömbök formájában betáplálod a neurális hálózat bemeneti rétegébe (a dolgok osztályozására használt többrétegű hálózatok). A rejtett rétegek különböző számítások és manipulációk elvégzésével végzik a jellemzők kinyerését. Több rejtett réteg van, mint például a konvolúciós réteg, a ReLU réteg és a pooling réteg, amelyek a képből történő jellemző-kivonást végzik. Végül van egy teljesen összekapcsolt réteg, amely azonosítja a képen lévő tárgyat.
Ábr: Convolutional Neural Network to identify the image of a bird
Deep Learning Course (with TensorFlow & Keras)
Master the Deep Learning Concepts and ModelsView Course
Mi a Convolutional Neural Network?
A konvolúciós neurális hálózat egy előrecsatolt neurális hálózat, amelyet általában vizuális képek elemzésére használnak, rácsszerű topológiájú adatok feldolgozásával. ConvNet néven is ismert. A konvolúciós neurális hálózatot a képen lévő objektumok felismerésére és osztályozására használják.
Az alábbiakban egy neurális hálózatot mutatunk be, amely kétféle virágot azonosít: Orchidea és rózsa.
A CNN-ben minden képet pixelértékek tömbje formájában reprezentálunk.
A konvolúciós neurális hálózat alapja a konvolúciós művelet. Értsük meg a konvolúciós műveletet két 1 dimenziós mátrix, a és b segítségével.
a =
b =
A konvolúciós műveletben a mátrixokat elemenként megszorozzuk, majd a szorzatot összegezve létrehozunk egy új mátrixot, amely a*b-t képviseli.
Az a mátrix első három elemét megszorozzuk a b mátrix elemeivel. A szorzatot összegezzük, hogy megkapjuk az eredményt.
Az a mátrix következő három elemét megszorozzuk a b mátrix elemeivel, és a szorzatot összegezzük.
Ez a folyamat addig folytatódik, amíg a konvolúciós művelet be nem fejeződik.
Hogyan ismeri fel a CNN a képeket?
Vizsgáljuk meg a következő képeket:
A színes dobozok 1 pixelértéket képviselnek, és 0-t, ha nincs színezve.
A backslash (\) lenyomásakor az alábbi kép kerül feldolgozásra.
Amikor megnyomja az előreütközőt (/), az alábbi kép kerül feldolgozásra:
Itt egy másik példa annak bemutatására, hogy a CNN hogyan ismer fel egy képet:
Amint a fenti ábrán látható, csak azok az értékek világítanak, amelyeknek az értéke 1.
Layers in a Convolutional Neural Network
A konvolúciós neurális hálózat több rejtett réteggel rendelkezik, amelyek segítenek az információk kinyerésében a képből. A CNN négy fontos rétege a következő:
- Konvolúciós réteg
- ReLU réteg
- Pooling réteg
- Teljesen kapcsolt réteg
Konvolúciós réteg
Ez az első lépés a kép értékes jellemzőinek kinyerésében. A konvolúciós réteg több szűrővel rendelkezik, amelyek a konvolúciós műveletet végzik. Minden képet pixelértékek mátrixának tekintünk.
Fogjuk fel a következő 5×5 képet, amelynek pixelértékei vagy 0 vagy 1. Van egy 3×3 dimenziójú szűrőmátrix is. Csúsztassuk a szűrőmátrixot a képre, és számítsuk ki a pontszorzatot, hogy megkapjuk a konvolvált jellemzőmátrixot.
ReLU réteg
AReLU a rectified linear unit (kiegyenesített lineáris egység) rövidítése. Miután a jellemzőtérképek kivonásra kerültek, a következő lépés a ReLU rétegbe való áthelyezésük.
A ReLU egy elemenkénti műveletet hajt végre, és az összes negatív pixelt 0-ra állítja. Nemlinearitást vezet be a hálózatba, és a generált kimenet egy rektifikált jellemzőtérkép. Az alábbiakban egy ReLU-függvény grafikonja látható:
Az eredeti képet többszörös konvolúcióval és ReLU-rétegekkel szkenneljük a jellemzőtérkép lokalizálására.
Pooling Layer
A pooling egy lefelé mintavételező művelet, amely csökkenti a jellemzőtérkép dimenziósságát. A rektifikált jellemzőtérkép most egy pooling rétegen megy keresztül, hogy egy pooling feature map-et hozzon létre.
A pooling réteg különböző szűrőket használ a kép különböző részeinek, például élek, sarkok, test, tollak, szemek és csőrök azonosítására.
Íme, így néz ki eddig a konvolúciós neurális hálózat felépítése:
A folyamat következő lépése az úgynevezett lapítás. A lapítás arra szolgál, hogy az összevont jellemzőtérképekből származó összes eredményül kapott kétdimenziós mátrixot egyetlen hosszú, folytonos lineáris vektorrá alakítsa át.
A lapított mátrixot a kép osztályozására szolgáló teljesen összekapcsolt réteg bemenetként kapja meg.
Íme, hogyan ismeri fel a CNN pontosan a madarat:
- A kép pixelei a konvolúciós rétegbe kerülnek, amely elvégzi a konvolúciós műveletet
- Ez egy konvolvált térképet eredményez
- A konvolvált térképet egy ReLU függvényre alkalmazzuk, hogy egy rektifikált jellemzőtérképet hozzunk létre
- A képet több konvolúciós és ReLU réteggel dolgozzuk fel. a jellemzők lokalizálására
- A kép meghatározott részeinek azonosítására különböző szűrőkkel ellátott pooling rétegeket használunk
- A pooling jellemzőtérképet ellaposítjuk és egy teljesen összekapcsolt rétegbe tápláljuk a végső kimenethez
FREE Machine Learning Course
Learn In-demand Machine Learning Skills and ToolsStart Learning
Use case implementation using CNN
A Canadian Institute For Advanced Research CIFAR-10 adathalmazát fogjuk használni a képek 10 kategóriába való besorolásához CNN segítségével.
1. Töltsük le az adathalmazt:
2. Importáljuk a CIFAR adathalmazt:
3. Olvassuk be a címkék nevét:
4. Jelenítsük meg a képeket a matplotlib segítségével:
5. A segédfüggvények használata az adatok kezeléséhez:
6. A modell létrehozása:
7. A segédfüggvények alkalmazása:
8. A rétegek létrehozása a konvolúcióhoz és a poolinghoz:
9. A rétegek létrehozása a konvolúcióhoz és a poolinghoz:
9. Hozzuk létre a lapított réteget a pooling réteg átformálásával:
10. Hozzon létre egy teljesen összefüggő réteget:
11. Állítsa be a kimenetet az y_pred változóra:
12. Alkalmazza a veszteségfüggvényt:
13. Hozzuk létre az optimalizálót:
14. Hozzon létre egy változót az összes globális változó inicializálásához:
15. Futtassa a modellt egy gráf munkamenet létrehozásával:
Építsen mélytanulási modelleket TensorFlow-ban, és tanulja meg a TensorFlow nyílt forráskódú keretrendszert a Deep Learning Course (with Keras &TensorFlow) segítségével. Iratkozzon be most!
Tudjon meg többet a CNN-ről és a mélytanulásról
Így építhet egy CNN-t több rejtett réteggel, és így azonosíthat egy madarat a pixelértékei alapján. Elvégeztél egy demót is, amelyben 10 kategóriában osztályoztál képeket a CIFAR-adatkészlet segítségével.
A Purdue Egyetemmel és az IBM-mel együttműködve beiratkozhat a mesterséges intelligencia és gépi tanulás posztgraduális programjára is, és a TensorFlow, a gépi tanulás és a mély neurális hálózatok kutatására tervezett nyílt forráskódú szoftverkönyvtár segítségével a mélytanulási technikák szakértőjévé válhat. Ez a mesterséges intelligencia és gépi tanulás program a Python, a gépi tanulás, a természetes nyelvfeldolgozás, a beszédfelismerés, a fejlett mélytanulás, a számítógépes látás és a megerősítő tanulás témaköreit öleli fel. Felkészíti Önt a világ egyik legizgalmasabb technológiai határterületére.