logo

Úvod do konvolučnej neurónovej siete

A Konvolučná neurónová sieť (CNN) je typ architektúry neurónovej siete Deep Learning bežne používanej v počítačovom videní. Počítačové videnie je oblasť umelej inteligencie, ktorá umožňuje počítaču porozumieť a interpretovať obraz alebo vizuálne údaje.

Pokiaľ ide o strojové učenie, Umelé neurónové siete vystupovať naozaj dobre. Neurónové siete sa používajú v rôznych súboroch údajov, ako sú obrázky, zvuk a text. Rôzne typy neurónových sietí sa používajú na rôzne účely, napríklad na predpovedanie poradia slov, ktoré používame Rekurentné neurónové siete presnejšie an LSTM , podobne na klasifikáciu obrázkov používame konvolučné neurónové siete. V tomto blogu sa chystáme postaviť základný stavebný kameň pre CNN.



reťazcový formát java

V bežnej neurónovej sieti existujú tri typy vrstiev:

  1. Vstupné vrstvy: Je to vrstva, v ktorej dávame vstup do nášho modelu. Počet neurónov v tejto vrstve sa rovná celkovému počtu prvkov v našich údajoch (počet pixelov v prípade obrázka).
  2. Skrytá vrstva: Vstup zo vstupnej vrstvy sa potom privádza do skrytej vrstvy. V závislosti od nášho modelu a veľkosti údajov môže byť veľa skrytých vrstiev. Každá skrytá vrstva môže mať rôzny počet neurónov, ktoré sú vo všeobecnosti väčšie ako počet funkcií. Výstup z každej vrstvy sa vypočíta maticovým vynásobením výstupu predchádzajúcej vrstvy s naučiteľnými váhami tejto vrstvy a potom pridaním naučiteľných predpätí nasledovaných aktivačnou funkciou, ktorá robí sieť nelineárnou.
  3. Výstupná vrstva: Výstup zo skrytej vrstvy sa potom privádza do logistickej funkcie, ako je sigmoid alebo softmax, ktorá prevádza výstup každej triedy na skóre pravdepodobnosti každej triedy.

Dáta sú privádzané do modelu a výstup z každej vrstvy je získaný z vyššie uvedeného kroku je volaný spätná väzba , potom vypočítame chybu pomocou chybovej funkcie, niektoré bežné chybové funkcie sú krížová entropia, chyba štvorcovej straty atď. Chybová funkcia meria, ako dobre funguje sieť. Potom sa spätne šírime do modelu výpočtom derivátov. Tento krok sa nazýva Konvolučná neurónová sieť (CNN) je rozšírená verzia umelé neurónové siete (ANN) ktorý sa prevažne používa na extrahovanie funkcie z maticového súboru údajov mriežky. Napríklad vizuálne množiny údajov, ako sú obrázky alebo videá, kde vzory údajov zohrávajú rozsiahlu úlohu.

architektúra CNN

Konvolučná neurónová sieť pozostáva z viacerých vrstiev, ako je vstupná vrstva, konvolučná vrstva, združovacia vrstva a plne prepojené vrstvy.



max

Jednoduchá architektúra CNN

Konvolučná vrstva aplikuje filtre na vstupný obrázok na extrahovanie prvkov, vrstva Pooling prevzorkuje obrázok na zníženie počtu výpočtov a úplne prepojená vrstva vytvára konečnú predpoveď. Sieť sa učí optimálne filtre prostredníctvom spätného šírenia a gradientového zostupu.

Ako fungujú konvolučné vrstvy

Konvolučné neurónové siete alebo kovnety sú neurónové siete, ktoré zdieľajú svoje parametre. Predstavte si, že máte obrázok. Môže byť reprezentovaný ako kváder, ktorý má svoju dĺžku, šírku (rozmer obrazu) a výšku (t. j. kanál, keďže obrázky majú vo všeobecnosti červené, zelené a modré kanály).



cnn-2-300 x 133

Teraz si predstavte, že zoberiete malú časť tohto obrázka a spustíte na ňom malú neurónovú sieť, nazývanú filter alebo jadro, s povedzme K výstupmi a reprezentujúcou ich vertikálne. Teraz posuňte túto neurónovú sieť cez celý obrázok, výsledkom čoho bude ďalší obrázok s rôznymi šírkami, výškami a hĺbkami. Namiesto iba kanálov R, G a B teraz máme viac kanálov, ale menšiu šírku a výšku. Táto operácia sa nazýva Konvolúcia . Ak je veľkosť záplaty rovnaká ako veľkosť obrázka, bude to obyčajná neurónová sieť. Kvôli tejto malej náplasti máme menej závaží.

