Articles

Kompletní Začátečník Průvodce Hluboké Učení: Konvoluční Neuronové Sítě a Klasifikace Obrazu

Posted by admin

„Jedna věc, která mě zarazila dřív, je, že nechcete dát do fotografie to, co se děje, aby vyšel. Nebo naopak, to, co vyjde, není to, co jste vložili.“

― – Diane Arbus

na vaší oblíbené sociální síti se objeví upozornění, že někdo zveřejnil obrázek, který by vás mohl mít.

je to správné.

je to nejhorší obrázek o vás vůbec.

GIF pomocí GIPHY

Jak se to stalo?

klasifikace obrazu!

konvoluční neuronová síť (CNN) je třída neuronových sítí s hlubokým učením. CNN představují obrovský průlom v rozpoznávání obrazu. Nejčastěji se používají k analýze vizuálních snímků a často pracují v zákulisí klasifikace obrazu. Najdete je v jádru všeho, od označování fotografií Facebook Po samořídící auta. Tvrdě pracují v zákulisí ve všem, od zdravotní péče po bezpečnost.

jsou rychlé a efektivní. Ale jak fungují?

klasifikace Obrazu je proces, při vstupní (jako obrázek) a výstup třída (například „kočka“), nebo pravděpodobnost, že vstup je na konkrétní třídě („je tu 90% pravděpodobnost, že tento vstup je kočka“). Můžete se podívat na obrázek a vědět, že se díváte na hrozný výstřel své vlastní tváře, ale jak se to může počítač naučit?

s konvoluční neuronovou sítí!

CNN

  • Konvoluční vrstvy
  • ReLU vrstvy
  • Pooling vrstvy
  • Plně propojené vrstvy

klasický CNN architektura bude vypadat nějak takhle:

Input ->Convolution ->ReLU ->Convolution ->ReLU ->Pooling ->
ReLU ->Convolution ->ReLU ->Pooling ->Fully Connected

A CNN convolves (not convolutes…) learned features with input data and uses 2D convolutional layers. This means that this type of network is ideal for processing 2D images. Ve srovnání s jinými algoritmy klasifikace obrazu CNN ve skutečnosti používá velmi málo předběžného zpracování. To znamená, že se mohou naučit filtry, které musí být ručně vyrobeny v jiných algoritmech. CNNs mohou být použity v tuny aplikací, od obrazu a videa rozpoznávání, klasifikace obrazu, a doporučující systémy zpracování přirozeného jazyka a lékařské analýzy obrazu.

CNN jsou inspirovány biologickými procesy. Jsou založeny na nějakém skvělém výzkumu, který provedli Hubel a Wiesel v 60. letech, pokud jde o vidění u koček a opic. Vzorec konektivity v CNN pochází z jejich výzkumu týkajícího se organizace vizuální kůry. V oku savce reagují jednotlivé neurony na vizuální podněty pouze v receptivním poli, což je omezená oblast. Receptivní pole různých oblastí se částečně překrývají, takže je pokryto celé zorné pole. Takhle funguje CNN!

Obraz NatWhitePhotography

CNNs má vstupní vrstvu, a výstupní vrstvy a skryté vrstvy. Skryté vrstvy se obvykle skládají z konvolučních vrstev, vrstev ReLU, vrstev sdružování a plně Spojených vrstev.

  • konvoluční vrstvy použijí konvoluční operaci na vstup. Tím se informace předá další vrstvě.
  • sdružování kombinuje výstupy shluků neuronů do jednoho neuronu v další vrstvě.
  • plně připojené vrstvy spojují každý neuron v jedné vrstvě s každým neuronem v další vrstvě.

v konvoluční vrstvě neurony přijímají vstup pouze z podoblasti předchozí vrstvy. V plně připojené vrstvě přijímá každý neuron vstup z každého prvku předchozí vrstvy.

CNN pracuje extrahováním funkcí z obrázků. To eliminuje potřebu ruční extrakce funkcí. Funkce nejsou vyškoleni! Učí se, zatímco síť trénuje na sadě obrázků. Díky tomu jsou modely hlubokého učení extrémně přesné pro úkoly počítačového vidění. CNN se učí detekci funkcí prostřednictvím desítek nebo stovek skrytých vrstev. Každá vrstva zvyšuje složitost naučených funkcí.

