2022-08-30 06:04 Doba čtení: 18 min

Konvoluční neuronové sítě (CNN): Úvod

Konvoluční neuronové sítě (CNN) představují efektivnější metodu pro rozpoznávání objektů a klasifikaci obrazových dat.

V technologickém sektoru jsme svědky neustálého pokroku. Umělá inteligence (AI) a strojové učení (ML) se staly běžnými pojmy, o kterých se často mluví.

Tyto technologie se v současnosti uplatňují v mnoha oblastech, od marketingu, elektronického obchodování a vývoje softwaru, až po bankovnictví, finance a lékařství.

AI a ML jsou rozsáhlé obory, a proto se neustále vyvíjí úsilí o rozšíření jejich aplikací s cílem řešit rozmanité problémy v reálném světě. To je důvod, proč v těchto technologiích vidíme mnoho odvětví; ML je v podstatě podmnožinou samotné AI.

Konvoluční neuronové sítě jsou jedním z odvětví umělé inteligence, které v současnosti získává na popularitě.

V tomto článku si vysvětlíme, co CNN jsou, jakým způsobem fungují a jak jsou užitečné v moderním světě.

Pojďme se do toho ponořit!

Co je to konvoluční neuronová síť?

Konvoluční neuronová síť (ConvNet nebo CNN) je specifický typ umělé neuronové sítě (ANN), která využívá pokročilé algoritmy hlubokého učení k analýze obrázků, třídění vizuálních dat a provádění úkolů souvisejících s počítačovým viděním.

CNN pracuje na principech lineární algebry, jako je násobení matic, s cílem rozpoznávat vzory v obraze. Vzhledem k tomu, že tyto procesy vyžadují složité výpočty, je pro trénování modelů nezbytné použití grafických procesorových jednotek (GPU).

Zjednodušeně řečeno, CNN využívá algoritmy hlubokého učení k přijímání vstupních dat, jako jsou obrázky, a přiřazuje důležitost různým aspektům obrázku formou odchylek a váh, které se síť učí. Tímto způsobem může CNN rozlišovat mezi obrázky nebo je klasifikovat.

Stručná historie CNN

Protože konvoluční neuronová síť je vlastně typem umělé neuronové sítě, je vhodné si zopakovat principy neuronových sítí obecně.

V informatice je neuronová síť součástí strojového učení (ML) využívající algoritmy hlubokého učení. Její fungování je inspirováno propojením neuronů v lidském mozku. Umělé neuronové sítě se také inspirují organizací zrakové kůry.

Pro různé účely se používají různé typy neuronových sítí nebo umělých neuronových sítí (ANN). Jedním z nich je CNN, používaná pro detekci a klasifikaci obrazu a další úkoly. Zavedl ji postdoktorandský výzkumník Yann LeCun v 80. letech 20. století.

První verze CNN, LeNet, pojmenovaná po LeCunovi, dokázala rozpoznávat ručně psané číslice. Následně se používala v bankovnictví a poštovních službách pro čtení číslic na šecích a poštovních směrovacích číslech psaných na obálkách.

Nicméně, tato raná verze nebyla škálovatelná; proto se CNN v oblasti umělé inteligence a počítačového vidění příliš nerozšířily. Také to vyžadovalo značné výpočetní zdroje a velké objemy dat pro efektivní zpracování větších obrázků.

V roce 2012 však AlexNet znovu přivedl do popředí hluboké učení, které využívá neuronové sítě s mnoha vrstvami. Přibližně v této době se technologie posunuly vpřed a byly dostupné rozsáhlé soubory dat a značné výpočetní zdroje, což umožnilo vznik komplexních CNN schopných efektivně provádět operace počítačového vidění.

Vrstvy v CNN

Pojďme si blíže prohlédnout různé vrstvy v CNN. Zvyšování počtu vrstev v CNN zvyšuje její složitost a umožňuje jí detekovat více aspektů obrazu. Začíná jednoduchými funkcemi a postupně je schopna detekovat složitější prvky, jako je tvar objektu, až nakonec dokáže identifikovat celý obraz.

Konvoluční vrstva

První vrstvou CNN je konvoluční vrstva. Je to základní stavební blok CNN, kde dochází k většině výpočtů. Vyžaduje pouze několik komponent, jako jsou vstupní data, mapa prvků a filtr.

