[CV] ImageNet Classification with Deep Convolutional Neural Networks(CNN)
CNN์ด๋?
CNN์ด๋, Convolutional Neural Network์ ์ค๋ง๋ก ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ด๋ผ ๋ถ๋ฆฐ๋ค.
์
๋ ฅ ์ด๋ฏธ์ง๋ก๋ถํฐ ํน์ง์ ์ถ์ถํ์ฌ ์
๋ ฅ์ด๋ฏธ์ง๊ฐ ์ด๋ค ์ด๋ฏธ์ง์ธ์ง ํด๋์ค๋ฅผ ๋ถ๋ฅํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋๊ฒ ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ธ์, ์ถ์ฒ ์์คํ
, ์ด๋ฏธ์ง ๋ถ๋ฅ, ์๋ฃ ์ด๋ฏธ์ง ๋ถ์ ๋ฐ ์์ฐ์ด์ฒ๋ฆฌ์ ์ด์ฉ๋๋ค.
ANN๊ณผ CNN
ANN์ Artificial Neural Network์ ์ค๋ง๋ก ์ฌ๋์ ์ ๊ฒฝ๋ง ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฐฉํ์ฌ ๋ง๋ ๊ธฐ๊ณํ์ต ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด์ ๊ด๋ จํ ๋ด์ฉ์ [DL] ANN, DNN, CNN, RNN ๊ฐ๋ ๊ณผ ์ฐจ์ด ์ ๋ช ์ํด๋์๋ค.
๋ณธ๋ก ์ผ๋ก ๋์์ ANN๊ณผ ๋น๊ตํ์ฌ CNN์ ์์๋ณด์๋ฉด, ์ผ๋ฐ ์ ๊ฒฝ๋ง, ANN์ ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ํ๋์ ๋ฐ์ดํฐ๋ก ์
๋ ฅํ๊ธฐ ๋๋ฌธ์
์ด๋ฏธ์ง์ ํน์ฑ์ ์ฐพ์ง ๋ชปํ๊ณ ์ด๋ฏธ์ง์ ์์น๊ฐ ๋ณํ๋๊ฑฐ๋ ์๊ณก๋ ๊ฒฝ์ฐ์๋ ์ฌ๋ฐ๋ฅธ ์ฑ๋ฅ์ ๊ธฐ๋ํ ์ ์๊ฒ ๋๋ค. ์ฆ, ๋ฐ์ดํฐ์ ํ์์ด ๋ฌด์๋๋ ๊ฒ์ด๋ค.
์ด์ ๋ฐํด ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง, CNN์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ ๋ฐ์ดํฐ๊ฐ ์๋ ์ฌ๋ฌ๊ฐ๋ก ๋ถํ ํ์ฌ ์ฒ๋ฆฌํ๋ค. ์ด์ ๋ฐ๋ผ ์ด๋ฏธ์ง๊ฐ ์๊ณก๋๋๋ผ๋ ์ด๋ฏธ์ง์ ๋ถ๋ถ์ ํน์ฑ์ ์ถ์ถํ ์ ์์ด ์ฌ๋ฐ๋ฅธ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
๊ทธ๋ฆผ 1. ANN๊ณผ CNN

์ด์ ๊ด๋ จํ ๋ด์ฉ์ ์์ ๊ทธ๋ฆผ์ ํตํด์ ์ฝ๊ฒ ํ์ธ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆผ 2. CNN์ ์งํ์์

์์ ๊ทธ๋ฆผ์ CNN์ ์งํ์์๋ฅผ ๊ฐ๋ตํ๊ฒ ๋์ํํ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋๋ฉด Convolution, ReLu function, Pooling๊ณผ์ ์ ๊ฑฐ์ณ ํน์ง์ ๋ถ์ํ๊ฒ ๋๋ค.
์ดํ flatten, fully connected, Softmax function์ ํตํด classification์ ์งํํ๊ฒ ๋๋ค.
CNN์ ๊ตฌ์กฐ
๊ธฐ์กด ์ ๊ฒฝ๋ง์ ๊ตฌ์กฐ๋ ์ธ์ ํ๋ ๊ณ์ธต์ ๋ชจ๋ ๋ด๋ฐ์ด ๊ฒฐํฉ๋ ์์ ์ฐ๊ฒฐ๋ก affine ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๊ทธ๋ฌ๋ CNN์ ๊ฒฝ์ฐ, ์ ๊ฒฝ๋ง ๊ตฌ์กฐ์์ ํฉ์ฑ๊ณฑ ๊ณ์ธต๊ณผ ํ๋ง์ธต์ด ์ถ๊ฐ๋์๋ค. ๋ํ ํ๋ง์ธต์ ๋์ ๋ฐ๋ผ ์๋ต์ด ๊ฐ๋ฅํ๋ค.
CNN์ ๊ตฌ์กฐ
๊ทธ๋ฆผ 3. CNN์ ๊ตฌ์กฐ 1