Snímka obrazovky z 2017-08-15-13-55-59-300x217

Zdroj obrázkov: Deep Learning Udacity

Teraz si povedzme trochu matematiky, ktorá je súčasťou celého procesu konvolúcie.

  • Konvolučné vrstvy pozostávajú zo sady naučiteľných filtrov (alebo jadier), ktoré majú malé šírky a výšky a rovnakú hĺbku ako vstupný objem (3, ak je vstupnou vrstvou obrazový vstup).
  • Napríklad, ak musíme spustiť konvolúciu na obrázku s rozmermi 34x34x3. Možná veľkosť filtrov môže byť axax3, kde „a“ môže byť niečo ako 3, 5 alebo 7, ale menšie v porovnaní s rozmerom obrázka.
  • Počas prechodu dopredu posúvame každý filter cez celý vstupný objem krok za krokom, kde sa volá každý krok kráčať (ktorá môže mať hodnotu 2, 3 alebo dokonca 4 pre vysokorozmerné obrázky) a vypočítajte bodový súčin medzi váhami jadra a záplatou zo vstupného objemu.
  • Keď posúvame naše filtre, získame 2-D výstup pre každý filter a výsledkom je, že ich poskladáme, dostaneme výstupný objem s hĺbkou rovnajúcou sa počtu filtrov. Sieť sa naučí všetky filtre.

Vrstvy používané na vytváranie sietí ConvNets

Kompletná architektúra konvolučných neurónových sietí je známa aj ako covnets. Covnets je postupnosť vrstiev a každá vrstva transformuje jeden zväzok na druhý prostredníctvom diferencovateľnej funkcie.
Typy vrstiev: množiny údajov
Zoberme si príklad spustením covnetov na obrázku s rozmermi 32 x 32 x 3.

  • Vstupné vrstvy: Je to vrstva, v ktorej dávame vstup do nášho modelu. V CNN bude vstupom vo všeobecnosti obrázok alebo sekvencia obrázkov. Táto vrstva obsahuje nespracovaný vstup obrázka so šírkou 32, výškou 32 a hĺbkou 3.
  • Konvolučné vrstvy: Toto je vrstva, ktorá sa používa na extrahovanie funkcie zo vstupnej množiny údajov. Na vstupné obrázky aplikuje sadu naučiteľných filtrov známych ako jadrá. Filtre/jadrá sú menšie matice, ktoré majú zvyčajne tvar 2×2, 3×3 alebo 5×5. posúva sa po vstupných obrazových dátach a vypočítava bodový súčin medzi hmotnosťou jadra a zodpovedajúcou vstupnou obrazovou záplatou. Výstup z tejto vrstvy sa označuje ako mapy prvkov. Predpokladajme, že pre túto vrstvu použijeme celkom 12 filtrov, dostaneme výstupný objem s rozmermi 32 x 32 x 12.
  • Aktivačná vrstva: Pridaním aktivačnej funkcie k výstupu predchádzajúcej vrstvy pridávajú aktivačné vrstvy sieti nelinearitu. na výstup konvolučnej vrstvy použije aktivačnú funkciu po prvkoch. Niektoré bežné aktivačné funkcie sú pokračovať : max(0, x), Rybí , Leaky RELU , atď. Objem zostáva nezmenený, preto výstupný objem bude mať rozmery 32 x 32 x 12.
  • Združovacia vrstva: Táto vrstva je periodicky vkladaná do covnetov a jej hlavnou funkciou je zmenšiť veľkosť objemu, vďaka čomu je výpočet rýchly, znižuje pamäť a tiež zabraňuje preplneniu. Dva bežné typy združovacích vrstiev sú max pooling a priemerné združovanie . Ak použijeme bazén max s 2 x 2 filtrami a krok 2, výsledný objem bude mať rozmer 16x16x12.
Snímka obrazovky z 2017-08-15-17-04-02

