konvolúciós neurális hálózatok (cnn)home.mit.bme.hu/~engedy/nn/nn-cnn.pdfaz előző óráról,...

35
Konvolúciós neurális hálózatok (CNN)

Upload: others

Post on 31-Jan-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatok (CNN)

Page 2: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

KonvolúcióJelfeldolgozásban:

Diszkrét jelek esetén diszkrét konvolúció:

Képfeldolgozásban 2D konvolúció (szűrők):

Page 3: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós réteg

Kép, pl.: 32*32*3 (sorok, oszlopok, csatornák (RGB))

Konvolúciós ablak (szűrő), pl.: 5*5*3

Konvolváljuk a képet a szűrővel: húzzuk végig a kép minden részén, és számoljuk ki az adott résszel a konvolúciót (skalárszorzatot).

A szűrő mindig a bemenet összes csatornájára értelmezett, azonos a “mélységük”

32

32

3

553

Page 4: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós réteg

32

32

3

5

5

3A konvolúció ererdménye egy skalár: a skaláris szorzata a kép adott részének, és a szűrőnek.

5*5*3-as szűrő, w

Page 5: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós réteg

32

32

3

5

5

3 Az összes lehetséges helyen kiszámolva

5*5*3-as szűrő, w

Eredmény: aktivációs térkép

28

28

1

Page 6: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós réteg

32

32

3

Legyen több 5*5*3-as szűrő is: w1, w2

28

28

2

aktivációs térképek

Page 7: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós réteg

32

32

3

Legyen több 5*5*3-as szűrő is: w1, w2

28

28

2

aktivációs térképek

Page 8: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós réteg

32

32

3

28

28

6

aktivációs térképekAz aktivációs térképeket egymásra rakjuk, mint az RGB csatornákat.

Pl. 32*32*3-as kép, 6 db 5x5-ös szűrőkimenete 28x28x6

A konvolúció egy lineáris művelet:az aktivációs térképre alkalmazunk valamilyen nemlinearitást is.

Page 9: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós neurális hálózatKonvolúciós rétegekből álló hálózat: előző kimeneti térfogat a következő bemenete

32

32

3

6 5x5x3 konvolúció,ReLU

10 3x3x6 konvolúció,ReLU

6

1028

28 26

26

K NxNx10 konvolúció,ReLU

...

Page 10: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

A szűrők, mint tulajdonság-érzékelők

Page 11: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

A konvolúció közelebbről

7x7-es kép3x3-as szűrő

Aktivációs térkép 5x5 lesz.

Page 12: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Lépésköz (stride)

7x7-es kép3x3-as szűrő

Ne egyesével, hanem pl.: kettesével léptessük a szűrőt!

Aktivációs térkép 3x3 lesz.

Kérdés: hármasával léptetve mekkora lesz az aktivációs térkép?

Page 13: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Lépésköz (stride)

Kérdés: hármasával léptetve mekkora lesz az aktivációs térkép?

Semekkora! Nem illenek össze!

Kimenet mérete:(N - F) / stride + 1?

N

N

F

F

Page 14: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

PaddingProbléma: a kimenetek térbeli mérete egyre csak csökken!Megoldás: párnázzuk ki 0-val a bemenetet.

0 0 0 0 0 0 0 0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0 0 0 0 0 0 0 0

7x7-es kép3x3-as szűrő1-es lépésköz1 padding

Aktivációs térkép 7x7 lesz.

Page 15: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós réteg összefoglalásBemenet: W1 * H1 * D1Szűrők száma: KSzűrők mérete: FLépésköz: SPadding: P

Kimenete W2 * H2 * D2, ahol:W2 = (W1 - F + 2P) / S + 1H2 = (H1 - F + 2P) / S + 1D2 = K

Szűrő paramétereinek száma: F*F*D1 +1 (bias)

A réteg összes paraméterének száma: K*F*F*D1 + K

Page 16: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Konvolúciós réteg összefoglalásBemenet: W1 * H1 * D1Szűrők száma: KSzűrők mérete: FLépésköz: SPadding: P

Kimenete W2 * H2 * D2, ahol:W2 = (W1 - F + 2P) / S + 1H2 = (H1 - F + 2P) / S + 1D2 = K

Szűrő paramétereinek száma: F*F*D1 +1 (bias)

A réteg összes paraméterének száma: K*F*F*D1 + K

Gyakran kettő hatvány (32,64, … 512, …)

Általában 3*3, néha 5*5, esetleg 1*1