๊ทธ๋ฆผ 4. CNN์ ๊ตฌ์กฐ 2

์์ <๊ทธ๋ฆผ 3>๊ณผ <๊ทธ๋ฆผ 4>๋ฅผ ํตํด CNN์ ๊ตฌ์กฐ๋ฅผ ํ์ธํ ์ ์๋ค.
Convolution
๋ณธ ๋ด์ฉ์ ์ค๋ช
ํ๊ธฐ์ ์์ bias๋ ํธํฅ์ ์๋ฏธํ๋ค. ํฉ์ฑ๊ณฑ ์ฐ์ฐ, Convolution์ bias๋ ๋ฐ์ดํฐ์ bias๊ฐ ๋ํด์ง๋ ๊ณผ์ ์ด๋ค.
๋ง์
์ฐ์ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค. ์์ ์ฐ๊ฒฐ ์ ๊ฒฝ๋ง์๋ ๊ฐ์ค์น(Weight) ๋งค๊ฐ๋ณ์์ bias๊ฐ ์กด์ฌํ๊ฒ ๋๋ค.
CNN์์๋ ์ด์ ์ ์ฌํ๊ฒ ํํฐ์ bias๊ฐ ํ์ต์ ์ํฌ ๋งค๊ฐ๋ณ์์ด๋ค.
๋ค์ ๋งํด, ์ด๋ฏธ์ง ์ฒ๋ฆฌ์์ ๋งํ๋ ํํฐ ์ฐ์ฐ์ ํด๋นํ๋ ๊ฒ์ด๋ค.
stride
stride๋ ์ง์ ๋ ๊ฐ๊ฒฉ์ผ๋ก ํํฐ๋ฅผ ์ํํ๋ ๊ฐ๊ฒฉ์ ์๋ฏธํ๋ค. ์๋์ <๊ทธ๋ฆผ 6>์์๋ stride๊ฐ 1๋ก ์ค์ ๋ ๊ฒ์ด๋ฉฐ,
stride๊ฐ 2๋ก ์ค์ ๋๋ฉด ํํฐ๋ 2์นธ์ฉ ์ด๋ํ๋ฉด์ ํฉ์ฑ๊ณฑ์ ๊ณ์ฐํ๋ค.
๊ทธ๋ฆผ 5. ํฉ์ฑ๊ณฑ ์ฐ์ฐ ๊ณผ์ 1

์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด bias๋ ํญ์ ํ๋์ ๊ฐ()์ผ๋ก ์กด์ฌํ๋ฉฐ ํํฐ๋ฅผ ์ ์ฉํ ํ ๋ชจ๋ ์์์ ๋ํด์ง๊ฒ ๋๋ค.
์ฆ CNN์ ํตํด ํ์ต์ด ๊ฑฐ๋ญ๋๋ฉฐ ํํฐ์ ์์๊ฐ๊ณผ bias๊ฐ ๋งค๋ฒ ๊ฐฑ์ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆผ 6. ํฉ์ฑ๊ณฑ ์ฐ์ฐ ๊ณผ์ 2

