@@@ 인공지능/이론

영상 처리(CNN)

HTG 2022. 2. 21. 22:35
728x90

CNN vs FNN(Fully-Connected NN)

FNN : 데이터가 주어지면 하나의 피처를 뽑기위해서(하나의 히든 노드를 정의하기위해서) 모든 연결을 다 사용함.

- 우리가 배워야하는 파라미터가 기하급수적으로 커짐. 조금만 변경되어도 파라미터 값이 많이 달라짐.

 

LNN(Locally-Connected NN) : CNN 전단계, 국소적인 부분만 뉴럴 네트워크를 정의. 해당부분으로만 연결이 되어서 하나의 히든 노드를 도출.

- 배워야하는 파라미터의 수가 줄어듦.

이렇게 하는 이유는 영상의 경우 전체를 보지 않고 부분적인 부분만 봐도 무엇인지 파악할 수 있기 때문.

# 해당 영역의 파라미터를 다른 영역에서도 사용가능. 즉, 파라미터를 공유(이는 LNN에서 CNN으로 변환되는 과정)

- 적은 파라미터로 재활용함으로써 효율적, 패치단위가 데이터기 때문에 더 많은 데이터를 활용할 수 있다는 것을 의미.

 

 

CNN(Convolutional Neural Networks)

CNN의 keyword

- convolution layer

- pooling layer

- activation function

 


Convolution

내적을 통한 값 도출.

 

Convolution layer

W(너비) * H(높이) * D(깊이, 채널)

conv.layer에서는 일반적으로 input과 conv.filter의 채널은 같다.

 

Filter로 이미지(input)를 훑으면서 내적을 계산함(계산값은 activation값).

 

여러 필터를 사용하여 activation을 여러개 구한다(채널을 늘린다).

 

filter의 크기와 stride(뛰어넘는 크기)에 따라 결과의 크기가 정해진다.

출력 size : (N - F) / stride + 1 (N : input크기, F : filter크기)

 

만약 소수점이 나오는 경우(정확히 맞지 않고 필터가 벗어나는 경우) 를 해결하기 위해

Zero padding을 사용. (zero 뿐만 아니라 다양한 padding을 쓰긴하지만 일반적으로)

input 크기 보존하는 공식 : stride = 1일때, filter size가 F라면 zero padding의 크기를 (F-1)/2로 하면 된다.

 

즉, convolution layer에서는 input을 filter를 통해 actvation map(중간 출력값을 만드는 곳). 이때 filter를 여러개 적용하여 activation map을 여러개 생성할 수 도있다.


Pooling layer

 

convolution layer의 필터 사이즈의 제한을 조금 더 쉽게 많은 범위를 보기위해 사용.

특정 부분에서 어떠한 특징을 가지는지 판단하고자하는 곳.

즉, 여러 값을 하나의 값으로 바꾸어주는 곳.

다양한 pooling이 존재함. 대표적으로 Max pooling

(여러 값 중 큰 값만 뽑아내는 Max, 평균값 average 등이 있음)


Activation function

 

이전까지 convolution layer는 matrix의 multiplication(선형) 이라고 볼 수 있음.

비선형성을 넣어서 어떤 값이 나왔을 때 큰 값을 더 크게, 작은 값은 작거나 무시하게 이런 기능을 넣어주는 것.

 

만약 activation function이 없다면, 결국 하나의 큰 선형 모델로 변하게 되기때문에 좋은 성능을 기대할 수 없음.

그래서 비선형적인 activation function을 사용하여 layer을 쌓았을 때 모델이 감당하는 양이 커지고 다양한 func을 학습할 수 있음.

 

종류

Identity - 선형 f(x) = x

Binary step, Logistic, ReLu 등등


이 과정을 다 거친 후 Fully Connected layer을 사용하여 하나의 값으로 만들어준다.

영상인식이 아니라면 이 layer가 없거나 다르게 활용되는 경우도 있음.

 

FC layer(Fully Connected layer)

input 32x32x3 이미지 -> 3072x1로 늘림

이를 Wx ( W(FC layer) : 출력 채널 사이즈 x input 채널 사이즈)

를 사용하여 activation 이 1 x 출력 채널 사이즈 로 나옴.

즉, FC layer의 경우 모든 input에 대해 고려한 결과라고 볼 수 있음.

 

 

CNN은 어떤 지식을 학습하는가?

계층적인 특징 표현

'@@@ 인공지능 > 이론' 카테고리의 다른 글

Attention  (0) 2022.02.22
Multi-Model Learning  (0) 2022.02.22
기계학습  (0) 2022.02.21