깊이가 깊어짐에 따라 성능에 어떤 영향을 미치는지 확인하기 위해 만든 모델
특징
3x3 필터만을 사용하여 컨볼루션 한다.
활성화 함수는 ReLU 함수를 사용한다.
layer1 (convolution)
224x224x3 이미지를 224x224x64 특징맵으로 바꿔주는 레이어
64개의 3x3x3 필터를 사용하여 컨볼루션 한다. (padding=1, stride=1)
1개의 3x3x3 필터를 사용하면 224x224x1 특징맵이 나온다.
64개의 필터를 사용했기 때문에 224x224x64 특징맵이 나온다.
layer2 (convolution)
224x224x64 특징맵을 224x224x64 동일한 크기의 특징맵으로 만든다. (정보 손실을 최소화하면서 더 깊은 레이어 구성하기 위해)
64개의 3x3x64 필터를 사용하여 컨볼루션 한다.
max pooling
224x224x64 특징맵에 2x2 크기의 max풀링을 사용함으로써 112x112x64 특징맵으로 바꾼다. (stride=2)
layer3 (convolution)
112x112x64 특징맵을 112x112x128 특징맵으로 바꾼다.
128개의 3x3x64 특징맵을 사용하여 컨볼루션 한다.
layer4 (convolution)
112x112x128 특징맵을 112x112x128 특징맵으로 바꾼다. (크기만 같고 각 뉴런값은 다름)
128개의 3x3x128 특징맵을 사용하여 컨볼루션 한다.
max pooling
112x112x128 특징맵에 2x2 크기의 max풀링을 사용함으로써 56x56x128 특징맵으로 바꾼다. (stride=2)
layer5 (convolution)
56x56x128 특징맵을 56x56x256 특징맵으로 바꾼다.
256개의 3x3x128 필터를 사용한다.
layer6, layer7 (convolution)
56x56x256 특징맵을 56x56x256 특징맵으로 바꾼다.
256개의 3x3x256 필터를 사용한다.
max pooling
56x56x256 특징맵에 2x2 크기의 max풀링을 사용함으로써 28x28x256 특징맵으로 바꾼다. (stride=2)
layer8 (convolution)
28x28x256 특징맵을 28x28x512 특징맵으로 바꾼다.
512개의 28x28x256 필터를 사용한다.
layer9, layer10 (convolution)
28x28x512 특징맵을 28x28x512 특징맵으로 바꾼다.
512개의 28x28x512 필터를 사용한다.
max pooling
28x28x512 특징맵에 2x2 크기의 max풀링을 사용함으로써 14x14x512 특징맵으로 바꾼다. (stride=2)
layer11, layer12, layer13 (convolution)
14x14x512 특징맵을 14x14x512 특징맵으로 바꾼다.
512개의 14x14x512 필터를 사용한다.
max pooling
14x14x512 특징맵에 2x2 크기의 max풀링을 사용함으로써 7x7x512 특징맵으로 바꾼다. (stride=2)
layer14 (fully connected)
7x7x512 특성맵을 1차원 벡터로 변환한다. (모든 출력값을 한줄로 나열한다고 생각해도됨)
7x7x512=25088개의 뉴런이 되고 4096개의 뉴런과 fully connected 된다.
layer15 (fully connected)
4096개의 입력 뉴런과 4096개의 출력 뉴런이 fully connected 된다.
layer16 (fully connected)
4096개의 입력 뉴런과 1000개의 출력 뉴런이 fully connected 된다.
출력값은 softmax 함수를 통해 각 클래스의 확률값으로 변환하여 반환한다.
'머신러닝 > CV' 카테고리의 다른 글
하이퍼 파라미터 (0) | 2024.03.30 |
---|---|
딥러닝 cv - Filter (0) | 2024.03.30 |
밑바닥부터 시작하는 딥러닝 - chapter3 신경망 (0) | 2024.03.30 |
밑바닥부터 시작하는 딥러닝 - chapter2 퍼셉트론 (0) | 2024.03.30 |