Általában 1 vagy 2.

Általában szokott lenni, hogy ne változzon a kimenet méreteAttól függ, hogy az asszimetrikus

paddinget hogyan jelöljük (0.5)

Page 17: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Összevonó réteg (pooling layer)● Csökkenti a reprezentáció méretét, így kezelhetőbbé téve azt● Minden aktivációs térképen a többitől függetlenül működik● MAX pooling, average pooling

Page 18: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

MAX pooling, average pooling

1 2 2 4

6 3 0 2

1 4 5 4

2 1 2 3

6 4

4 5

2 * 2 max pooling, 2-es lépésközzel

3 2

2 3.5

2 * 2 average pooling, 2-es lépésközzel

Értelmezés: van -e valahol az ablakon belül az adott jellemző? Pontos helye nem számít.

Értelmezés: az ablakon belül mennyire van jelen átlagosan az adott jellemző?

Page 19: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Összevonó rétegBemenet: W1 * H1 * D1Mérete: FLépésköz: S

Kimenete W2 * H2 * D2, ahol:W2 = (W1 - F) / S + 1H2 = (H1 - F) / S + 1D2 = D1

Nem visz új paramétert a hálózatba, mert egy rögzített függvényt számol

Tipikusan 2 vagy 3

Gyakorlatilag mindig 2

Page 20: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Teljesen összekötött réteg (fully connected, FC)A bemeneti térfogat minden eleme össze van kötve a FC réteg minden neuronjával, mint egy klasszikus MLP-ben.

Tipikusan utolsó réteg(ek)ként szokás használni CNN-ben: a konvolúciós rétegek a jellemzők kiemelését végzik, a FC rétegek pedig pl. az osztályozást.

Page 21: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Upconvolution● Probléma: A konvolúciós réteg tipikusan változatlanul hagyja, vagy csökkenti

a reprezentáció térbeli méretét.● Bizonyos alkalmazásokban szükséges a reprezentáció térbeli növelése

(upsampling)● A módszer azonos azzal, ahogy a visszaterjesztés fázisban a gradienssel

számolunk● Elnevezése még nem egységes

○ convolution transpose○ backward strided convolution○ 1/2 strided convolution○ “deconvolution”

Page 22: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Upconvolution3 * 3 upconvolution, 2-es lépésköz,0.5 padding

Ahol átlapolódik, ott összeadjuk

Bemenet: 2 * 2

A bemenettel súlyozzuk a szűrőt

A paddingre eső részt eldobjuk

Kimenet: 4 * 4

Page 23: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Az előző óráról, emlékeztető - ILSVRC● 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton Imagenet

classification with deep convolutional neural networks○ Ez az első tisztán neurális hálózatos megoldás, ami az azévi legjobb eredményt éri el (addig

SVM)○ Innentől kezdve lesz mainstream a deep learning○ AlexNet: 8 réteg, 35k paraméter○ 15.4% top-5 hiba

● 2014 - Simonyan and Zisserman, VGGNet○ 19 réteg, 138M paraméter○ 7.3% top-5 hiba

● 2014 - Szegedy et al., GoogLeNet○ 6.9% top-5 hiba○ 22 réteg, 5M paraméter

● 2015 - He et al., ResNet○ 3.6% top-5 hiba○ 152 réteg

Page 24: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Néhány példaAlexNet[Krizhevsky et al. 2012]

[227x227x3] INPUT [55x55x96] CONV1: 96 11x11 filters at stride 4, pad 0 [27x27x96] MAX POOL1: 3x3 filters at stride 2 [27x27x96] NORM1: Normalization layer [27x27x256] CONV2: 256 5x5 filters at stride 1, pad 2 [13x13x256] MAX POOL2: 3x3 filters at stride 2 [13x13x256] NORM2: Normalization layer [13x13x384] CONV3: 384 3x3 filters at stride 1, pad 1 [13x13x384] CONV4: 384 3x3 filters at stride 1, pad 1 [13x13x256] CONV5: 256 3x3 filters at stride 1, pad 1 [6x6x256] MAX POOL3: 3x3 filters at stride 2 [4096] FC6: 4096 neurons [4096] FC7: 4096 neurons [1000] FC8: 1000 neurons (class scores)

- ReLU - Norm rétegek (már nem használják) - tanító adat kiegészítés - dropout 0.5 (csak FC-ben)- batch méret 128- SGD Momentum 0.9 - Learning rate 1e-2, kézzel tizedelve, amikor a validációs pontosság már nem csökken- L2 súlyfelejtés 5e-4 - 7 CNN együttes: 18.2% -> 15.4%

