삶은돼지고기 2022. 12. 5. 21:03
728x90

Convolution Neural Network

  • 합성곱 신경망이란? 피처 자동 추출기이다.
  • 이미지의 특징을 다시 한 번 추출하는 커널(마스크)을 도입한 딥러닝 학습 기법
  • 특정 가중치를 갖는 특정 사이즈의 커널이 이미지 위를 지나가면서 각 픽셀의 정교한 데이터를 뽑아내는 방법
  • 이미지의 특징을 뚜렷하게 검출하기 때문에 이미지 분류에서 높은 성능을 나타낸다.
  • 데이터의 공간적 정보를 유지하면서 배열 데이터 정보를 다음 레이어로 보낼 수 있어서 이미지(RGB 채널의 3차원 배열)    분야에서 적극 활용되고 있다.
  • 필터(filters)를 랜덤하게 여러 장 만든다. 각 필터의 사이즈는 kernel_size 로 정한다.
  • 필터를 이미지에 통과시켜서 합성곱 연산을 하여 결과가 나오면 그 결과로 특징을 추출한다.
  • 필터에는 랜덤하게 만들다 보면 1자 모양도 있을 수 있고 / 모양도 있을 수 있고 O, ㅁ 이런 여러 패턴을 랜덤하게 만들 수- 있다. 그리고 그 패턴을 통과시켜서 그 패턴이 얼마나 있는지 확인해 볼 수 있다. 이런 패턴을 여러 장 만든다

 filters

=> 각 필터의 사이즈 kernel_size라 부른다.

 

CNN과 DNN의 차이

1차원으로 flatten 해서 넣어주는게 아니라 Conv, Pooling 연산을 통해 특징을 학습하고 압축한 결과를 flatten 해서 DNN 에 추가한다는 점이 다르다.

 

CNN 구조

합성곱 계층 (convolutional layer)과 풀링 계층 (pooling layer)이라고 하는 새로운 층을 fully-connected 계층 이전에 추가

원본 이미지에 필터링 기법을 적용한 뒤에 필터링된 이미에 대해 분류 연산이 수행되도록 구성하였다.

이미지에 필터링 기법을 적용하고, 풀링 계층은 이미지의 국소적인 부분들을 하나의 대표적인 스칼라 값으로 변환함으로써 이미지의 크기를 줄이는 등 다양한 기능들을 수행할 수 있다.

 

Convolution Layer

컬러 이미지 데이터를 처리하는 방법

- 이미지 데이터는 높이X너비X채널 의 3차원 텐서 (tensor)로 표현된다.

- 이미지의 색상이 RGB 코드로 표현된다면, 채널의 크기는 3차원이 되며 각각의 채널에는 R, G, B 값이 저장된다.

- 하나의 합성곱 계층에는 입력되는 이미지의 채널 개수만큼 필터가 존재한다.

- 각 채널에 할당된 필터를 적용함으로써 합성곱 계층의 출력 이미지가 생성된다.

 

 DNN을 이미지 데이터에 사용했을 때 단점

1) flatten() 으로 1차원 벡터 형태로 주입을 해야 하기 때문에 인접 공간에 대한 정보를 잃어버리게 된다.

 

2) 1차원 형태로 주입을 해주게 되면 입력값이 커서 계산이 오래 걸림

 

3) Conv과 Pooling 연산을 하게 되면 데이터의 공간적인 특징을 학습하여 어떤 패턴이 있는지를 알게 되며

 

4) Pooling 을 통해 데이터를 압축하면 데이터의 용량이 줄어들며, 추상화를 하기 때문에 너무 자세히 학습하지 않게 됨.

오버피팅을 방지

 

5) 인접 공간에 대한 정보를 잃어버리게 됨 (이미지가 28*28 이라도 1차원 벡터로 784)

 

CNN 과정 정리

  • Convolution 연산을 하면 필터(filters, kernel_size에 해당하는 filters 개수만큼)를 통과시켜서 filters 개수만큼 피처맵을 생성한다.
    • CNN 의 별명이 피처자동추출기 이기도 하다. 비정형 이미지를 입력했을 때 이미지를 전처리 하지 않고 그대로 넣어주게 되면 알아서 피처맵을 생성한다. 피처맵은 피처가 어떤 특징을 갖고 있는지를 나타낸다. 선이 있는지, ), O, 1, , 다양한 모양을 랜덤하게 생성해서 통과 시키면 해당 특징이 있는지를 학습하게 하는게 Convolution 연산이다.
  • 피처맵 Output에 Activation Function (활성화함수)을 통과시켜서 액티베이션맵을 생성한다.
    • relu 등을 사용하게 되면 출력값에 활성화 함수를 적용한 액티베이션맵을 반환한다.
  • Pooling 에는 Max, Average, Min 등 여러 방법이 있는데, 보통 MaxPooling 을 주로 사용한다.
    • 흑백이미지에서는 MinPooling 을 사용하기도 합니다. MaxPooling 은 가장 큰 값을 반환, AveragePooling 은 평균 값 반환, MinPooling 은 최솟값 반환
    • 이미지 크기를 줄여 계산을 효율적으로 한다.
    • 이미지를 추상화 해주기 때문에 너무 자세히 학습하지 않도록해서 오버피팅이 방지되게 된다.
  • CNN 관련 논문을 보면 이 층을 얼마나 깊게 쌓는지에 대한 논문이 있다.
    • VGG16, VGG19 등은 층을 16개, 19개 만큼 깊게 만든 것을 의미한다.
    • 30~50층까지 쌓기도 하고 100층 정도 쌓기도 한다. 층의 수를 모델의 이름에 붙이기도 한다.
    • 과거에 비해 GPU 등의 연산을 더 많이 지원하기 때문에 연산이 빨라진 덕분이기도 하다.