๊ฐ์ค์น์ ์งํฉ, ํน์ง์ ์ก์๋ด๋ ๊ฐ์ฅ ์์ ์ฐฝ(๋
ธ๋ ๋ค๋ชจ)
=kenel
Q. filter์ ํฌ๊ธฐ๊ฐ ํด์๋ก output์ ํฌ๊ธฐ๋?(ํจ๋ฉx)
A. ์ด๋ํ ์ ์๋ ๊ฑฐ๋ฆฌ๊ฐ ์ค์ด๋ค์ด ๊ณ์ฐ ํ์๊ฐ ์ ์ด์ง๋๊น ์ฌ์ง๋ ์์์ง
stride=1
stride=2
a. ํํฐ๋ฅผ ๋ช ์นธ ์ด๋ํ ์ง.
Q. stride์ ํฌ๊ธฐ๊ฐ ํด ์๋ก output ์์์ง๋ค.
ํ๋ ฌ ์ธ๊ณฝ์ ์ซ์๋ฅผ ๋๋ฌ์ค
convolution ํ ์ฌ์ด์ฆ๊ฐ ์ค์ด๋ค์ง ์๊ฒ ํจ
๊ฐ์ฅ์๋ฆฌ์ ์ซ์๋ค์ padding์ ํด์ฃผ์ง ์์ผ๋ฉด ํ ๋ฒ๋ง ๊ณ์ฐ ๋๊ธฐ ๋๋ฌธ์ ๋์น๊ณ ์ถ์ง์๋ค๋ฉด ํด์ค
0, ๊ฐ์ฅ์๋ฆฌ์ ๊ฐ์ ์ซ์ ๋ฑ๋ฑ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง.
keras.layers.Conv2D(10, kernel_size=(3,3), activation='relu',
padding='same', strides=1)
convolution ํด์ ๊ฐ์ค์น๋ฅผ ๊ณฑํ ๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ๋ง ๋จ๊ธฐ๋ ๊ฒ
๊ฒฝ๊ณ๊ฐ ํ์คํ ์ด๋ฏธ์ง๋ฅผ ์ธ ๋ ์ถ์ถ์ด ์ ๋๋ค.
๋ฒ์ ๋ด ํ๊ท ์ ์ฌ์ฉํฉ๋๋ค. ์ปค๋ ์ฌ์ด์ฆ ๋ด์ ๊ฐ์ ํ๊ท ํ์ฌ ํต๊ณผ
-> ์ด๋ฏธ์ง๊ฐ ๋ถ๋๋ฌ์ ์ง๊ณ , ์๊ฐ์ด ํฌ๋ฏธํด์ง
= ์ ๋ช
ํ ํน์ง ์ถ์ถ ๋ถ๊ฐ, ํน์ฑ ๋งต์ ์๋ ์ค์ํ ์ ๋ณด๋ฅผ ํ๊ท ํ์ฌ ํฌ์์ํฌ ์ ์์
ํ๋งํ ๋๋ ํ๋ ฌ ํฌ๊ธฐ๋งํผ stride์ก์ ์ค
2x2 ํ๋ง ์ปค๋์ ํด์ฃผ๋ฉด ์คํธ๋ผ์ด๋๋ 2๋ก ์ก์์ฃผ๋๊ฒ ๋ณดํต
๊ทธ๋ผ ๋ฑ ๋ฐ์ผ๋ก ์ค์ด๋ค์
3x3์ ์คํธ๋ผ์ด๋๋ฅผ 3์ผ๋ก ์ก์์ฃผ๋ฉด ๋จ(๊ฒน์น์ง ์๊ฒ ํน์ง ์ถ์ถ)
์ฅ์ (conv ํ ๋ ๋นํด)
i. ํ์ตํ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ค. (์๋๊ฐ ๋น ๋ฅผ ์๋ ์๋ค)
ii. ์ฑ๋ ์๊ฐ ๋ณํ์ง ์๋๋ค.
keras.layers.MaxPooling2D(2, stides=2, padding='valid')
keras.layers.AveragePooling2D(2, stides=2, padding='valid')
์ด๋ฏธ์ง ์ฒ๋ฆฌ์ ํ์ํ ์ฑ๋ฅ์ ๋ณด์ด๋ ์ ๊ฒฝ๋ง
CNN์ ํต์ฌ ๋ชจ๋ : ํฉ์ฑ๊ณฑ(Convolution)์ธต, ํ๋ง(Pooling)์ธต
Fully Connected Layer์์ ์ ์ฉํ์ง ์์๋ ๋ฐฉ์์ด ์๋กญ๊ฒ ๋์
Weight Sharing ์ ์ฉ
์ฑ๋์ ์ฌ๋ฌ ๊ฐ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ -> RGB ์ ๋ณด๊ฐ ๊ฒฐํฉ๋ ์ด๋ฏธ์ง์์๋ 3๊ฐ ์ฑ๋์ ๊ตฌ์ฑํ์ฌ ๊ฐ๊ฐ์ ํน์ง์ ์ถ์ถํ ์ ์๋ค.
a. ์ฅ์
i. ์ ์ฒ๋ฆฌ ๋
ธ๋ ฅ ๊ฐ์
ii. ๊ฐ์ค์น ๊ฐ์ => ๊ฐ์ค์น ๊ณต์ (์ด๋ฏธ์ง์ ์์น๊ฐ ๋ฌ๋ผ์ ธ๋ ์ธ์ํจ)
ex)
(32, 32, 3) => ํํฐ (3, 3) => (30, 30, 32)
ํํฐ ํ ์ฅ 3x3
์ด ํํฐ์ ๊ฐ์ 3x32๊ฐ
์ ์ฒด ๊ฐ์ค์น : (3x3)x3x32
4x4๋ฅผ 32๊ฐ ๋ง๋ค๋ ค๋ฉด 3๊ฐ ์ฑ๋์ ํํฐ๋ฅผ 32๊ฐ ๊ณฑํด์ค์ผ ๋จ
layer.trainable = True
- True ์ธ ๊ฒฝ์ฐ ๋คํธ์ํฌ์ ์๋ ๋ชจ๋ ํ๋ผ๋ฏธํฐ๊ฐ ํ์ต ๋์์ด ๋จ -> ๋๋ ค์ง
- False ์ธ ๊ฒฝ์ฐ๊ฐ True ์ธ ๊ฒฝ์ฐ๋ณด๋ค ํ์ตํ ํ๋ผ๋ฏธํฐ์ ๊ฐ์๊ฐ ์ ์
- False ์ธ ๊ฒฝ์ฐ์ True ์ธ ๊ฒฝ์ฐ ๋ชจ๋ธ์ ๋ด ์ด ๊ฐ์ค์น ํ๋ผ๋ฏธํฐ์ ๊ฐ์๋ ๋์ผ
Residual(skiped) Connection
๊ธฐ์กด CNN์ ์ ์ฉํ์ฌ ์ธต์ ๊น๊ฒ ์๋๋ผ๋ ์ญ์ ํ ์ ์ ๋ณด๊ฐ ์์ค๋์ง ์์
ํผ์ ํธ๋ก : ์ค์ฑ ๋ค์ ์ฐ๊ธฐ
filter : ๊ฐ์ค์น์ ์งํฉ, ๊ฐ์ฅ ์์ ํน์ง์ ์ก์๋ด๋ ์ฐฝ
stride: ํํฐ๋ฅผ ๋ช ์นธ ์์ง์ผ๊ฑด์ง
padding : ๊ฒ์ ๋๋ฌ์ฃผ๋ ๊ฒ
ํํฐ : ์ด๋ค ํน์ง์ ์ถ์ถํด์ ๊ฒฐ๊ณผ๊ฐ์ด ์ฐจ์ด๊ฐ ์๊ธฐ๋ ๊ฒ
kenel์ด ํํฐ์ธ๊ฐ์?
๊ฐ๋กํน์ง์ ์ถ์ถํ๊ธฐ ์ํ ํํฐ
filter : ๊ฐ์ค์น์ ์งํฉ > ๋ชจ๋ธํ์ตํ ๋ ๊ฐ์ค์น๊ฐ ํ์ต๋จ
์ด๋ฏธ์ง๊ฐ ํ์ต๋๋ฉด์ ์ด๋ค ํน์ง์ ์ถ์ถํด์ผ ์ ๋ถ๋ฅํ๊ฒ ๊ตฌ๋ ํ๋ฉด์ ๊ฐ์ค์น๋ฅผ ํ์ตํจ
ํํฐ๊ฐ ์ฃ์ง๋ฅผ ์ฐพ๋๋ค๋๋ฐ ์ฃ์ง๊ฐ ์ด๋ฏธ์ง์ ํน์ง์ ์๋ฏธํ๋์?
a. ๋ค
ํํฐ์ ํ๋ ฌ์ ๊ฐ ๊ฐ๋ค์ ์๋ ์ ํํ ๋์ด์๋๊ฑด๊ฐ์?
a. ๊ฐ์ค์น์. ๊ฐ์ค์น๋ ์ด๊ธฐํํด์ ๋๋ค ๋ถ์ฌํจ ํ์ตํ๊ณ ์ญ์ ํํ๋ฉด์ ์
๋ฐ์ดํธ๋จ
์ฐ๋ฆฌ๊ฐ ์ ์ดํ์ตํ๋ ๋ถ๋ถ์ ์ ํํฐ์ ํ๋ง๋ ๋ถ๋ถ์ ๊ฐ์ ธ๋ค๊ฐ ์ฐ๋ ๊ฒ์ธ๊ฐ์?
a.
ํ๋ง์ ์ฌ์ฉํ๋ฉด ํผ์ฒ๋งต์ ์ฐจ์์ ์ค์ฌ์ ํผ์ฒ ์ ๋ ใฑ์ ๊ฐ์ ์ญํ ํจ > ๊ณผ์ ํฉ ์ค์ผ ์ ์์
ํจ๋ฉํ๋ ์ด์ : output์ ํฌ๊ธฐ๋ฅผ ๋ง์ถฐ์ฃผ๋ ค๊ณ
๋์ ์๋ ์ ๋ ํ ๋ฒ๋ง ์ฐ์ฐ์ ์ฐธ์ฌํจ. ๋์ ์๋ ๊ฐ๋ ์ ์ฐ๋ ค๊ณ ํจ๋ฉ์ ํ๊ธฐ๋ ํจ. > ๋ฐ์ดํฐ๋ฅผ ๋ค ํ์ฉ์ ํ๋ ค๊ณ
ํํฐ์ ํจ๋ฉ์ ํ๋๊ฒ ์๋๋ผ ์ธํ๊ฐ์ ๋๋ฌ์ค
์คํธ๋ผ์ด๋๋ฅผ 2๋ก ํ๊ฒ ๋๋ฉด ํจ๋ฉ์ ๋ชปํ๋ค๊ณ ํ๋๋ฐ, ์คํธ๋ผ์ด๋๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์์์ง๋ ๊ฒ์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์๋์?
์ฌ์ง ํฌ๊ธฐ๋ฅผ ๋ง์ถ ๋, ํจ๋ฉ์ 1๊ฐ ๋๋ฌ๋๊ณ ์คํธ๋ผ์ด๋๋ฅผ 2๋ก ์ก์ผ๋ฉด ์ฌ์ง ํฌ๊ธฐ๋ฅผ ๋ง์ถ ์๊ฐ ์์ด์ง. ๊ทธ๋์ ์คํธ๋ผ์ด๋๋ฅผ 2๊ฐ๋ฅผ ์ก์ผ๋ฉด ํจ๋ฉ๋ ๋ ํฌ๊ฒ ๋๋ฌ์ค. ๋ณธ๋์ ๋ชฉ์ ์ ๋ง์ง ์์์ ๊ทธ๋ผ.
ํ๋ ฌ์ ํฝ์ ์ด ๊ธฐ์ค์
cnn์ ์ฐ๊ฒ ๋๋ฉด ์ฅ์ ์ด ์์. fully connected layer๋ฅผ ์ฐ๋ ๊ฒ ๋ณด๋ค ์ฅ์ ์ด ์์
:์ด๋ฏธ์ง ์ ์ฒ๋ฆฌ๋ฅผ ๋ ํ๊ฒ ๋๊ณ , ์ด๋ฏธ์ง ์ ๋ณด ์์ค์ด ์๊ณ , ํ๋ผ๋ฏธํฐ๊ฐ ์ค์ด๋ ๋ค.
์ ํ๋ผ๋ฏธํฐ๊ฐ ์ค์ด๋ค๊น? ๊ฐ์ค์น ๊ณต์ ๋๋ฌธ์
๊ฐ์ค์น๋ฅผ
๋ก์คํ์ ๋ง์ถฐ์ผํจ!
๊ณผ์ ์ค๋ช