GIF pomocí GIPHY

CNN

  • začíná se vstupním obrazu
  • vztahuje mnoho různých filtrů k vytvoření funkce mapy
  • platí ReLU funkce pro zvýšení non-linearity
  • platí sdružování vrstvu, aby každá funkce mapy
  • zplošťuje sloučí snímky do jednoho dlouhého vektoru.
  • vloží vektor do plně připojené umělé neuronové sítě.
  • zpracovává funkce prostřednictvím sítě. Poslední plně propojená vrstva poskytuje „hlasování“ tříd, po kterých jdeme.
  • trénuje dopřednou propagací a backpropagací pro mnoho, mnoho epoch. To se opakuje, dokud nebudeme mít dobře definovanou neuronovou síť s vyškolenými váhami a detektory funkcí.

co to znamená?

na samém začátku tohoto procesu je vstupní obraz rozdělen na pixely.

GIF pomocí GIPHY

Pro černé a bílé image, ty pixely jsou interpretovány jako 2D pole (například, 2×2 pixely). Každý pixel má hodnotu mezi 0 a 255. (Nula je úplně černá a 255 je úplně bílá. Stupně šedi existují mezi těmito čísly.) Na základě těchto informací může počítač začít pracovat na datech.

pro barevný obrázek se jedná o 3D pole s modrou vrstvou, zelenou vrstvou a červenou vrstvou. Každá z těchto barev má svou vlastní hodnotu mezi 0 a 255. Barvu lze nalézt kombinací hodnot v každé ze tří vrstev.

konvoluce

hlavním účelem kroku konvoluce je extrahovat prvky ze vstupního obrazu. Konvoluční vrstva je vždy prvním krokem v CNN.

máte vstupní obrázek, detektor funkcí a mapu funkcí. Vezmete filtr a použijete jej pixel block by pixel block na vstupní obrázek. Uděláte to násobením matic.

řekněme, že máte baterku a list bublinkové fólie. Vaše svítilna svítí 5-bublina x 5-bublina oblast. Chcete-li se podívat na celý list, posunete baterku přes každý čtverec 5×5, dokud neuvidíte všechny bubliny.

Foto stux

Světlo z baterky je zde filtr a oblast, kterou jsme posuvné přes receptivní pole. Světlo posuvné přes vnímavé pole je vaše svítilna konvolving. Váš filtr je pole čísel (nazývané také váhy nebo parametry). Vzdálenost světlo z baterky klouže, jak to cestuje(pohybujete filtr přes jednu řadu bublin najednou ? Dva?) se nazývá krok. Například krok jednoho znamená, že pohybujete filtrem po jednom pixelu najednou. Konvence je krok dvou.

hloubka filtru musí být stejná jako hloubka vstupu, takže pokud bychom se dívali na barevný obrázek, hloubka by byla 3. To dělá rozměry tohoto filtru 5x5x3. V každé poloze filtr násobí hodnoty ve filtru s původními hodnotami v pixelu. Toto je násobení prvků. Násobení se sčítají a vytvářejí jedno číslo. Pokud jste začali v levém horním rohu bublinkové fólie, toto číslo představuje levý horní roh. Nyní přesunete filtr do další polohy a opakujte proces všude kolem bublinkové fólie. Pole, se kterým skončíte, se nazývá mapa funkcí nebo aktivační mapa! Můžete použít více než jeden filtr, který bude dělat lepší práci při zachování prostorových vztahů.

GIF pomocí GIPHY

Budete zadat parametry, jako je počet filtrů, filtr velikost, architektura sítě, a tak dále. CNN se během tréninku učí hodnoty filtrů sama. Máte spoustu možností, se kterými můžete pracovat, aby byl pro váš úkol co nejlepší klasifikátor obrázků. Můžete si vybrat podložku vstupní matice s nulami (zero padding), který chcete použít filtr, aby se sousedící prvky vstupní obrazové matice. To také umožňuje ovládat velikost map funkcí. Přidání nulového polstrování je široká konvoluce. Nepřidání nulového polstrování je úzká konvoluce.

