๋ฅ๋ฌ๋ ๋ชจ๋ธ ์ค ํ๋์ธ CNN(Convolutional Neural Network)์ ๋ํด ์์๋ณด์.
CNN์ computer vision problem์์ ๋ง์ด ์ฐ์ธ๋ค. ํนํ ๊ทธ ์ค ๋ง์ด ํ์ฉ๋๋ ๊ฒ์ object detection์ด๋ค.
Object Detection์ด๋?
- Feature extraction(ํน์ง ์ถ์ถ)
- ์ด๋ฏธ์ง์์ ๋์ด๋ผ ์ ์๋ ์ ์ฉํ feature ์ถ์ถ
- Bounding Box ์์ฑ
- object๋ฅผ ๊ฐ์ธ๋ bounding box ์์ฑ
- Class classification
- bounding box ์์ object๊ฐ ์ด๋ค class์ธ์ง ๋ถ๋ฅํ๋ ๊ณผ์
CNN(Convolutional Neural Network)
- image์ ํํ๋ฅผ ๋ณด์กดํ๋๋ก ํ๋ ฌ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๋ณด ์์ค์ ๋ฐฉ์งํ๊ณ , ํ๋ ฌ๋ก ํํ๋ ํํฐ์ ๊ฐ ์์(weight, ํ์ต์์ ๊ฐ์ค์น)๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ํฉํ๋๋ก ์๋์ผ๋ก ํ์ต์ํจ๋ค.
- image์ ํน์ ํ filter(=kernel)์ ์ ์ฉํด image์ feature์ ์ถ์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ค. → Feature extraction
- Convolution Operation
- element wise matrix multiplication + sum์ผ๋ก, element wise ํ๋ ฌ์์ ๊ฐ์ ์์น์ ์๋ ์์๋ผ๋ฆฌ ๊ณฑํด์ฃผ๊ณ ๋ํด์ฃผ๋ ๊ฒ
- CNN์ ํน์ ๋ฐฉํฅ์ edge๋ฅผ ๊ฐ์กฐํ๋ edge detection์ด๋ผ๋์ง fine detail์ ๊ฐ์กฐํด blurring์ ์ ๊ฑฐํด์ฃผ๋ sharpness filter ๋ฑ์ ๋ค์ํ ํํฐ๋ฅผ ์ฌ์ฉํด ํน์ง์ ์ถ์ถํ๋ค.
- Padding
- ์ปจ๋ณผ๋ฃจ์ ํํฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ถ๋ ฅ ํฌ๊ธฐ๊ฐ ์ค์ด๋๋๋ฐ, ์ด ๊ณต๊ฐ์ ์ธ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ ์ฑ๋ก ๋ค์ ๊ณ์ธต์ ์ ๋ฌํ๊ธฐ ์ํด padding์ ์ฌ์ฉํ๋ค.
- ์ฃผ๋ณ ํฝ์ ์ 0์ผ๋ก ์ฑ์์ฃผ๋ ์ ๋ก ํจ๋ฉ์ด ๋ง์ด ์ฐ์ด๊ณ , 6x6 image์ padding=1, ํํฐ ํฌ๊ธฐ 3x3์ ์ ์ฉํ๋ฉด ์๋ ๊ทธ๋ฆผ์ ํ๋์ ์ ์ฌ๊ฐํ ๋ชจ์์ผ๋ก padding์ด ์งํ๋๋ค.
- Stride
- ์ปจ๋ณผ๋ฃจ์ ํํฐ๋ฅผ ์ ์ฉํ๋ ์์น์ ๊ฐ๊ฒฉ
- ์ถ๋ ฅ ํฌ๊ธฐ๋ ์ปจ๋ณผ๋ฃจ์ ํํฐ๋ฅผ ์ ์ฉํ๋ ์์น์ ๊ฐ๊ฒฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๋ฐ ์ด ๊ฐ๊ฒฉ์ stride๋ผ๊ณ ํ๋ค.
- ๋ง์ฝ 7x7 ์ด๋ฏธ์ง์ผ ๋ stride๊ฐ 1์ด๋ฉด ์ถ๋ ฅํฌ๊ธฐ๋ 5x5์ด๊ณ stride๊ฐ 2์ด๋ฉด ์ถ๋ ฅํฌ๊ธฐ๊ฐ 3x3์ด๋ค.
- CNN์์ n x n ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅํ๊ณ , f x f ํํฐ ์ฌ์ฉ, p๋งํผ padding์ ์ฉ, s๋งํผ stride ์ ์ฉํด์ ์ถ๋ ฅ๋๋ ์ด๋ฏธ์ง์ ๊ฒฐ๊ณผ๋ ์๋ ์์๊ณผ ๊ฐ๋ค.
One-layer of a CNN
์ด์ Image์ feature๋ฅผ ์ถ์ถํ๋ CNN์ ํ ์ธต์ ๊ตฌ์ฑ์ ์์๋ณผ ๊ฒ์ด๋ค.
์ ๋ ฅ์ ํฝ์ ๋ก ์ด๋ฃจ์ด์ง image์ด๊ณ , ์ ๋ ฅ์ฌ์ด์ฆ๋ ๊ฐ๋ก, ์ธ๋ก, ์ฑ๋์ด ์๋ค. ๋ง์ฝ RGB์ด๋ฏธ์ง์ด๋ฉด ์ฑ๋์ด 3, Grayscale์ด๋ฉด ์ฑ๋์ด 1์ด๋ค.
์์ ๊ธ์์ ์ธ๊ธํ ์ธ๊ณต์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์ ๊ณผ ๋๊ฐ์ด ์งํ๋๋ค.
Input์ ๋ฐ์์ weight filter์ ์ปจ๋ณผ๋ฃจ์ ์ฐ์ฐ์ ์งํํด ํธํฅ์ ๋ํ ํ ํ์ฑํํจ์(activation function)์ ๋ฃ์ด ํ์ฑํํ ๋ค ์ถ๋ ฅ๊ฐ์ ๋ฐ์๋ธ๋ค. ์ด ๋ ์ฌ๋ฌ๊ฐ์ ๋ค๋ฅธ ํน์ง์ ์ถ์ถํ๊ณ ์ถ์ผ๋ฉด ์ฌ๋ฌ๊ฐ์ ์ปจ๋ณผ๋ฃจ์ ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Type of Layers
CNN์ layer์๋ ์ด ์ธ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
1. Convolution Layer: ์์์ ์ค๋ช ํ convolution layer
2. Pooling Layer
- ๊ฐ๋ก ์ธ๋ก ๋ฐฉํฅ์ ๊ณต๊ฐ์ ์ค์ด๋ layer → ๋คํธ์ํฌ ๋ชจ๋ธ์ ์ฐ์ฐ๋์ ์ค์ผ ์ ์์ + ์ ๋ ฅ๊ฐ์ ๋ณํ์ ์ํฅ์ ์ ๊ฒ ๋ฐ์
- ๋ง์ผ 4x4 image์ 2x2 pooling์ ์ ์ฉํ ๋์ ์์๋ ์๋์ ๊ฐ๋ค.
- max-pooling, average-pooling์ด ์์
3. Fully-Connected Layer: Classification ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ Layer
์ต์ข ์ ์ธ CNN์ ๊ตฌ์ฑ
1. Input์ ๋ฐ์
2. convolution layer, pooling layer ๋ฐ๋ณตํด ๊ฑฐ์น ํ
3. fully connected layer์ ๊ฑฐ์ณ ๊ฒฐ๊ณผ ์ถ๋ ฅ
์ด ๋ convolution layer๋ฅผ ๊ฑฐ์น๋ฉด image์ ํน์ง์ด ์ถ์ถ๋๊ณ , ๊ทธ ํน์ง์ผ๋ก fully connected layer์์ ์ด๋ฏธ์ง ๋ถ๋ฅ๋จ.