CNN může obsahovat i více konvolučních vrstev. Díky tomu je struktura CNN hierarchická, protože následující vrstvy mohou vizualizovat pixely v receptivních polích předchozích vrstev. Dále konvoluční vrstvy transformují daný obraz do číselných hodnot, čímž umožňují síti porozumět a extrahovat cenné vzory.

Sdružovací vrstvy

Sdružovací vrstvy se používají ke zmenšení rozměrů, což se také nazývá downsampling. Snižují počet parametrů vstupních dat. Operace sdružování může přesouvat filtr přes celý vstup, podobně jako konvoluční vrstva, ale neobsahuje váhy. Zde filtr aplikuje specifickou funkci na číselné hodnoty v receptivním poli, čímž se zaplní pole výsledků.

Sdružování má dva základní typy:

  • Průměrné sdružování: Vypočítá se průměrná hodnota v receptivním poli, kterou filtr přenese přes vstup, a přenese se do výstupního pole.
  • Max sdružování: Vybere se maximální hodnota pixelu a odešle se do výstupního pole, když filtr projde vstupem. Max sdružování se používá častěji než průměrné sdružování.

Přestože při sdružování dochází ke ztrátě některých dat, přináší CNN mnoho výhod. Pomáhá omezit rizika přizpůsobení se datům a snižuje složitost, přičemž zároveň zvyšuje efektivitu. Zvyšuje také stabilitu CNN.

Plně propojená (FC) vrstva

Jak název napovídá, všechny uzly ve výstupní vrstvě jsou přímo spojeny s uzlem předchozí vrstvy v plně propojené vrstvě. Klasifikuje obrázek na základě extrahovaných prvků z předchozích vrstev a jejich filtrů.

Plně propojené (FC) vrstvy obvykle využívají aktivační funkci softmax pro správnou klasifikaci vstupů, namísto funkcí ReLu (jako je tomu u sdružovacích a konvolučních vrstev). To pomáhá vytvořit pravděpodobnost 0 nebo 1.

Jak CNN fungují?

Konvoluční neuronová síť se skládá z mnoha vrstev, někdy i stovek. Tyto vrstvy se učí identifikovat různé rysy daného obrázku.

Ačkoli jsou CNN neuronové sítě, jejich architektura se liší od běžných ANN.

Vstupní data se vkládají do mnoha skrytých vrstev, které je transformují. Každá vrstva se skládá ze sady umělých neuronů a je plně propojena s každým neuronem ve stejné vrstvě. Nakonec je zde plně propojená vrstva nebo výstupní vrstva pro zobrazení výsledku.

Na druhou stranu CNN organizuje vrstvy do tří rozměrů: šířka, hloubka a výška. Zde se vrstva z neuronu spojuje pouze s neurony v malé oblasti, namísto toho, aby se vztahovala ke každému z nich v další vrstvě. Výsledný výstup je reprezentován jediným vektorem s pravděpodobnostním skóre a má pouze hloubkový rozměr.

Nyní se možná ptáte, co je „konvoluce“ v CNN.

Konvoluce se týká matematické operace, při které se kombinují dvě sady dat. V CNN se koncept konvoluce používá na vstupní data pro vytvoření mapy prvků pomocí filtrování informací.

To nás přivádí k některým důležitým pojmům a terminologiím používaným v CNN.

  • Filtr: Také známý jako detektor funkcí nebo jádro, filtr může mít konkrétní rozměr, například 3×3. Prochází vstupní obraz a provádí násobení matice pro každý prvek, aby se aplikovala konvoluce. Aplikování filtrů na každý tréninkový obrázek v různých rozlišeních a výstup konvolvovaného obrázku bude fungovat jako vstup pro následující vrstvu.
  • Padding: Používá se pro rozšíření vstupní matice k okrajům vložením falešných pixelů. Je to proto, že konvoluce zmenšuje velikost matice. Například matice 9×9 se po filtrování může změnit na matici 3×3.
  • Krokování: Pokud chcete získat výstup menší než váš vstup, můžete použít krokování. Umožňuje přeskakování určitých oblastí, když filtr klouže po obrázku. Vynecháním dvou nebo tří pixelů můžete vytvořit efektivnější síť snížením prostorového rozlišení.
  • Váhy a zkreslení: CNN mají ve svých neuronech váhy a zkreslení. Model se tyto hodnoty naučí během tréninku a hodnoty zůstávají stejné v celé dané vrstvě pro všechny neurony. To znamená, že každý skrytý neuron detekuje stejné rysy v různých oblastech obrazu. Díky tomu je síť tolerantnější při posunu objektů v daném obrázku.
  • ReLU: Znamená Rectified Linear Unit a používá se pro efektivnější a rychlejší trénink. Mapuje záporné hodnoty na 0 a zachovává kladné hodnoty. Nazývá se také aktivací, protože síť přenáší pouze aktivované prvky obrazu do následující vrstvy.
  • Receptivní pole: V neuronové síti každý neuron přijímá vstup z různých míst předchozí vrstvy. A v konvolučních vrstvách každý neuron přijímá vstup pouze z omezené oblasti předchozí vrstvy, která se nazývá receptivní pole neuronu. V případě FC vrstvy je receptivním polem celá předchozí vrstva.