2์ฐจ์์ ์
๋ ฅ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด, ํํฐ์ ์๋์ฐ๊ฐ ์ผ์ ๊ฐ๊ฒฉ์ผ๋ก ์ด๋ํด๊ฐ๋ฉฐ ์ฐ์ฐ์ด ์ ์ฉ๋๋ค.
์ด๋ ์ด ์ด๋๊ณผ์ ์ Stride๋ผ๊ณ ํ๋ค.
์ด ๊ณผ์ ์ ๋ชจ๋ ์ฅ์์์ ์งํํ๊ณ , ์์ ์ฌ์ง ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ ํฉ์ฑ๊ณฑ ์ฐ์ฐ์ ์ถ๋ ฅ์ด ์์ฑ๋๋ค.
Padding
Padding์ ๊ธฐ์กด ๋ฐ์ดํฐ ์ฃผ๋ณ์ ๊ฐ๋ค์ ์ฑ์๋ฃ์ด ํฌ๊ธฐ๋ฅผ ํค์ฐ๋ ๊ฒ์ด๋ค.
Convolution ๊ณผ์ ์ ํน์ง์ ์ถ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
๊ทธ๋ฌ๋, Padding์ด ์์ด ์งํ๋๋ฉด Convolution ์ฐ์ฐ ํ์๋ '์๋์น ์๊ฒ' ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ์์์ง๊ฒ ๋๋ค.
์ด๋ Edge ์ฑ๋ถ์ด ์ ์ฐจ ์ฌ๋ผ์ง๊ฒ ๋๊ณ , ์ด์ ๋ฐ๋ผ Edge ๊ทผ์ฒ์ ํน์ง์ ๋๋ฝํ ์ ์๋ค.
๋ฐ๋ผ์ Padding์ ํตํด Convolution ์ฐ์ฐ์ ํ๊ฒ ๋๋๋ผ๋, ๊ทธ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๊ฐ ์
๋ ฅ ์ด๋ฏธ์ง์ ๊ทธ ํฌ๊ธฐ๋ฅผ ๋์ผํ๊ฒ ์ ์งํ๋ฉด์ ํน์ง์ ์ถ์ถํ ์ ์๋ค.
Padding์ ์ข ๋ฅ
๋ฐ์ดํฐ ์ฃผ๋ณ์ ์ด๋ ํ ๊ฐ์ ์ฑ์ฐ๋๋์ ๋ฐ๋ผ padding์ ์ข ๋ฅ๊ฐ ๋๋๋ค.
- Zero Padding : ์ต์ธ๊ฐ์ ๋ชจ๋ pixel 0์ผ๋ก ์ค์
- Same Padding : ์ต์ธ๊ฐ์ ๋ชจ๋ ์ด๋ฏธ์ง ์ธ๊ณฝ์ pixel ๊ฐ์ผ๋ก ์ฌ์ฉ
๊ทธ๋ฆผ 7. Zero Padding ์๋ฆฌ

<๊ทธ๋ฆผ 7>์ zero padding์ ์๋ฆฌ๋ฅผ ์ค๋ช ํ ๊ทธ๋ฆผ์ด๋ค.
Pooling
CNN์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๋ฉด Conv โ Pooling โ Conv โ Pooling~~์ ์์๋ก ์งํ๋๋ค.
Convolution ์ฐ์ฐ ํ, FC Layer(Fully-Connected Layer)๋ก ๋ฐ๋ก ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ, ์
๋ ฅ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์ ์ฐ์ฐ์ ์งํํ๊ฒ ๋๋ค.
์ด ๋๋ฌธ์ FC Layer์์์ ์ฐ์ฐ๋์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋๋ค. ์ด๋ฌํ ์ฐ์ฐ๋์ ์ค์ด๊ธฐ ์ํด Pooling์ด๋ผ๋ ๊ณผ์ ์ ์ถ๊ฐํ์ฌ, ์ฐ์ฐ ํ ํฌ๊ธฐ๋ฅผ '์ ๋นํ' ์ค์ด๊ณ ํน์ feature๋ฅผ ๊ฐ์กฐํ๋ค.
๊ทธ๋ ๋ค๋ฉด ํน์ feature๋ฅผ ๊ฐ์กฐํ๋ค๋ ๊ฒ์ ๋ฌด์จ ์๋ฏธ์ผ๊น?
ํน์ feature๋ฅผ ๊ฐ์กฐํ๋ค๋ ๊ฒ์ Convolution ์ด๋ฏธ์ง์ ํน์ง์ ์ถ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์์์ ํน์ ํน์ง์ ๊ฐ์กฐํ๋ค๋ ์๋ฏธ์ด๋ค.
Convolution์ด ํ๋ ฌ(matrix)์ ์ฐ์ฐ์ด๋ผ๋ฉด, Pooling์ ๊ฐ Pixel์์ ํ๋์ ๊ฐ์ ๋ฝ์๋ด๋ ๊ฒ์ด๋ค.
Pooling์ ์ข ๋ฅ
pooling์ ๋ ๊ฐ์ง ์ข ๋ฅ๋ก ๊ตฌ์ฑ๋๋ค.
- Max Pooling : ์๋์ฐ ์ฐฝ ๋ด์์ ๊ฐ ์์๋ค ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ์ถ
- Average Pooling : ์๋์ฐ ์ฐฝ ๋ด์์ ๊ฐ ์์๋ค์ ํ๊ท ๊ฐ์ ์ถ์ถ
๊ทธ๋ฆผ 8. Pooling์ ์๋ฆฌ

