Semiconductor, Embedded/0. AI

CNN(Convolution Neural Network)에 대하여

잇(IT) 2024. 8. 5. 21:21

■ CNN(Convolution Neural Network)

 

이미지와 같은 이차원 데이터에서 패턴을 학습하는 데 특화된 딥러닝 모델이다.

이미지 처리, 영상 인식, 객체 탐지 등의 다양한 컴퓨터 비전 작업에 사용된다.


■ CNN 구조

 

위 사진은 실제 CNN을 통해 학습하는 과정을 시뮬레이션으로 만들어 놓은 것이다.

 

 

우측의 Fully-connected layer의 입력 데이터는 1차원(배열) 형태로 입력되어야 한다.

컬러 Image의 경우 3차원 흑백의 경우 2차원 데이터를 가지게 되며, 각 Image들을 좌측 그림의 마지막 Pooling layer와 같이 1차원 배열 형태로 만들어야 한다.

1, 3차원 Image의 공간 정보를 유지한 상태로 학습이 가능한 모델이 CNN이다.

 

CNN은 (FEATURE LEARNING) 특징을 추출하는 부분과 (CLASSIFICATION) 클래스를 분류하는 부분으로 나눌 수 있다.

특징을 추출하는 부분은 Convolution Layer와 Pooling Layer가 여러 겹으로 쌓여있는 형태를 띄우고 있다.


■ CNN 동작 원리

 

● Convolution Layer (합성곱)

컬러 이미지의 경우 위와 같이 RGB에 따라 3차원 배열을 형성하게 된다.

 

Convolution Layer에는 3가지 주요 개념이 있다.

 

1. Filter

2. Stride

3. Padding


1. Filter

입력 데이터에 적용되어 특징을 추출하는 작은 행렬이다.

 

아래 그림은 3x3 Filter를 사용하는 예시를 보여주고 있다.

 

위 Filter를 통해 5x5 Image가 3x3의 형태의 새로운 이미지가 생성된다.

 

하나의 합성곱 계층에는 입력되는 이미지의 채널 수만큼 필터가 존재한다. 각 채널에 할당된 필터를 통해 합성곱 계층의 출력 이미지가 생성된다.

 

Filter를 통해 Image에 대한 특징을 유지한채 크기를 줄일 수 있다.


2. Stride

Stride는 Filter가 입력 이미지 위를 슬라이딩 하는 간격을 의미한다.

 

위 그림은 Stride가 2인 경우를 보여주고 있다. 2칸씩 이동하며 합성곱을 통해 결과물을 출력하기 때문에 .7x7의 Image 크기에서 3x3의 크기로 줄어든 것을 확인할 수 있다.


3. Padding

Stride를 보게되면 합성곱을 수행하면 수행할수록 Image의 크기가 줄어드는 것을 확인할 수 있다.

합성곱을 하게되면 가장자리에 위치하는 픽셀들의 정보는 점점 사라지게 되기 때문에 이를 해결하기 위해 Padding을 사용한다.

왼쪽 그림은 Padding을 적용하지 않은 그림으로 합성곱을 수행한 뒤 2x2 배열로 줄어든 것을 확인할 수 있다.

오른쪽 그림의 경우 Padding을 적용시켜 합성곱을 수행시킨 뒤에도 4x4 배열이 유지되는 것을 확인할 수 있다.

 

위와 같이 0을 Padding하는 것을 Zero-Padding이라하며 Zero-Padding을 적용시키면 이미지의 손실이 없는 것을 확인할 수 있다.

 

Convolution Layer에는 주로 ReLU 함수를 적용하며, 즉 이미지에서 특정 패턴을 감지하는 역할을 한다.

 

* Filter의 크기가 주어지면 최초에 Filter의 값은 무작위로 구성된다. 순전파와 역전파를 통해 Filter의 가중치가 데이터에 맞게 최적화된다.


● Pooling Layer (합성곱)

 

특징 맵의 크기를 줄이는 역할을 한다. Pooling Layer은 여러가지가 있지만 대표적으로 아래 3가지가 있다.

 

1. Max Pooling

2. Average Pooling

3. Min Pooling

 

세가지 방법 전부 계산 비용을 줄이고, 과적합을 방지하기 위해 사용된다. 3가지 방법 중에선 주로 Max Pooling 자주 사용된다.

 

Pooling Layer를 지나게 되면

1. 선택된 내부에서는 이동, 축소, 회전에 의해 값의 위치가 변경되어도 출력값은 동일하다. 

2. CNN을 통해 처리해야 하는 Image의 크기가 줄어들기 때문에 학습 시간을 줄일 수 있다.

 

위 과정을 거친 뒤 FLATTEN을 통해 결과물을 1차원 배열로 생성하게 된다.


이후 값들을 FLATTEN을 통해 1차원 배열로 만들고 FULLY CONNECTED, SOFT MAX 과정을 통해 학습을 하게 된다.

 

CLASSIFICATION 부분의 과정을 포함하여 전체 과정은 ANN의 과정과 유사하다 

 

https://insoobaik.tistory.com/663

 

ANN(Artificial Neural Network)에 대하여

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.

insoobaik.tistory.com

위 글을 통해 어떻게 1차원으로 변경된 데이터들이 훈련되고 테스트 되어지는지 확인할 수 있다.


* 추가 학습 관련 내용

 

출력전 뉴런에서 특징에 대해서 분류된 모든 출력에 전파되는 출력 뉴런들은 해당 신호를 받아서 예측과 유사한 특징이면 계속해서 받아들이고 아니면 안받아 들인다. (받아들이는 뉴런은 활성화된 뉴런들에게서만 데이터를 받아온다. 애초에 수치가 낮은 뉴런은 받아들이지 않고, 수치가 높은 뉴런들 중에서 자신에게 유용한 데이터만 반복적으로 학습하게 된다.)

 

훈련단계에서는 최종 이미지와 자신들이 특징 뉴런에서 가져온 것들이 유사한지 확인하면서 유사하면 계속 그쪽 뉴런에서 데이터를 받아오도록 학습하게 된다.

728x90

'Semiconductor, Embedded > 0. AI' 카테고리의 다른 글

ANN(Artificial Neural Network)에 대하여  (0) 2024.08.03