Při výpočtech v reálném světě se konvoluce obvykle provádí v 3D obraze, což vyžaduje 3D filtr.

V CNN obsahuje síť různé části neboli vrstvy uzlů. Každá vrstva uzlu má práh a váhu a je spojena s další vrstvou. Po překročení prahové hodnoty se data odešlou do další vrstvy v síti.

Tyto vrstvy mohou provádět operace s cílem transformovat data a naučit se relevantní funkce. Tyto operace se opakují ve stovkách různých vrstev, které se neustále učí detekovat další a další rysy obrazu.

Části CNN jsou:

  • Vstupní vrstva: Zde se načítají vstupní data, například obrázek. Bude to 3D objekt s definovanou výškou, šířkou a hloubkou.
  • Jedna nebo více skrytých vrstev, neboli fáze extrakce prvků: Tyto vrstvy mohou být konvoluční, sdružovací a plně propojené.
  • Výstupní vrstva: Zde se zobrazí výsledek.

Průchod obrazu konvoluční vrstvou se transformuje do mapy prvků nebo aktivační mapy. Po konvoluci vstupního obrázku vrstva konvoluuje obraz a předává výsledek do další vrstvy.

CNN provádí mnoho konvolucí a technik sdružování k detekci prvků během fáze extrakce prvků. Pokud například vložíte obrázek kočky, CNN rozpozná její čtyři nohy, barvu, dvě oči atd.

Následně budou plně propojené vrstvy v CNN fungovat jako klasifikátor extrahovaných prvků. Vrstvy generují výsledek na základě toho, co algoritmus hlubokého učení predikuje o obrázku.

Výhody CNN

Vyšší přesnost

CNN nabízejí vyšší přesnost než běžné neuronové sítě, které nepoužívají konvoluci. CNN jsou zvláště užitečné, pokud úkol zahrnuje velké množství dat, rozpoznávání videa a obrázků atd. Poskytují vysoce přesné výsledky a předpovědi; proto se jejich použití rozšiřuje v různých odvětvích.

Výpočetní efektivita

CNN jsou výpočetně efektivnější než jiné běžné neuronové sítě. Je to díky použití procesu konvoluce. Používají také redukci rozměrů a sdílení parametrů, což umožňuje rychlejší a jednodušší implementaci modelů. Tyto techniky lze také optimalizovat pro provoz na různých zařízeních, od smartphonů po notebooky.

Extrakce funkcí

CNN se dokážou snadno naučit funkce obrázku bez nutnosti manuálního navrhování. Můžete využít předtrénované CNN a manipulovat s váhami tak, že jim dodáte data, když pracujete na novém úkolu, a CNN se tomu bez problémů přizpůsobí.

Aplikace CNN

CNN se používají v různých průmyslových odvětvích pro mnoho praktických aplikací. Mezi reálné aplikace CNN patří:

Klasifikace obrázků

CNN se široce používají při klasifikaci obrázků. Dokážou rozpoznat cenné rysy a identifikovat objekty na daném obrázku. Proto se používají v odvětvích, jako je zdravotnictví, zejména u magnetické rezonance (MRI). Kromě toho se tato technologie používá při rozpoznávání ručně psaných číslic, což byl jeden z prvních případů použití CNN v počítačovém vidění.

Detekce objektů

