Konvoluce

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Konvoluce je druh matematické operace, který se používá především v lineární algebře a signálové analýze. Jedná se o operaci, která zpracovává dvě funkce, signály nebo obrazy a vytváří z nich novou funkci, signál nebo obrázek. Konvoluce je definována jako integrální operace, ve které se jedna z funkcí posouvá přes druhou sestávající z jistého intervalu. Konvoluce nachází široké uplatnění v různých oblastech, jako je digitální zpracování obrazu, audio zpracování, nebo například filtraci signálů. Díky konvoluci lze efektivně zpracovávat a analýzovat různé druhy signálů, například časové řady, obrazy nebo frekvenční spektra. Článek dále představuje matematické vlastnosti konvoluce, jako je komutativita, asociativita, a distributivita, a popisuje konkrétní způsoby výpočtu konvoluce pomocí různých metod, jako je konvoluce pomocí konvolučního jádra nebo prostorová konvoluce. V poslední části článku jsou popsány různé konvoluční sítě a konvoluční vrstvy v neuronových sítích. Konvoluční sítě se staly populárními v oblasti strojového učení a hlubokého učení, kde jsou používány pro analýzu obrazů, textů a zvuků. Také se zde vysvětluje princip zpětné propagace chyby a učení konvolučních sítí. Celkově je článek užitečným zdrojem informací pro ty, kteří se zajímají o operaci konvoluce a její aplikace v různých oblastech.

RC článku. Výsledkem konvoluce je odezva RC článku na obdélníkový puls. Konvoluce je matematický operátor zpracovávající dvě funkce.

Spojitá konvoluce (značí se hvězdičkou) jednorozměrných funkcí f(x) a g(x) je definována vztahem:

(f*g)(x) = \int_{-\infty}^{\infty} f( \alpha) g(x- \alpha) \, \mathrm{d} \alpha

Funkci g(x) se říká konvoluční jádro. Hodnota konvoluce funkce f s jádrem g v bodě x je integrál ze součinu funkce f s otočenou funkcí konvolučního jádra (integrační proměnná \alpha má v argumentu konvolučního jádra g(x-\alpha) záporné znaménko) posunutou do bodu x.

Pokud jde o konvoluci při zpracovávání obrazu, je funkce f(x) většinou zkoumaný obrázek a funkce g(x) nějaký filtr.

...

Vlastnosti konvoluce

Komutativní

: f * g = g * f \,

Asociativní

: f * (g * h) = (f * g) * h \,

Distributivní

: f * (g + h) = (f * g) + (f * h) \,

Existence jednotky

: f * \delta = \delta * f = f \, kde δ je tzv. Diracova delta funkce (distribuce): : \delta(x) = 0 , x \ne 0 a \delta(0):=+\infty. +more Integrál Delta funkce je roven 1: :\int_{-\infty}^\infty \delta(x) \,\mathrm{d}x = 1. Jde tedy o puls trvající nekonečně krátkou dobu.

Asociativita při násobení skalárem

: a (f * g) = (a f) * g = f * (a g) \, pro všechna reálná (nebo komplexní) čísla a.

Konvoluční teorém

: \mathcal{F}(f * g) = \left[\mathcal{F} (f)\right] \cdot \left[\mathcal{F} (g)\right] = F \cdot G

kde \mathcal{F}(f)\, značí Fourierovu transformaci f \, : \mathcal{F}\left[f(x)\right]\equiv F(k) \equiv\int^\infty_{-\infty}f(x)\exp(-2 \pi i k x)\,\mathrm{d}x

Dk.: : F(k) = \int^\infty_{-\infty}f(x)\exp(-2 \pi i k x)\,\mathrm{d}x : G(k) = \int^\infty_{-\infty}g(x)\exp(-2 \pi i k x)\,\mathrm{d}x : h(z) = \int_{-\infty}^{\infty} f(x) g(z- x) \,\mathrm{d}x : H(k) = \int^\infty_{-\infty}h(z)\exp(-2 \pi i k z)\,\mathrm{d}z = \int^\infty_{-\infty}\left[\int^\infty_{-\infty}f(x) g(z- x)dx\right]\exp(-2 \pi i k z)\,\mathrm{d}z = : = \int^\infty_{-\infty}f(x)\left[\int^\infty_{-\infty} g(z- x)\exp(-2 \pi i k z) \,\mathrm{d}z \right] \mathrm{d}x = substituce: y=z-x\, a tedy \mathrm{d}y=\mathrm{d}z\, : = \int^\infty_{-\infty}f(x)\left[\int^\infty_{-\infty}g(y)\exp(-2 \pi i k (y+x))\,\mathrm{d}y \right] \mathrm{d}x = : = \int^\infty_{-\infty}f(x)\exp(-2 \pi i k x)\,\mathrm{d}x\cdot\int^\infty_{-\infty}g(y)\exp(-2 \pi i k y)\,\mathrm{d}y = F(k)\cdot G(k)