Page 25: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Néhány példa

GoogLeNet [Szegedy et al., 2014]- 6.7% top-5 hiba

Inception module- Kevesebb paraméter, ennek ellenére jobb

eredmények

Page 26: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Szűrő méret választási megfontolások- Kérdés: mekkora területet lát egy 3*3-as szűrő kimeneti neuronja?- Kérdés 2: mekkora területet lát két egymás utáni 3*3-as szűrő második

rétegében egy kimeneti neuron?- Kérdés 2: mekkora területet lát három egymás utáni 3*3-as szűrő harmadik

rétegében egy kimeneti neuron?

Page 27: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Szűrő méret választási megfontolások

x

x

x

- 3*3-as területet- 5*5-ös területet- 7*7-es területet

H*W*C bemeneti térfogat, (a számítás során a térfogat állandó marad végig)

- Hány paramétere és nemlinearitása van 3 db egymás utáni 3*3-as szűrőnek?

- Hány paramétere és nemlinearitása van egy ugyanekkora területet látó 7*7-es szűrőnek?

Page 28: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Szűrő méret választási megfontolások- 3 db 3*3:

- 3*C*(3*3*C) = 27C2 paraméter (biasokat nem számolva)- ReLU: H*W*C*3- Szorzás+összeadás művelet: 3*H*W*C*(3*3*C)=27*HWC2

- 1 db 7*7: - C*(7*7*C) = 49C2 paraméter (biast nem számolva)- ReLU: H*W*C*1- Szorzás+összeadás művelet: H*W*C*(7*7*C)=49*HWC2

3 db 3*3 szűrő esetén kevesebb paraméterünk van (gyorsabb konvergencia), kevesebbet kell számolni (gyorsabb működés), és több nemlinearitást használunk (vagyis bonyolultabb függvényt is képesek vagyunk reprezentálni)

Page 29: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Szűrő méret választási megfontolások- 1*1-es szűrő?

- Skalárszorzat egy pixel mentén a csatornákon a szűrővel- Csatornaszám-csökkentésre alkalmas

Bottleneck sandwitch

Page 30: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Szűrő méret választási megfontolások

Page 31: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Szűrő méret választási megfontolásokGoogLeNet legújabb verziójában már megjelennek ezek az ötletek

[Szegedy et al, “Rethinking the Inception Architecture for Computer Vision” 11 Dec 2015 ]

Page 32: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Transfer learning- Hogyan tanítsunk konvolúciós neurális hálókat?- Sok adat kell hozzá? - Nem, ha...- Sokáig kell futtatni a tanítást, nagy GPU-n? - Nem, ha...

- Használjunk egy már megtanított nagy hálót (pl.: ImageNet adatokon)- Az utolsó pár rétegét cseréljük le a saját rendszerünkre- Tanítsuk a saját adatainkkal az utolsó pár réteget.

- Finomíthatjuk a háló elejét is.

- Ez a tipikus tanítási forma, nem a kivétel!

Page 33: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Transfer learning1. Tanítsunk pl. az ImageNet adatkészleten

Rögzítsük a súlyokat

3. Közepes adatkészlet esetén finomhangoljuk

Itt tanítsunk

2. Kis adatkészlet esetén használjuk jellemzővektor kinyerésre

Rögzítsük a súlyokat

Itt tanítsunk

Page 34: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

Transfer learning- Kevés tanítóminta esetén (< 1M kép)

- Keressünk egy hasonló képeket tartalmazó, nagy mintaszámú tanítóhalmazt, tanítsuk meg vele a CNN-ünket

- Transfer learning az eredeti tanítóhalmazra

- Nincs lehetőségünk/erőforrásunk nagy adathalmazzal tanítani- Töltsünk le egy előre megtanított CNN-t

- Caffe ConvNet könyvtárban van egy ún. “Model Zoo”, amiben előre tanított modellek találhatóak

- https://github.com/BVLC/caffe/wiki/Model-Zoo

Page 35: Konvolúciós neurális hálózatok (CNN)home.mit.bme.hu/~engedy/NN/NN-CNN.pdfAz előző óráról, emlékeztető - ILSVRC 2012 - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton

HivatkozásokA prezentáció a következő helyekről vett tartalmakkal készült:

● CS231n: Convolutional Neural Networks for Visual Recognition, Stanford University

○ http://cs231n.stanford.edu/syllabus.html