Zdroj obrázkov: cs231n.stanford.edu

  • Sploštenie: Výsledné mapy prvkov sú po konvolúcii a spájaní vrstiev sploštené do jednorozmerného vektora, takže ich možno odovzdať do úplne prepojenej vrstvy na kategorizáciu alebo regresiu.
  • Plne prepojené vrstvy: Zoberie vstup z predchádzajúcej vrstvy a vypočíta konečnú klasifikačnú alebo regresnú úlohu.
Snímka obrazovky z 2017-08-15-17-22-40

Zdroj obrázkov: cs231n.stanford.edu

  • Výstupná vrstva: Výstup z plne prepojených vrstiev sa potom privádza do logistickej funkcie pre klasifikačné úlohy, ako je sigmoid alebo softmax, ktorá prevádza výstup každej triedy na skóre pravdepodobnosti každej triedy.

Príklad:

Uvažujme o obrázku a aplikujme konvolučnú vrstvu, aktivačnú vrstvu a operáciu združovacej vrstvy na extrahovanie vnútornej funkcie.

porovnanie leva a tigra

Vstupný obrázok:

Ganesh

Vstupný obrázok

krok:

  • importovať potrebné knižnice
  • nastavte parameter
  • definovať jadro
  • Načítajte obrázok a nakreslite ho.
  • Preformátujte obrázok
  • Použite operáciu konvolučnej vrstvy a vykreslite výstupný obrázok.
  • Použite operáciu aktivačnej vrstvy a nakreslite výstupný obrázok.
  • Použite operáciu združovacej vrstvy a vykreslite výstupný obrázok.

Python3




# import the necessary libraries> import> numpy as np> import> tensorflow as tf> import> matplotlib.pyplot as plt> from> itertools>import> product> > # set the param> plt.rc(>'figure'>, autolayout>=>True>)> plt.rc(>'image'>, cmap>=>'magma'>)> > # define the kernel> kernel>=> tf.constant([[>->1>,>->1>,>->1>],> >[>->1>,>8>,>->1>],> >[>->1>,>->1>,>->1>],> >])> > # load the image> image>=> tf.io.read_file(>'Ganesh.webp'plain'>)> image>=> tf.io.decode_jpeg(image, channels>=>1>)> image>=> tf.image.resize(image, size>=>[>300>,>300>])> > # plot the image> img>=> tf.squeeze(image).numpy()> plt.figure(figsize>=>(>5>,>5>))> plt.imshow(img, cmap>=>'gray'>)> plt.axis(>'off'>)> plt.title(>'Original Gray Scale image'>)> plt.show();> > > # Reformat> image>=> tf.image.convert_image_dtype(image, dtype>=>tf.float32)> image>=> tf.expand_dims(image, axis>=>0>)> kernel>=> tf.reshape(kernel, [>*>kernel.shape,>1>,>1>])> kernel>=> tf.cast(kernel, dtype>=>tf.float32)> > # convolution layer> conv_fn>=> tf.nn.conv2d> > image_filter>=> conv_fn(> >input>=>image,> >filters>=>kernel,> >strides>=>1>,># or (1, 1)> >padding>=>'SAME'>,> )> > plt.figure(figsize>=>(>15>,>5>))> > # Plot the convolved image> plt.subplot(>1>,>3>,>1>)> > plt.imshow(> >tf.squeeze(image_filter)> )> plt.axis(>'off'>)> plt.title(>'Convolution'>)> > # activation layer> relu_fn>=> tf.nn.relu> # Image detection> image_detect>=> relu_fn(image_filter)> > plt.subplot(>1>,>3>,>2>)> plt.imshow(> ># Reformat for plotting> >tf.squeeze(image_detect)> )> > plt.axis(>'off'>)> plt.title(>'Activation'>)> > # Pooling layer> pool>=> tf.nn.pool> image_condense>=> pool(>input>=>image_detect,> >window_shape>=>(>2>,>2>),> >pooling_type>=>'MAX'>,> >strides>=>(>2>,>2>),> >padding>=>'SAME'>,> >)> > plt.subplot(>1>,>3>,>3>)> plt.imshow(tf.squeeze(image_condense))> plt.axis(>'off'>)> plt.title(>'Pooling'>)> plt.show()>

formátovať dátum v java
>

>

Výkon :

stiahnuť-(23)

Pôvodný obrázok v odtieňoch sivej

Snímka obrazovky z 2023-03-20-15-07-10-(2)

Výkon