Diskrétní konvoluce

:(f * g)_k\ \stackrel{\mathrm{def}}{=}\ \sum_{i=-\infty}^{\infty} f_i \cdot g_{k - i} ::::= \sum_{i=-\infty}^{\infty} f_{k-i} \cdot g_i

Příklad

V případě dvou konečných řad se samozřejmě nesčítá od −∞ do +∞, ale pouze přes existující prvky. (Případně si lze na pozici neexistujících prvků řady představit nuly. +more) Výsledná řada je o jeden prvek kratší než je součet délek konvoluovaných řad.

Konvoluce dvou řad:

(a, b, c, d) * (e, f, g) = = (a*e) (a*f) (a*g) (b*e) (b*f) (b*g) (c*e) (c*f) (c*g) (d*e) (d*f) (d*g) ----------------------------------- následuje sečtení pod sebou

Výsledek je stejný, jakoby se jednalo o součin dvou polynomů. (Koeficienty násobených polynomů by představovaly dvě konvoluované řady, koeficienty součinu polynomů by odpovídaly výsledku konvoluce. +more).

Konkrétní čísla:

(1, 2, -2, -1) * (1, -1, 2) = = 1 -1 2 2 -2 4 -2 2 -4 -1 1 -2 ------------------ (1, 1,-2, 5,-3,-2)

Jinou možností výpočtu je použití maticového násobení.

\begin{bmatrix}a & b & c & d\end{bmatrix} * \begin{bmatrix}e & f & g\end{bmatrix} = \begin{bmatrix}a & b & c & d\end{bmatrix} \begin{bmatrix}e & f & g & 0 & 0 & 0 \\ 0 & e & f & g & 0 & 0 \\ 0 & 0 & e & f & g & 0 \\ 0 & 0 & 0 & e & f & g\end{bmatrix}

Konkrétní čísla:

\begin{bmatrix}1 & 2 & -2 & -1\end{bmatrix} * \begin{bmatrix}1 & -1 & 2\end{bmatrix} = \begin{bmatrix}1 & 2 & -2 & -1\end{bmatrix} \begin{bmatrix}1 & -1 & 2 & 0 & 0 & 0 \\ 0 & 1 & -1 & 2 & 0 & 0 \\ 0 & 0 & 1 & -1 & 2 & 0 \\ 0 & 0 & 0 & 1 & -1 & 2\end{bmatrix} = \begin{bmatrix}1 & 1 & -2 & 5 & -3 & -2\end{bmatrix}

Využití v počítačové grafice

Konvoluce se často používá při algoritmech zpracování dvourozměrného diskrétního obrazu v počítačové grafice. Vzorec diskrétní konvoluce má potom tvar:

(f*h)(x,y) = \sum_{i=-k}^k \sum_{j=-k}^k f(x-i,y-j) \cdot h(i,j)

Princip diskrétní dvourozměrné konvoluce V případě diskrétní konvoluce lze jádro chápat jako tabulku (konvoluční maska), kterou položíme na příslušné místo obrazu. +more Každý pixel překrytý tabulkou vynásobíme koeficientem v příslušné buňce a provedeme součet všech těchto hodnot. Tím dostaneme jeden nový pixel.

Například mějme konvoluční masku o rozměru 3×3 (bude překryto 9 pixelů) a všechny buňky mají koeficient 0,111 (1/9). Nový pixel, který vypočteme po aplikaci na jedno místo v původním obraze, tedy bude průměrem z devíti okolních pixelů. +more Neudělali jsme totiž nic jiného, než že jsme sečetli hodnoty 9 pixelů a vydělili 9. Pokud aplikujeme konvoluci na celý obraz, pak dostaneme rozostřený obraz. Pokud použijeme větší konvoluční masku 5×5 s koeficienty 1/25, pak bude obraz rozostřen více.

Koeficienty uvnitř konvoluční masky udávají vliv hodnoty pixelu pod nimi. Lze tak nadefinovat velké množství operací, např. +more derivace obrazu (u diskrétního obrazu mluvíme o tzv. odhadu derivace), tedy zvýraznění hran (viz detekce hran).

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top