Professional Documents
Culture Documents
NN CNN
NN CNN
hálózatok (CNN)
Konvolúció
Jelfeldolgozásban:
5
3 5 Konvolváljuk a képet a szűrővel: húzzuk
32 végig a kép minden részén, és számoljuk ki
az adott résszel a konvolúciót
(skalárszorzatot).
32
5*5*3-as szűrő, w
5
5
A konvolúció ererdménye egy skalár:
3 a skaláris szorzata a kép adott
32 részének, és a szűrőnek.
32
3
Konvolúciós neurális hálózat
Konvolúciós réteg
Eredmény: aktivációs térkép
5*5*3-as szűrő, w
5
3 Az összes lehetséges 28
32
helyen kiszámolva
28
32
1
3
Konvolúciós neurális hálózat
Konvolúciós réteg
aktivációs térképek
Legyen több 5*5*3-as
szűrő is: w1, w2
28
32
28
32
2
3
Konvolúciós neurális hálózat
Konvolúciós réteg
aktivációs térképek
Legyen több 5*5*3-as
szűrő is: w1, w2
28
32
28
32
2
3
Konvolúciós neurális hálózat
Konvolúciós réteg
aktivációs térképek
Az aktivációs térképeket egymásra
rakjuk, mint az RGB csatornákat.
28
32
28
32
6
3 A konvolúció egy lineáris művelet:
az aktivációs térképre alkalmazunk
valamilyen nemlinearitást is.
Konvolúciós neurális hálózat
Konvolúciós rétegekből álló hálózat: előző kimeneti térfogat a következő
bemenete
28
26
...
6 5x5x3 10 3x3x6 K NxNx10
32
konvolúció, konvolúció, konvolúció,
ReLU ReLU 26 ReLU
32 28 10
3 6
A szűrők, mint tulajdonság-érzékelők
A konvolúció közelebbről
7x7-es kép
3x3-as szűrő
7x7-es kép
3x3-as szűrő
Kimenet mérete:
F
? (N - F) / stride + 1
N
Padding
Problé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 7x7-es kép
3x3-as szűrő
0 0 1-es lépésköz
1 padding
0 0
0 0
0 0
0 0 0 0 0 0 0 0 0
Konvolúciós réteg összefoglalás
Bemenet: W1 * H1 * D1 Szűrő paramétereinek száma:
Szűrők száma: K F*F*D1 +1 (bias)
Szűrők mérete: F
Lépésköz: S A réteg összes paraméterének
Padding: P száma: K*F*F*D1 + K
2 * 2 max pooling,
2-es lépésközzel Értelmezés: van -e valahol
1 2 2 4 6 4 az ablakon belül az adott
jellemző? Pontos helye nem
6 3 0 2 4 5 számít.
1 4 5 4 2 * 2 average pooling,
2-es lépésközzel
3 2 Értelmezés: az ablakon
2 1 2 3 belül mennyire van jelen
2 3.5 átlagosan az adott jellemző?
Összevonó réteg
Bemenet: W1 * H1 * D1 Nem visz új paramétert a hálózatba,
Mérete: F mert egy rögzített függvényt számol
Lépésköz: S
3 * 3 upconvolution,
2-es lépésköz,
0.5 padding
A bemenettel
súlyozzuk a szűrőt
Bemenet: 2 * 2
Kimenet: 4 * 4
[227x227x3] INPUT
[55x55x96] CONV1: 96 11x11 filters at stride 4, pad 0
[27x27x96] MAX POOL1: 3x3 filters at stride 2
- ReLU
[27x27x96] NORM1: Normalization layer - Norm rétegek (már nem használják)
[27x27x256] CONV2: 256 5x5 filters at stride 1, pad 2 - tanító adat kiegészítés
[13x13x256] MAX POOL2: 3x3 filters at stride 2 - dropout 0.5 (csak FC-ben)
[13x13x256] NORM2: Normalization layer
- batch méret 128
[13x13x384] CONV3: 384 3x3 filters at stride 1, pad 1
[13x13x384] CONV4: 384 3x3 filters at stride 1, pad 1 - SGD Momentum 0.9
[13x13x256] CONV5: 256 3x3 filters at stride 1, pad 1 - Learning rate 1e-2, kézzel tizedelve,
[6x6x256] MAX POOL3: 3x3 filters at stride 2 amikor a validációs pontosság már
[4096] FC6: 4096 neurons nem csökken
[4096] FC7: 4096 neurons
[1000] FC8: 1000 neurons (class scores)
- L2 súlyfelejtés 5e-4
- 7 CNN együttes: 18.2% -> 15.4%
Néhány példa
Inception module
- Kevesebb paraméter, ennek ellenére jobb
eredmények
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?
Szűrő méret választási megfontolások
- 3*3-as területet
- 5*5-ös területet
x - 7*7-es területet
x
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?
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
Bottleneck
sandwitch
Szűrő méret választási megfontolások
Szűrő méret választási megfontolások
GoogLeNet legújabb verziójában már megjelennek ezek az ötletek
[Szegedy et al, “Rethinking the Inception Architecture for Computer Vision” 11 Dec 2015 ]
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...
Rögzítsük a
súlyokat
Rögzítsük a
súlyokat
Itt tanítsunk
Itt tanítsunk
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
Hivatkozások
A prezentáció a következő helyekről vett tartalmakkal készült: