AI Fundamentals/LG Aimers 3기

[LG Aimers] Module 7.3(Deep Learning) : CNN and Image Classification

Jae. 2023. 7. 19. 22:29
728x90

 

 

1. Various Neural Network Architectures

 

 

 

  • Fully connected Neural Network
    • 입력 노드와 출력 노드가 모두 특정한 가중치의 형태로 연결된 Network
  • Convolution Neural Network (CNN)
    • CV, 영상처리에서 많이 사용
  • Recurrent Neural Network
    • Sequence data, Time-series data에 적용

 

 

 

  • Classification: Image recognition (이미지 분류 task)
  • Retrieval: 자연어로 된 query문을 주었을 때 query에 부합하는 관련성이 높은 image들을 검색
  • 사람의 신체를 대상으로 하여 자세를 추정
  • 의료 영상이나 문자 인식, 알파고

 

다양한 computer vision task

 

 

  • Challenges in CV Tasks

다양한 경우에도 robust 하게 영상인식을 하는 알고리즘이 잘 동작할 수 있어야함

 

 

CNN이 나온 이후 하나의 물체를 규정짓는 특정한 요소, 패턴들을 활용하여 검출하고 인식하는 과정을 통해 작동

 

 

  • Image Classification task
    • 2012년도에 AlexNet 모델이 나온 이후로 성능이 급격하게 좋아짐
    • 2015년도에는 사람의 물체 인식 성능을 뛰어넘음

 

 

 

 

2. How CNN Works

 

[요약]

 

  • 선형 결합의 가중치를 적용해서 가중합을 구하게 되는 convolutional operation 을 먼저 적용
    • Output Activation Map을 구한다
  • RELU Layer를 그 다음 적용 

 

  • Image를 조금 더 축약된 형태로 바꿔주는 Max Pooling Layer를 적용

 

  • Convolution - RELU - Max Pooling을 여러 번 반복하면서 Stacking

 

  • Fully Connected Layer를 이용
    • output activation map를 일자로 핀 column vector를 Input으로 설정
    • model parameter와 linear combination후 sigmoid 함수 통과하여 확률비교

 

  • 최종적으로 두 개의 Class 중 하나로 구분
    • binary cross-entropy loss
    • mean square loss 

 

  • 위의 loss function으로 설계한 후 optimizer로 최적화
    • Fully connected Layer에서 model parameter 존재
    • Pooling, RELU는 model parameter 존재 X
    • Convolution Layer에서는 이미지의 특정 위치들에 적용한 convolution filter들의 coefficient or 패턴 자체가 model parameter로 작용: GD를 통해 filter의 coefficient를 최적의 값으로 도출하게 됨

 

 

  • sample image에 존재하는 X, O를 분류하는 task

 

 

Simple cases

 

 

trickier cases / X 2개가 여전히 같은 class에 속함을 보이려면 어떻게 해야하는가?

 

 

  • 주어진 이미지는 ML/DL Algorithm의 input으로 넣을 때 하나의 숫자들로 이루어진 2차원 배열로 나타남
  • 하얀색 pixel에 해당하는 값 = 1, 검은색 pixel에 해당하는 값 = 0

 

 

두 input을 겹쳤을 때 서로 다른 pixel 값이 나타나면 빨간색으로 처리

 

 

  • 부분적인 patch로 집중한다면 일관적인 pattern을 찾을 수 있음

 

부분적인 요소가 공통적으로 등장하는 것을 알 수 있음

 

  • Convolution Neural Network는
    • 특정 class에 존재할 수 있는 작은 특정 pattern을 정의
    • 그 pattern들이 주어진 image 상에 있는지 판단

 

 

작은 특정 pattern이 일치한다

 

 

 

 

 

 

  • 주어진 Image 상에서 3 by 3 image patch를 특정한 위치에 overlap 시켰을 때 특정 pattern과의 매칭되는 정도 확인
  • Convolution Filter coefficient X Image pixel
  • 3 by 3 patch에서 matching이 됐는지 되지 않았는지를 확인할 수 있음

 

 

 

  • 총 Matching된 정도 = $\frac {\sum(Box 안의 값)}  {patch의 \: 총 \: pixel의 \: 개수} $ 

 

 

 

 

 

  • Matching의 정도를 주어진 Image에 3 X 3 patch를 가능한 모든 위치들에 위치키기
  • 해당 Matching되는 정도를 또 다른 Image 형태로 반환

 

 

 

  • Activation Map: 활성화 지도
    • Matching의 정도를 나타내는 또 다른 Image 반환
    • 특정한 convolution filter를 주어진 입력 Image의 가능한 모든 위치에 overlap 시켜 Matching되는 정도를 나타내는 결과 Image
    • 해당 연산을 Convolution 연산 or Operation이라 한다

 

 

 

  • 각 Convolution Filter별로 Activation Map을 얻을 수 있다

 

 

 

  • Activation Map 구하는 방법

 

 

4번 과정의 경우 보통 생략하는 경우가 많다

 

 

3. Convolution Layer

 

  • Convolution Filter의 집합
  • 각 filter는 Input channel의 개수만큼 channel을 지님

 

  • 주어진 Image 한 장을 가지고 filter 개수만큼의 Image를 생성

 

 

 

  • 3개의 채널로 구성된 Input Image가 있을 때:
    • convolution filter가 3 X 3 size Image Patch 3개로 구성됨
    • 최종 Matching value
      • $\sum_{i=1}^{3} (convolution \: filter \: coefficient \times  each\: image\: pixel)$ 

 

 

  • Image의 depth = Convolution filter의 depth

 

 

 

 

  • $\sum {(convolution \: filter \: coefficient \times  each\: image\: pixel)}$ : Activation Map의 Scalar value

 

 

 

 

  • Input Channel 개수 = Activation Map 개수 = convolution filter channel 개수
  • One Input Channel 당 Multiple Convolution Filter 존재 
  • Input Image: 3-channel image
  • Convolution Filter: 3-channel filter

 

3 convolution filters w/ 3 channels each

 

 

두 번째 convolution filter는 한 개 존재 & 3개의 channel 존재 -> 한 개의 activation map 반환

 

 

4. Pooling Layer

 

  • 특정 size의 image patch 준비
  • 기존 Input image와 overlap하여 Input image pixel value 중 최댓값을 골라내는 과정 수행

 

 

 

  • Max Pooling
    • 원래 이미지가 특정한 size를 가질 때
    • 2 X 2 영역에서 특정한 하나의 값을 뽑기 때문에 가로, 세로 영역을 반으로 줄여주는 효과가 있음
    • 정보 축약 (대략적으로)
      • Activation map에서 해석할 때 해석하고자 하는 패턴이 원래 위치를 특정할 수는 없지만 2 X 2 영역 내에서 Max 값만큼의 세기로 나타났다라고 하는 의미

 

 

  • Input Image의 각 채널별로 따로따로 적용하게 됨

 

 

 

 

 

 

 

5. RELU Layer

 

 

  • 기본적인 convolution 연산: 선형결합을 통해 일어나는 연산
  • 선형 연산 이후에는 활성함수를 통과시킴으로써 유연하게 다양한 패턴을 표현할 수 있게 해줌

 

  • Convolution 과정을 통해 선형 결합을 한 후 RELU라는 Activation function을 적용
    • 이전의 convolution layer에서 나온 output activation map을 입력으로 받아 RELU 함수를 적용
    • 양수는 그대로, 음수는 0으로 처리하는 clipping된 변형된 output activation map을 형성

 

 

 

 

  • 선형 결합의 가중치를 적용해서 가중합을 구하게 되는 convolutional operation 을 먼저 적용
    • Output Activation Map을 구한다
  • RELU Layer를 그 다음 적용 
  • Image를 조금 더 축약된 형태로 바꿔주는 Max Pooling Layer를 적용
  • Convolution - RELU - Max Pooling을 여러 번 반복하면서 Stacking

 

 

  • 뒷쪽의 convolution layer는 앞쪽에서 추출된 특정한 패턴을 또 입력으로 받기 때문에 해당 이미지상에서 정의할 수 있는 더 복잡한 패턴을 정의할 수 있음 

 

 

 

 

6. Fully Connected Layer

 

 

  • Convolution - RELU - convolution - RELU - Max Pooling ... 등의 과정이 모두 끝난 후
  • 특정 convolution layer에서 max pooling이 여러 번에 걸쳐서 일어났기 때문에 최종 image size는 2 X 2
  • Activation Map을 column vector로 한 줄로 쭉 핀다
  • 해당 Column Vector를 이용하여 Fully Connected Layer를 구성

 

 

x/o 구분을 위해 output node를 2개 만든다: 각 class에 대한 score를 형성

 

 

 

 

layer에 있는 가중치를 기반으로 계산한 후 sigmoid를 통과했더니 다음과 같은 값이 나온다

 

 

 

 

 

 

[요약]

 

  • 선형 결합의 가중치를 적용해서 가중합을 구하게 되는 convolutional operation 을 먼저 적용
    • Output Activation Map을 구한다
  • RELU Layer를 그 다음 적용 

 

  • Image를 조금 더 축약된 형태로 바꿔주는 Max Pooling Layer를 적용

 

  • Convolution - RELU - Max Pooling을 여러 번 반복하면서 Stacking

 

  • Fully Connected Layer를 이용
    • output activation map를 일자로 핀 column vector를 Input으로 설정
    • model parameter와 linear combination후 sigmoid 함수 통과하여 확률비교

 

  • 최종적으로 두 개의 Class 중 하나로 구분
    • binary cross-entropy loss
    • mean square loss 

 

  • 위의 loss function으로 설계한 후 optimizer로 최적화
    • Fully connected Layer에서 model parameter 존재
    • Pooling, RELU는 model parameter 존재 X
    • Convolution Layer에서는 이미지의 특정 위치들에 적용한 convolution filter들의 coefficient or 패턴 자체가 model parameter로 작용: GD를 통해 filter의 coefficient를 최적의 값으로 도출하게 됨

 

 

 

7. Hyperparameters

 

 

 

  • Convolution Layer
    • Convolution Filter 개수
    • Convolution Filter 사이즈
  • Max Pooling Layer
    • Window(filter) Size
    • Window(filter) Stride (window를 다음 칸으로 옮겨갈 때 움직이는 pixel 간격) 
  • Fully Connected
    • Number of Layers
    • Number of Neurons

 

 

 

 

8. CNN Architectures

 

 

  • AlexNet
  • VGGNet
  • GoogLeNet
  • ResNet

 

 

  • VGGNet
    • 각각의 convolution layer에서 사용하는 convolution filter의 size를 3 X 3으로 Always 고정
    • 특정 Size로 정의할 수 있는 특정한 pattern이 존재
    • 작은 filter로 나타날 수 있는 단점은 layer를 굉장히 깊게 쌓음으로써 커버할 수 있다

 

 

 

 

  • ResNet (Residual Network)
    • Layer를 추가하여 깊게 쌓았을 때 task를 위해 도움이 되는 순기능을 할 수 있다
    • 다만 초반에는 random initialization에서 시작하는 수많은 parameter들이 순기능을 내기까지 많은 시간이 걸릴 수 있다
    • Layer를 필요할 때 건너뛸 수 있는 skip connection

 

  • 이전에 Deep Learning Layer들이 만들어낸 중간 결과물을 Input $x$으로 넣었을 때 Layer들의 Output $F(x)$이 나옴
  • 해당 Output $F(x)$에다 입력을 $x$를 같이 더하는 식으로 최종 Output $F(x)+x$ 을 구성
  • Skip을 하고 싶다면 $F$ 라는 layer 내의 parameter들을 거의 다 0으로 학습을 하면 됨

 

  • 만들고 싶은 출력물은 입력 $x$ 대비 얼마만큼을 $F(x)$ 더할지 빼줄지 해당 차이 값만을 추가적인 Layer에서 만들어 주면 된다
  • 즉, Layer의 역할은 입력 대비 해당 입력이 추가 혹은 제거할 값 $F(x)$만을 만들어주면 된다는 의미에서 Residual (나머지 값)

 

 

 

layer를 152개까지 쌓아도 성능을 꾸준히 향상시킬 수 있다

 

728x90