to je v podstatě to, jak detekujeme obrázky! Nedíváme se na každý jednotlivý pixel obrázku. Vidíme funkce jako klobouk, červené šaty, tetování a tak dále. Do našich očí se neustále dostává tolik informací, že bychom se nemohli vypořádat s každým jednotlivým pixelem. Dovolujeme našemu modelu udělat to samé.

výsledkem je konvolvovaná mapa funkcí. Je menší než původní vstupní obrázek. Díky tomu je snazší a rychlejší řešení. Ztrácíme informace? Některé Ano. Současně je však účelem detektoru funkcí detekovat funkce, což je přesně to, co to dělá.

vytváříme mnoho map funkcí, abychom získali naši první konvoluční vrstvu. To nám umožňuje identifikovat mnoho různých funkcí, které se program může naučit.

detektory funkcí lze nastavit s různými hodnotami, abyste získali různé výsledky. Například lze použít filtr, který může zaostřit a zaostřit obrázek nebo rozmazat obrázek. To by dávalo stejnou důležitost všem hodnotám. Můžete provést vylepšení hran, detekci hran a další. To byste udělali použitím různých detektorů funkcí k vytvoření různých map funkcí. Počítač je schopen určit, které filtry mají největší smysl a aplikovat je.

primárním účelem je najít funkce ve vašem obrázku, vložit je do mapy funkcí a stále zachovat prostorový vztah mezi pixely. To je důležité, aby pixely nebyly všechny zmatené.

pojďme si to představit!

Pozdravte mého malého přítele:

Photo by Kirgiz03 on

We’re going to use this guy for our input image.

We’ll make him black and white

Let’s define and visualize our filters

import numpy as npfilter_vals = np.array(, , , ])print('Filter shape: ', filter_vals.shape)

Filter shape: (4, 4)

a vidíme:

Filter 1: 



]

Zde je vizualizace z našich čtyř filtrů

Nyní pojďme definovat konvoluční vrstva (já jsem milující PyTorch teď, tak to je to, co používáme tady.)

uvidíme,

Net(
(conv): Conv2d(1, 4, kernel_size=(4, 4), stride=(1, 1), bias=False)
)

Přidat trochu více kódu,

Pak se trochu víc

A můžeme vizualizovat výstup konvoluční vrstva před aktivační funkce ReLu je aplikován!

Nyní pojďme vytvořit vlastní jádro pomocí Sobel operátor jako detekce hran filtru. Filtr Sobel se velmi běžně používá při detekci hran. To dělá dobrou práci najít vzory v intenzitě v obraze. Použití sobelova filtru na obrázek je způsob, jak aproximovat derivaci obrazu samostatně ve směru x nebo y.

Budeme převádět náš prcek na stupně šedi pro filtrování

gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)plt.imshow(gray, cmap='gray')

Tady to máme!

Chcete se podívat na matematiku? Podívejte se na úvod do konvolučních neuronových sítí Jianxin Wu

vrstva ReLU

vrstva ReLU (rektifikovaná lineární jednotka) je dalším krokem k naší konvoluční vrstvě. Používáte aktivační funkci na mapy funkcí, abyste zvýšili nelinearitu v síti. Je to proto, že samotné obrazy jsou vysoce nelineární! Odstraní záporné hodnoty z aktivační mapy jejich nastavením na nulu.

konvoluce je lineární operace s věcmi, jako je násobení a sčítání prvků. Reálná data, která chceme, aby se naše CNN dozvěděla, budou nelineární. Můžeme to vysvětlit operací, jako je ReLU. Můžete použít jiné operace, jako je tanh nebo sigmoid. ReLU je však populární volbou, protože může trénovat síť rychleji bez jakéhokoli velkého trestu za přesnost zobecnění.

podívejte se na C. – C. Jay Kuo porozumění Konvolučním neuronovým sítím pomocí matematického modelu.

chcete kopat hlouběji? Zkuste Kaiming He, et al. Ponoření hluboko do usměrňovačů: překonávání výkonu na lidské úrovni při klasifikaci ImageNet.

Pokud potřebujete trochu více informací o absolutních základech aktivačních funkcí, najdete to zde!

Zde je, jak náš malý kamarád hledá po aktivační funkce ReLU otočí všechny negativní hodnoty pixelu černá

viz_layer(activated_layer)

Related Post