Výhody konvolučných neurónových sietí (CNN):

  1. Dobré pri zisťovaní vzorov a funkcií v obrázkoch, videách a zvukových signáloch.
  2. Odolné voči invariantnosti posunu, rotácie a zmeny mierky.
  3. Úplné školenie, nie je potrebné manuálne extrahovanie funkcií.
  4. Dokáže spracovať veľké množstvo údajov a dosiahnuť vysokú presnosť.

Nevýhody konvolučných neurónových sietí (CNN):

  1. Výpočtovo nákladné trénovanie a vyžaduje veľa pamäte.
  2. Môže byť náchylný na nadmerné vybavenie, ak sa nepoužije dostatok údajov alebo sa použije správna regulácia.
  3. Vyžaduje veľké množstvo označených údajov.
  4. Interpretovateľnosť je obmedzená, je ťažké pochopiť, čo sa sieť naučila.

Často kladené otázky (FAQ)

1: Čo je to konvolučná neurónová sieť (CNN)?

Konvolučná neurónová sieť (CNN) je typ neurónovej siete s hlbokým učením, ktorá je vhodná na analýzu obrazu a videa. CNN používajú sériu konvolučných a združovacích vrstiev na extrahovanie funkcií z obrázkov a videí a potom tieto funkcie používajú na klasifikáciu alebo detekciu objektov alebo scén.

regálových psov

2: Ako fungujú CNN?

CNN fungujú tak, že na vstupný obrázok alebo video aplikujú sériu konvolučných a združovacích vrstiev. Konvolučné vrstvy extrahujú funkcie zo vstupu posunutím malého filtra alebo jadra cez obrázok alebo video a vypočítaním bodového súčinu medzi filtrom a vstupom. Združovacie vrstvy potom prevzorkujú výstup konvolučných vrstiev, aby sa znížila dimenzionalita údajov a aby boli výpočtovo efektívnejšie.

3: Aké sú niektoré bežné aktivačné funkcie používané v CNN?

Niektoré bežné aktivačné funkcie používané v CNN zahŕňajú:

  • Rectified Linear Unit (ReLU): ReLU je nesaturačná aktivačná funkcia, ktorá je výpočtovo efektívna a ľahko sa trénuje.
  • Netesná usmernená lineárna jednotka (Leaky ReLU): Netesná ReLU je variant ReLU, ktorý umožňuje prúdenie malého množstva negatívneho gradientu cez sieť. To môže pomôcť zabrániť odumretiu siete počas tréningu.
  • Parametric Rectified Linear Unit (PReLU): PReLU je zovšeobecnenie Leaky ReLU, ktoré umožňuje naučiť sa sklon negatívneho gradientu.

4: Aký je účel použitia viacerých konvolučných vrstiev v CNN?

Použitie viacerých konvolučných vrstiev v CNN umožňuje sieti naučiť sa čoraz zložitejšie funkcie zo vstupného obrazu alebo videa. Prvé konvolučné vrstvy sa učia jednoduché prvky, ako sú hrany a rohy. Hlbšie konvolučné vrstvy sa učia zložitejšie prvky, ako sú tvary a objekty.

5: Aké sú niektoré bežné techniky regularizácie používané v CNN?

Regulačné techniky sa používajú na zabránenie tomu, aby CNN preplnili tréningové dáta. Niektoré bežné techniky regularizácie používané v CNN zahŕňajú:

  • Výpadok: Výpadok náhodne vyradí neuróny zo siete počas tréningu. To núti sieť naučiť sa robustnejšie funkcie, ktoré nie sú závislé od žiadneho neurónu.
  • Regulácia L1: Regulácia L1 reguluje absolútnu hodnotu váh v sieti. To môže pomôcť znížiť počet váh a zefektívniť sieť.
  • Regulácia L2: Regulácia L2 reguluje druhá mocnina váh v sieti. To môže tiež pomôcť znížiť počet závaží a zefektívniť sieť.

6: Aký je rozdiel medzi konvolučnou vrstvou a združovacou vrstvou?

Konvolučná vrstva extrahuje prvky zo vstupného obrázka alebo videa, zatiaľ čo združovacia vrstva prevzorkuje výstup konvolučných vrstiev. Konvolučné vrstvy používajú sériu filtrov na extrakciu funkcií, zatiaľ čo združovacie vrstvy používajú rôzne techniky na prevzorkovanie údajov, ako je maximálne združovanie a priemerné združovanie.