CNN dokážou detekovat objekty na snímcích v reálném čase a také je označit a klasifikovat. Proto se tato technika hojně používá v automatizovaných vozidlech. Rovněž umožňuje inteligentním domácnostem a chodcům rozpoznat obličej majitele vozidla. Používá se také v sledovacích systémech s umělou inteligencí k detekci a označování objektů.

Audiovizuální párování

Použití CNN při audiovizuálním párování pomáhá vylepšovat platformy pro streamování videa, jako je Netflix, YouTube atd. Pomáhá také plnit požadavky uživatelů, například vyhledávání „milostných písní od Eltona Johna“.

Rozpoznávání řeči

Kromě obrázků jsou CNN užitečné i při zpracování přirozeného jazyka (NLP) a rozpoznávání řeči. Reálným příkladem je Google, který využívá CNN ve svém systému rozpoznávání řeči.

Rekonstrukce objektů

CNN lze použít při 3D modelování reálného objektu v digitálním prostředí. Je možné, aby modely CNN vytvořily 3D model obličeje pomocí fotografie. Kromě toho se CNN používá při vytváření digitálních dvojčat v biotechnologiích, výrobě, biotechnologiích a architektuře.

Využití CNN v různých odvětvích zahrnuje:

  • Zdravotnictví: Počítačové vidění lze použít v radiologii, aby pomohlo lékařům odhalit rakovinné nádory efektivněji než lidský zrak.
  • Zemědělství: Sítě mohou využívat snímky z umělých družic, jako je LSAT, a využívat tato data ke klasifikaci úrodné půdy. Pomáhají také předpovídat úroveň úrodnosti půdy a vyvíjet účinné strategie pro maximalizaci výnosů.
  • Marketing: Aplikace sociálních médií mohou navrhnout osobu na obrázku, který byl zveřejněn na něčím profilu. Pomáhá to označovat lidi ve fotoalbech.
  • Maloobchod: Platformy elektronického obchodu mohou pomocí vizuálního vyhledávání pomoci značkám doporučit relevantní položky, které si cíloví zákazníci chtějí koupit.
  • Automobilový průmysl: CNN se používají v automobilech ke zvýšení bezpečnosti cestujících i řidičů. Činí tak pomocí funkcí, jako je detekce jízdních pruhů, detekce objektů, klasifikace obrazu atd. Pomáhá také posouvat vývoj samořiditelných vozidel.

Zdroje pro studium CNN

Kurz:

Na Coursera je dostupný kurz věnovaný CNN, který můžete zvážit. V tomto kurzu se dozvíte, jak se počítačové vidění v průběhu let vyvíjelo a jaké jsou aplikace CNN v dnešním světě.

Knihy:

Můžete si přečíst tyto knihy a přednášky a dozvědět se více o CNN:

  • Neuronové sítě a hluboké učení: Zahrnuje modely, algoritmy a teorii hlubokého učení a neuronových sítí.
  • Průvodce konvoluční neuronovou sítí pro počítačové vidění: Tato kniha vás seznámí s aplikacemi CNN a jejich koncepty.
  • Praktické konvoluční neuronové sítě s Tensorflow: Pomocí této knihy můžete vyřešit různé problémy v oblasti počítačového vidění pomocí Pythonu a TensorFlow.
  • Pokročilé aplikace hlubokého učení: Tato kniha vám pomůže pochopit CNN, hluboké učení a jejich pokročilé aplikace, včetně detekce objektů.
  • Konvoluční neuronové sítě a rekurentní neuronové sítě: Tato kniha vám poskytne informace o CNN a RNN a o tom, jak tyto sítě vytvářet.

Závěr

Konvoluční neuronové sítě jsou jednou z rychle se rozvíjejících oblastí umělé inteligence, strojového učení a hlubokého učení. Mají rozmanité aplikace v současném světě a používají se téměř ve všech odvětvích. Vzhledem k jejich rostoucímu využití se očekává, že se budou dále rozšiřovat a budou stále užitečnější při řešení reálných problémů.

Jan Novák
Autor
Czechia

Redaktor zaměřený na Windows, produktivitu a cloudové nástroje.

Předchozí článek
Opravte chybu 0x800705b3 ve Windows Update
Další článek
Jak aktualizovat DirectX ve Windows 10