Hyeon-II
로그인
Hyeon-II
로그인
Convolutional Neural Networks
이세현
·
2024년 12월 3일
팔로우
0
Computer Vision
0
Convolutional Network
Linear Classifier의 한계: 이미지의 공간적 특성을 고려하지 않는다.
이미지 연산에 알맞는 연산이 필요하다.
Fully-Connected Network
의 구성요소: Fully-Connected Layers, Activation Function
Convolutional Network
의 구성요소: Fully-Connected Layers, Activation Function, Convolution Layers, Pooling Layers, Normalization
Fully-Connected Layer
:
[
32
×
32
×
3
]
[32\times32\times3]
[
3
2
×
3
2
×
3
]
image를
[
3072
×
1
]
[3072\times1]
[
3
0
7
2
×
1
]
로 펼친다.
Weights:
[
10
×
3072
]
[10\times3072]
[
1
0
×
3
0
7
2
]
, Output:
[
10
×
1
]
[10\times1]
[
1
0
×
1
]
Convolution Layer
: 공간적 구조를 유지한다.
Convolution Layer
Filter
Filter
: 3 채널의 filter로 1회 연산하면 모든 채널을 검사하므로 r, g, b 각각의 연산하여 더한 결과가 나온다. 따라서 연산을 위해서는 filter의 두께를 입력 이미지와 동일하게 설정해야 한다.
Filter를 image 위에서 딱 한 번 포개어 연산하면 scalar 하나가 도출된다. 3 채널 filter로 1회 연산하면 1 채널 map이 출력된다.
[
3
×
5
×
5
]
[3\times5\times5]
[
3
×
5
×
5
]
filter와 연산하는 것은 75 크기의 벡터와 내적하는 것과 같다.
Filter의 개수는 출력 map의 채널과 같다.
[
C
i
n
×
H
×
W
]
[C_{in}\times H\times W]
[
C
i
n
×
H
×
W
]
image,
[
C
o
u
t
×
C
i
n
×
K
w
×
K
h
]
[C_{out}\times C_{in}\times K_w\times K_h]
[
C
o
u
t
×
C
i
n
×
K
w
×
K
h
]
filter
→
[
C
o
u
t
×
H
′
×
W
′
]
\rightarrow [C_{out}\times H'\times W']
→
[
C
o
u
t
×
H
′
×
W
′
]
CNN model은
[
C
o
u
t
×
C
i
n
×
K
w
×
K
h
]
[C_{out}\times C_{in}\times K_w\times K_h]
[
C
o
u
t
×
C
i
n
×
K
w
×
K
h
]
크기의 filter와 bias이다.
CNN Filter를 펼치면 vector 내적과 같으므로 linear 연산이다. 따라서 결합벅칙이 성립되고 Convolution Layers를 연속으로 쌓아도 선형성이 있으므로 activation function이 필요하다.
Filter Size가 이미지만큼 크면 linear classifier의 template matching과 동일하다.
Filter는 한 번에 국소적 정보만 훑는다.
Kernel size가 1이면 채널 정보는 계산되지만 공간 정보가 담기지 않는다.
size 1의 kernel은 채널 크기를 바꾸기 위해 사용한다.
Stride
Stride
: 한 스텝 이후 filter의 이동 pixel
Operations
Dimension
Output
:
(
W
−
K
+
2
P
)
S
+
1
\text{Output}: \frac{(W-K+2P)}{S}+1
Output
:
S
(
W
−
K
+
2
P
)
+
1
Receptive Fields
[
3
×
3
]
[3\times3]
[
3
×
3
]
크기의 filter를 사용할 때 하나의 output pixel을 총 9개의 정보로 결정된다. 이때 receptive field는
[
3
×
3
]
[3\times3]
[
3
×
3
]
이다.
L
L
L
개의 레이어에서
K
K
K
크기의 필터를 적용했을 때 receptive fields는
1
+
L
×
(
K
−
1
)
1+L\times(K-1)
1
+
L
×
(
K
−
1
)
이미지가 작아지면 receptive field가 커진다.
넓은 영역을 보기 위해 이미지 사이즈를 줄이기도 한다.
Hyperparameters
Kernel Size
Stride
Pooling function
Pooling Layers
Downsample을 위한 방법
Max Pooling
Information size를 축소하는 방법
Convolution과 달리 filter 값, parameter가 없다.
Kernel size, stride에 따라 각 영역마다 최댓값만을 선택하여 다음 convolution에 전달하는 연산
cf) Average Pooling
Classic architecture: [Conv, ReLU, Pool] N회, flatten, [FC, ReLU] N회, FC
Convolution이 계속되면 공간적 크기는 작아지고 채널은 증가하여 전체적인 볼륨은 보존된다.
Batch normalization
입력 이미지 형태가 다르면 gradient가 매우 다르므로 input data의 range 규제가 필요하다.
Example
x
:
N
×
D
x:N\times D
x
:
N
×
D
N
N
N
개의 데이터 각각은
D
D
D
차원이다.
차원(채널)별 평균
D
D
D
개:
μ
j
=
1
N
∑
i
=
1
N
x
i
,
j
\mu_j=\frac{1}{N}\sum_{i=1}^{N}x_{i,j}
μ
j
=
N
1
∑
i
=
1
N
x
i
,
j
차원(채널)별 표준편차
D
D
D
개:
σ
j
2
=
1
N
∑
i
=
1
N
(
x
i
,
j
−
μ
j
)
2
\sigma_j^2=\frac{1}{N}\sum_{i=1}^{N}(x_{i,j}-\mu_j)^2
σ
j
2
=
N
1
∑
i
=
1
N
(
x
i
,
j
−
μ
j
)
2
미세 조정된
x
x
x
:
x
^
i
,
j
=
x
i
,
j
−
μ
j
σ
j
2
+
ϵ
\hat{x}_{i,j}=\frac{x_{i,j}-\mu_j}{\sqrt{\sigma_j^2+\epsilon}}
x
^
i
,
j
=
σ
j
2
+
ϵ
x
i
,
j
−
μ
j
문제점
Test set의 평균과 표준편차를 구할 수 없다.
Train set의
μ
,
σ
\mu, \sigma
μ
,
σ
를 사용한다.
데이터의 평균을 0으로 맞추고, 분산을 1로 맞추는 엄격한 정규화가 오히려 학습에 방해가 될 수 있다.
변수 두 가지
(
γ
,
β
)
(\gamma, \beta)
(
γ
,
β
)
를 더 설정한다.
y
^
i
,
j
=
γ
j
x
^
i
,
j
+
β
j
\hat{y}_{i,j}=\gamma_j\hat{x}_{i,j}+\beta_j
y
^
i
,
j
=
γ
j
x
^
i
,
j
+
β
j
Batch Normalization은 비선형 연산 전에 적용한다.
Batch Normalization을 적용하면 학습 시간이 단축된다.
학습이 잘 되는 이유가 이론적으로 설명이 안 된다.
Batch Normalization for ConvNets
Fully-Connected
Convolutional
x
:
N
×
D
x:N\times D
x
:
N
×
D
X
:
N
×
C
×
H
×
W
X:N\times C\times H\times W
X
:
N
×
C
×
H
×
W
μ
,
σ
:
1
×
D
\mu, \sigma: 1\times D
μ
,
σ
:
1
×
D
μ
,
σ
:
1
×
C
×
1
×
1
\mu, \sigma: 1\times C\times1\times1
μ
,
σ
:
1
×
C
×
1
×
1
γ
,
β
:
1
×
D
\gamma, \beta: 1\times D
γ
,
β
:
1
×
D
γ
,
β
:
1
×
C
×
1
×
1
\gamma, \beta: 1\times C\times1\times1
γ
,
β
:
1
×
C
×
1
×
1
y
=
γ
(
x
−
μ
)
/
σ
+
β
y=\gamma(x-\mu)/\sigma+\beta
y
=
γ
(
x
−
μ
)
/
σ
+
β
y
=
γ
(
x
−
μ
)
/
σ
+
β
y=\gamma(x-\mu)/\sigma+\beta
y
=
γ
(
x
−
μ
)
/
σ
+
β
Layer Normalization
Language Model과 같이 Data sample들 간의 연관이 없을 때 layer normalization이 적용된다.
Batch Normalization
Layer Normalization
x
:
N
×
D
x:N\times D
x
:
N
×
D
x
:
N
×
D
x:N\times D
x
:
N
×
D
μ
,
σ
:
1
×
D
\mu, \sigma: 1\times D
μ
,
σ
:
1
×
D
μ
,
σ
:
N
×
1
\mu, \sigma: N\times1
μ
,
σ
:
N
×
1
γ
,
β
:
1
×
D
\gamma, \beta: 1\times D
γ
,
β
:
1
×
D
γ
,
β
:
1
×
D
\gamma, \beta: 1\times D
γ
,
β
:
1
×
D
y
=
γ
(
x
−
μ
)
/
σ
+
β
y=\gamma(x-\mu)/\sigma+\beta
y
=
γ
(
x
−
μ
)
/
σ
+
β
y
=
γ
(
x
−
μ
)
/
σ
+
β
y=\gamma(x-\mu)/\sigma+\beta
y
=
γ
(
x
−
μ
)
/
σ
+
β
Instance Normalization
Fully-Connected
Convolutional
X
:
N
×
C
×
H
×
W
X:N\times C\times H\times W
X
:
N
×
C
×
H
×
W
X
:
N
×
C
×
H
×
W
X:N\times C\times H\times W
X
:
N
×
C
×
H
×
W
μ
,
σ
:
1
×
C
×
1
×
1
\mu, \sigma: 1\times C\times1\times1
μ
,
σ
:
1
×
C
×
1
×
1
μ
,
σ
:
N
×
C
×
1
×
1
\mu, \sigma: N\times C\times1\times1
μ
,
σ
:
N
×
C
×
1
×
1
γ
,
β
:
1
×
C
×
1
×
1
\gamma, \beta: 1\times C\times1\times1
γ
,
β
:
1
×
C
×
1
×
1
γ
,
β
:
1
×
C
×
1
×
1
\gamma, \beta: 1\times C\times1\times1
γ
,
β
:
1
×
C
×
1
×
1
y
=
γ
(
x
−
μ
)
/
σ
+
β
y=\gamma(x-\mu)/\sigma+\beta
y
=
γ
(
x
−
μ
)
/
σ
+
β
y
=
γ
(
x
−
μ
)
/
σ
+
β
y=\gamma(x-\mu)/\sigma+\beta
y
=
γ
(
x
−
μ
)
/
σ
+
β
이세현
Hi, there 👋
팔로우
이전 포스트
Backpropagation
다음 포스트
차량 전자제어와 지능형 자동차
0개의 댓글
댓글 작성
관련 채용 정보