<๊ทธ๋ฆผ 8>์ ํตํด Pooling์ ์๋ฆฌ๋ฅผ ์ดํด๋ณผ ์ ์๋ค.
์์ฝํ์๋ฉด...
CNN(Convolution Neural Network)์ ์ด๋ฏธ์ง์ ๊ณต๊ฐ์ ๋ณด๋ฅผ ์ ์งํ๋ฉด์ ์ธ์ ์ด๋ฏธ์ง์์ ํน์ง์ ํจ๊ณผ์ ์ผ๋ก ์ธ์ํ๊ณ ๊ฐ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฏธ์ง์ ํน์ง์ ์ถ์ถํ๋ ๋ถ๋ถ๊ณผ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฅํ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
ํน์ง ์ถ์ถ ์์ญ์ ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ ํ๋ผ๋ฏธํฐ ์๋ฅผ ์ต์ํํ๋ฉด์ ์ด๋ฏธ์ง์ ํน์ง์ ์ฐพ๋ Convolution Layer์ ํน์ง์ ๊ฐํํ๊ณ ๋ชจ์ผ๋ Pooling Layer๋ก ๊ตฌ์ฑ๋๋ค.
CNN์ ํํฐ์ ํฌ๊ธฐ๋ฅผ ๋น๋กฏํ์ฌ Stride, Padding๊ณผ Pooling์ ํฌ๊ธฐ๋ก ์ถ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ , ํํฐ์ ๊ฐ์๋ก ์ถ๋ ฅ ๋ฐ์ดํฐ์ ์ฑ๋์ ๊ฒฐ์ ํ๋ค.
CNN์ ๊ฐ์ ๋ ์ด์ด ํฌ๊ธฐ์ FCNN๊ณผ ๋น๊ตํด ๋ณผ ๋ ํ์ต ํ๋ผ๋ฏธํฐ์ ์์ด ํ์ ํ ์ ๋ค. ์๋์ธต์ด ๊น์ด์ง ์๋ก ๊ทธ ์ฐจ์ด๋ ๋ ์ปค์ง๊ฒ ๋๋ค.
์ฆ, CNN์ ๋ ์์ ํ์ต ํ๋ผ๋ฏธํฐ๋ก ๋ ๋์ ์ธ์๋ฅ ์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
๋ณธ ๋ ผ๋ฌธ์๋ ํน์ง ์ถ์ถ๊ณผ ๋ถ๋ฅ๋ก ๊ตฌ์ฑ์ด ๋์ด์์ผ๋, ์ด๋ฒ ํฌ์คํ ์์๋ ํน์ง ์ถ์ถ ๋ถ๋ถ์ ํฌ์ปค์ค๋ฅผ ๋ง์ถ์ด ์งํํ์๋ค.
PS. ์ถ๊ฐ ๋ฌธ์์ฌํญ ๋ฐ ์ง๋ฌธ์ ํ์ํฉ๋๋ค. ๊ทธ๋ฅผ ํตํด ์ ๋ ๋ ์ฑ์ฅํ ์ ์์ํ ๋๊น์. ๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
Reference
- ๋ ผ๋ฌธ: ImageNet Classification with Deep Convolutional Neural Networks
- '๊ธฐ๊ณํ์ต(Machine Learning)/์ค์ผ์ ์ ์' ๊ฐ์ ์๋ฃ
