Connect with us

AI 101

Co jsou CNNs (Convolutional Neural Networks)?

mm

Možná jste se někdy divili, jak Facebook nebo Instagram dokáže automaticky rozpoznat tváře na obrázku, nebo jak Google umožňuje procházet web a hledat podobné fotografie pouze nahráním vaší vlastní fotografie. Tyto funkce jsou příklady počítačového vidění a jsou poháněny convolutional neural networks (CNNs). Ale co přesně jsou convolutional neural networks? Pojďme se podívat na architekturu CNN a pochopit, jak fungují.

Co jsou Neural Networks?

Než začneme mluvit o convolutional neural networks, pojďme se podívat na definici běžných neuronových sítí. Existuje jiný článek na téma neuronových sítí, takže se zde nebudeme příliš zabývat. Nicméně, abychom je stručně definovali, jsou to výpočetní modely inspirované lidským mozkem. Neuronová síť funguje tak, že přijímá data a manipuluje jimi úpravou “váh”, které jsou předpoklady o tom, jak jsou vstupní funkce související s třídou objektu. Když je síť trénována, hodnoty váh se upravují a doufáme, že se nakonec shodnou na váhách, které přesně zachycují vztahy mezi funkcemi.

To je, jak funguje feed-forward neuronová síť, a CNNs se skládají ze dvou částí: feed-forward neuronové sítě a skupiny convolutional vrstev.

Co jsou Convolution Neural Networks (CNNs)?

Co jsou “konvoluce”, které se vyskytují v convolutional neuronové síti? Konvoluce je matematická operace, která vytváří sadu váh, vytvářející reprezentaci částí obrázku. Tato sada váh se nazývá jádro nebo filtr. Filtr, který je vytvořen, je menší než celý vstupní obrázek, pokrývající pouze část obrázku. Hodnoty ve filtru se násobí s hodnotami v obrázku. Filtr se pak přesune, aby vytvořil reprezentaci nové části obrázku, a proces se opakuje, dokud není celý obrázek pokryt.

Jiný způsob, jak o tom přemýšlet, je si představit zdí z cihel, kde cihly reprezentují pixely ve vstupním obrázku. “Okno” se posouvá po zdi, což je filtr. Cihly, které jsou vidět skrze okno, jsou pixely, jejichž hodnota se násobí hodnotami ve filtru. Z tohoto důvodu se tato metoda vytváření váh s filtrem často nazývá “technika posouvajících se oken”.

Výstup z filtrů, které se pohybují kolem celého vstupního obrázku, je dvourozměrné pole reprezentující celý obrázek. Toto pole se nazývá “mapa funkcí”.

Proč jsou konvoluce nezbytné

Jaký je účel vytváření konvolucí? Konvoluce jsou nezbytné, protože neuronová síť musí být schopna interpretovat pixely v obrázku jako číselné hodnoty. Funkce convolutional vrstev je převést obrázek na číselné hodnoty, které neuronová síť může interpretovat a poté extrahovat relevantní vzory. Úloha filtrů v convolutional síti je vytvořit dvourozměrné pole hodnot, které lze předat do pozdějších vrstev neuronové sítě, které se naučí vzory v obrázku.

Filtry a kanály

Photo: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)

CNNs nepoužívají pouze jeden filtr k naučení vzorů z vstupních obrázků. Používají se více filtrů, protože různé pole vytvořené různými filtry vedou k bohatší a komplexnější reprezentaci vstupního obrázku. Obvyklé počty filtrů pro CNNs jsou 32, 64, 128 a 512. Čím více filtrů je, tím více příležitostí má CNN k prozkoumání vstupních dat a naučení se z nich.

CNN analyzuje rozdíly v hodnotách pixelů, aby určil hranice objektů. U obrázků v šedé škále by CNN hledal pouze rozdíly mezi černou a bílou, světlem a tmou. Když jsou obrázky barevné, CNN bere v úvahu nejen rozdíly mezi světlem a tmou, ale také tři různé barevné kanály – červenou, zelenou a modrou. V tomto případě filtry mají 3 kanály, stejně jako obrázek sám. Počet kanálů, které filtr má, se nazývá jeho hloubka, a počet kanálů ve filtru musí odpovídat počtu kanálů v obrázku.

Architektura Convolutional Neural Network (CNN)

Pojďme se podívat na kompletní architekturu convolutional neuronové sítě. Convolutional vrstva se nachází na začátku každé convolutional sítě, protože je nezbytná k transformaci obrazových dat na číselné pole. Nicméně, convolutional vrstvy mohou následovat i po jiných convolutional vrstvách, což znamená, že tyto vrstvy mohou být vrstveny na sebe. Mít více convolutional vrstev znamená, že výstupy z jedné vrstvy mohou podstoupit další konvoluce a být seskupeny do relevantních vzorů. Prakticky to znamená, že když obrazová data procházejí convolutional vrstvami, síť začíná “rozpoznávat” složitější funkce obrázku.

Rané vrstvy ConvNet jsou odpovědné za extrakci nízkoúrovňových funkcí, jako jsou pixely, které tvoří jednoduché linie. Pozdější vrstvy ConvNet spojí tyto linie do tvarů. Tento proces přechodu od povrchové analýzy k hluboké analýze pokračuje, dokud ConvNet nerozpozná složitější tvary, jako jsou zvířata, lidské tváře a auta.

Po prochodu dat všemi convolutional vrstvami se dostanou do hustě propojené části CNN. Hustě propojené vrstvy jsou tím, co vypadá jako tradiční feed-forward neuronová síť, série uzlů uspořádaných do vrstev, které jsou propojeny navzájem. Data procházejí těmito hustě propojenými vrstvami, které se naučí vzory, které byly extrahovány convolutional vrstvami, a tím se síť stane schopnou rozpoznávat objekty.

Blogger a programátor se specializací na Machine Learning a Deep Learning témata. Daniel doufá, že pomůže ostatním využít sílu AI pro sociální dobro.