-
Convolutional Neural NetworksGoogle ML Bootcamp/Convolutional Neural Networks 2023. 9. 23. 17:11728x90
※ Edge Detection Example
- 6*6 Matrix와 3*3 Matrix를 컨볼루션하여 4*4 Matrix로 output을 출력함.
- 합성곱 연산으로 이미지에서 편리하게 vertical edge를 찾고 구체화 시킬 수 있게 한다.
※ Padding
■ 합성곱 신경망의 단점
1. Convolution을 진행하게 되면 합성곱 연산을 적용할 때마다 이미지가 축소됨 -> 엣지 검출 or 다른 기능 설정 시 이미지 축소
2. 모서리에 있는 픽셀의 경우 3*3이라도 작은 모서리 픽셀의 결과 중 Matrix 하나에서만 사용되는 것처럼 터치가 됨.
-> 가운데 픽셀의 경우는 3*3 컨볼루션 시 중복되는 Matrix가 많음. but, 모서리나 엣지의 픽셀은 결과에서 훨씬 적게 사용되는 것처럼 보여 이미지 엣지 근처에서 많은 정보가 버려짐.
■ solution
- Padding
-> 6*6 Matrix에 1개 라인을 Padding 시켜주면 8*8과 3*3을 컨볼루션 하는 꼴이 되어 결국 6*6의 Matrix가 보장되게 됨.
padding을 p로 표현하면 (n+2p-f+1) * (n+2p-f+1)의 shape을 가지게 됨.
- padding 값을 구하는 공식
- f(convolution을 통과 시킬 Matrix의 shape)은 보통 홀수이다 -> 3*3 or 5*5 같은 shape을 가지는 Matrix를 보면 센터의 값을 가질 수 있어 컴퓨터 비전에 좋음.
※ Strided Convolutions
- Stride = 2라면 Matrix를 만드는 Input Matrix에서 뛰어넘는 Step 칸 수가 2라는 뜻
- 공식에 따라 Output의 shape을 예측해 볼 수 있음.
- Input에서 stride를 통해서 넘어가게 되면 안 되기 때문에 일반적으로 반올림을 해서 정수로 맞춰줌.
※ Convolutional Over Volume
- 입체형 합성곱 신경망이다.
- nc의 크기는 Input과 통과시킬 convolution Matrix의 숫자가 무조건 같아야만 한다.
- volume을 조정한 입체형 filter는 컴퓨터 비전 분야에서 상당히 많이 사용한다.
※ One Layer of a Convolutional Network
- bias를 고려해야 하는데, 10filters가 bias가 된다.
- 높이, 너비, 채널의 수로 나열하는 것이 일반적이며, Layer를 따라가면서 activation function을 사용하는 경우들도 있기 때문에 그 상황에 맞춰서 nc 채널의 수를 잘 판단하는 것이 중요하다.
※ Simple Convolutional Network Example
- 일반적으로 높이와 너비는 갈수록 줄어들고, filter의 크기는 갈수록 커진다.
※ Pooling Layers
- f = 2, s = 2의 hyperparamter를 가진 경우의 Max pooling
- Max pooling에서는 일반적으로 padding을 잘 사용하지 않음.
- f = 2, s = 2의 hyperparamter를 가진 Average pooling
※ CNN example
- CONV - Pool - CONV - Pool - FC - FC - FC - softmax(일반적)
- shape은 점점 작아진다.
728x90'Google ML Bootcamp > Convolutional Neural Networks' 카테고리의 다른 글
Face recognition & Neural Style Transfer (0) 2023.09.27 Detection Algorithms (0) 2023.09.25 Case Studies & ConvNet practical Advice (0) 2023.09.24