Partneři Projektu CAD
- 05.07. AutoCAD 2013 - základní kurz
- 07.07. AutoCAD a AutoCAD LT – základní kurz
- 10.07. Trimble SketchUp – základní kurz
- 10.07. workshop Strukturální mechanika v programu COMSOL Multiphysics
- 14.07. AutoCAD – kurz pro středně pokročilé
- 16.07. Trimble SketchUp – workshop dynamické komponenty
- 16.07. Trimble SketchUp – workshop práce s terénem
- 21.07. AutoCAD – kurz pro pokročilé
- 23.07. Autodesk Inventor – základní kurz
- 28.07. Trimble SketchUp – základní kurz
Aktuality
- Mobilní aplikace pro vzdálené ovládání 3D tiskárny
- BAC přechází na Siemens Xcelerator při vývoji superauta Mono
- Cena Josepha Fouriera za létání dronů v budovách
- Spolehlivá kontrola kvality bez vysokých nákladů
- Nový web TECHNODAT: Digitalizace s technickou přesností, která má smysl
- SCANLAB a interaktivní náhled do vývoje produktů
- Online konference ATCx AI for Engineers 2025
- Siemens a NVIDIA rozšiřují spolupráci v průmyslové AI
Deep Learning v prostředí MATLAB |
Autor článku: Jaroslav Jirkovský | |||||||||||||||
Pondělí, 16 Leden 2017 00:00 | |||||||||||||||
„Strojové učení je podoblastí umělé inteligence, zabývající se algoritmy a technikami, které umožňují počítačovému systému »učit se«. Strojové učení se značně prolíná s oblastmi statistiky a dobývání znalostí a má široké uplatnění...“ (http://cs.wikipedia.org). Deep learning je metoda strojového učení, kde je za pomoci mnohovrstvých nelineárních výpočetních modelů získávána užitečná informace přímo z dat. V klasifikačních úlohách dosahují deep learning modely vysoké přesnosti, která může předčit lidské schopnosti. Modely jsou trénovány s využitím velkého množství označených dat a jejich architektura je postavená na hlubokých neuronových sítích (deep networks). Deep learning nachází využití v mnoha oblastech, zejména pak v úlohách:
Učení deep learning modelůPřesnost deep learning modelu závisí z velké části na množství dat použitých k jeho učení. Nejpřesnější modely vyžadují tisíce, či dokonce milióny vzorků. Učení takového modelu může trvat velmi dlouhou dobu. Jakmile je model naučen, lze jej nasadit do provozu v reálném čase. Typickou aplikací je detekce chodců v pokročilých systémech pro podporu řízení (ADAS). Deep learning a MATLABMATLAB je inženýrský nástroj a interaktivní prostředí pro vědecké a technické výpočty, analýzu dat, vizualizaci, vývoj algoritmů, modelování a simulace. MATLAB je nástroj jak pro pohodlnou interaktivní práci, tak pro vývoj širokého spektra aplikací. V oblasti deep learningu poskytuje MATLAB dva základní nástroje: autoenkodéry (Autoencoders) a konvoluční neuronové sítě (Convolutional Neural Networks – CNN). Využití CNN k rozpoznávání obrazu v programu MATLAB je na obrázku 1.
Rozpoznávání obrazuKonvoluční neuronové sítě (CNN) představují oblíbenou architekturu modelů v oblasti deep learningu. Neuronová síť je uspořádána do vrstev obsahujících sady propojených uzlů. Výpočetní algoritmus CNN je založen na konvoluci mezi vstupními daty a filtry, které reprezentují hledané charakteristické rysy. CNN využívá dvourozměrné (2-D) konvoluční vrstvy, a je tedy vhodná pro zpracování 2-D dat, jako jsou obrázky.
V horní části obrázku 2 je znázorněno schéma sestavení konvoluční neuronové sítě určené ke klasifikaci objektů v obrazových datech. Ve spodní části je principiální znázornění jejího fungování. Data protékají skrze neuronovou síť a dochází k jejich konvoluci s naučenými filtry (koeficienty filtrů jsou naučené váhy neuronové sítě). Výstup z konvoluce v jedné vrstvě je vstupem do vrstvy následující. Filtry mohou začínat jako velmi jednoduché rysy, typu světlých a tmavých míst či hran, a postupně přechází do složitějších tvarů v následujících vrstvách. Cílem konvolucí je extrahovat z obrazových dat informace (ve formě mapy charakteristických rysů), na základě kterých lze objekty na snímcích rozpoznat. Konvoluční vrstvy jsou často doplněny vrstvami ReLU a Pooling, které výstupy upraví (např. odstraní záporné hodnoty) a převzorkují na menší rozměr. Za sadou konvolučních vrstev bývají napojeny vrstvy klasifikační, které pracují z extrahovanými rysy ze vstupních obrázků. Výstupem klasifikačních vrstev může být pravděpodobnostní rozdělení pro přiřazení klasifikační třídy (hledaného objektu) ke vstupnímu obrázku. CNN v MATLABuV prostředí MATLAB se s CNN pracuje velmi pohodlně. Jsou zde připraveny funkce pro vytvoření jednotlivých vrstev sítě, u kterých může uživatel nastavovat parametry. Poté vrstvy pospojuje, síť natrénuje a využije ke klasifikaci s novými daty. Typická CNN může sestávat z vrstvy pro vstup obrázků, jedné nebo několika za sebou zapojených skupin vrstev convolution2d + relu + maxPooling2d a navazujících klasifikačních vrstev fullyConnected + softmax + classification. vrstvy = [imageInputLayer([28 28 1]); CNN a klasická klasifikaceKonvoluční neuronové sítě nemusí být vždy využívány včetně klasifikačních vrstev. Je možné využívat pouze konvoluční vrstvy pro extrakci charakteristických rysů z dat. Získané rysy jsou pak vstupem do klasických klasifikačních algoritmů strojového učení, jako jsou rozhodovací stromy (classification trees), support vector machines, k-nearest neighbors, discriminant analysis a jiné metody, které jsou v MATLABu k dispozici. Učení metodou Transfer LearningNaučení celé konvoluční neuronové sítě z výchozího nastavení vyžaduje ohromné množství trénovacích dat, protože je třeba nastavit milióny váhových koeficientů. Alternativním přístupem k učení „od nuly“ je využití před-učené sítě, která již sama extrahuje charakteristické rysy ze vstupních dat. Tento přístup, označovaný termínem transfer learning, je pohodlnou cestou aplikace deep learningu bez nutnosti využití rozsáhlého množství dat a dlouhé doby učení.
Přístup vychází z předpokladu, že úlohy klasifikace objektů v obrazových datech jsou v prvních krocích (v prvních vrstvách sítě) v zásadě shodné. Nejprve se z obrazu extrahují jednoduché prvky (hrany, přechody) a poté složitější struktury, až ke konkrétním objektům. K přizpůsobení sítě konkrétnímu problému tedy postačí doučit pouze několik posledních vrstev, které již rozlišují mezi konkrétními objekty. Extrakci jednoduchých rysů zajistí před-učená síť. Kvalita výsledku velmi závisí na kvalitě před-učené sítě, proto je důležitý její vhodný výběr. MATLAB nabízí stažení a využívání oblíbených před-učených sítí, např. sítě AlexNet (síť naučená s 1,2 milióny obrázků, obsahuje 23 vrstev, klasifikace objektů do 1000 kategorií). Porovnání náročnosti učení a přesnosti klasifikace při vytváření neuronové sítě „od nuly“ v porovnání s využitím před-učené sítě je v tabulce 1.
Urychlení pomocí GPUUčení modelu pro deep learning může trvat velmi dlouhou dobu, v rozmezí dnů či týdnů. Nasazení výpočtů na grafických kartách (GPU) vede ke značnému urychlení. V případě typické úlohy klasifikace objektů v obrazu lze snížit dobu učení z dnů na hodiny. Využití GPU výpočtů k učení CNN je v prostředí MATLAB plně podporováno. Dvouminutové video s ukázkou klasifikace objektů pomocí konvoluční neuronové sítě v prostředí MATLAB najdete pod názvem Deep Learning in 11 Lines of MATLAB Code na stránkách www.mathworks.com. Distributor produktů společnosti MathWorks v České republice a na Slovensku: HUMUSOFT, s. r. o. http://www.humusoft.cz |