본문 바로가기
교재 리뷰/케라스 창시자에게 배우는 딥러닝

케라스 창시자에게 배우는 딥러닝 - 5. 컴퓨터 비전을 위한 딥러닝

by 펄서까투리 2020. 11. 16.

# 세줄 요약 #

  1. 합성곱 신경망(Convolutional Neural Network)은 합성곱층(Convolutional layer)와 풀링층(Pooling layer)로 이루어진 신경망을 의미하며, 시각적인 문제(Computer Vision)를 다루는데 가장 강력한 툴이다.
  2. 적은 이미지 데이터셋을 가지고 있을때 효과적인 방법은 사전 훈련된 네트워크(pretrained network)를 이용하여 특성 추출(feature extraction) 또는 미세 조정(fine tunning) 방법을 사용하는 것이다.
  3. 일반적인 딥러닝 모델이 블랙박스(학습 과정을 사람이 이해하기 어려움)인 것에 반해 시각적인 패턴을 학습하는 합성곱 신경망은 중간층의 출력(feature map), 필터(filter)와 클래스 활성화에 대한 히트맵(attention map) 등을 시각화(visualization) 할 수 있다.

 

# 상세 리뷰 #

 

1. 합성곱 신경망(Convolutional Neural Network)은 합성곱층(Convolutional layer)와 풀링층(Pooling layer)로 이루어진 신경망을 의미하며, 시각적인 문제(Computer Vision)를 다루는데 가장 강력한 툴이다.

그림 1. 일반적인 CCN의 구조. Convolutional layer와 Pooling layer을 기본으로 이루어진 Convolutional block들로 주로 구성되며, Classification 모델의 경우 마지막 층에는 Fully connected layer 또는 Global average pooling layer로 분류기를 연결시킨다. [Ref. Y. Guo, et al., Deep learning for visual understanding: A review, Neurocomputing (2015), http://dx.doi.org/ 10.1016/j.neucom.2015.09.116]

  • 합성곱층(Convolutional layer)
    • 필터(filter of kernel)들이 이미지를 훑고 지나가면서 필터가 한번에 볼 수 있는 영역(receptive field or window)의 지역 패턴들을 학습한다.
    • 합성곱 연산을 마치고 나면 해당 층의 필터에 따라 특성 맵(feature map)이 출력으로 나온다. 이러한 특성 맵은 해당 층의 필터가 보고 싶은 특징들을 추출한 맵이다.
    • 이러한 합성곱 연산층들이 깊게 쌓여서 합성곱 신경망(CNN)을 구성할 경우 계층 구조를 이루어 낮은 층에서 단순한 패턴들을 학습하고 깊은 층으로 갈수록 클래스를 분류하기 위한 고수준의 특징들을 학습해간다.
  • 풀링층(Pooling layer)
    • 입력 특성 맵에서 윈도우에 맞는 패치를 추출하고 각 채널별로 최댓값(Max-pooling) 또는 평균값(Average-pooling)을 출력한다. 그리고 나서 보통 특성맵을 절반 크기로 다운샘플링한다.
    • 다운샘플링을 하는 이유는 처리할 특성 맵의 가중치 개수를 줄이고, 연속된 합성곱층이 점점 커진 윈도우를 통해 바라보도록 만들어 필터의 공간적인 계층구조를 구성한다.  
  • FC(Fully Connected layer) or GAP(Global Average Pooling layer)
    • Classification 모델의 경우, Convolutional Block에서 최종적으로 추출된 정보들을 종합하여 클래스를 분류하는 분류기가 필요하다.
    • 이러한 분류를 하기 위하여 최종 Convolutional Block의 모든 정보들을 1D array로 만들어주는 Fully Connected layer를 사용한다.
    • 최근에는 지나치게 파라미터가 많아지는 Fully Connected layer 대신 최종 Convolutional Block의 각각의 특성 맵들을 평균하여 하나의 값으로 만들어 1D array로 변환시키는 Global Average Pooling layer를 사용하는 추세이다.

그림 2. 왼쪽부터 오른쪽으로 각각 Convolutional layer, Max-Pooling layer, fully-connected layer이다. [Ref. Y. Guo, et al., Deep learning for visual understanding: A review, Neurocomputing (2015), http://dx.doi.org/ 10.1016/j.neucom.2015.09.116]
그림 3. Fully Connected layer와 Global Average Pooling layer의 차이. [Ref. https://www.programmersought.com/article/15114727802/]

 

2. 적은 이미지 데이터셋을 가지고 있을때 효과적인 방법은 사전 훈련된 네트워크(pretrained network)를 이용하여 특성 추출(feature extraction) 또는 미세 조정(fine tunning) 방법을 사용하는 것이다.

  • 사전 훈련된 네트워크(pretrained network)
    • 일반적으로 대규모 이미지 분류를 위해 대량의 데이터셋에서 미리 훈련되어 저장된 네트워크
    • 보통 ImageNet 데이터셋으로 훈련된 네트워크를 많이 사용하며, 이렇게 훈련된 네트워크는 ImageNet처럼 일반적인 사물 분류문제가 아닌 분야(ex. 의료 인공지능)에서도 사용가능하다.
    • 학습된 특성을 다른 문제에서도 적용할 수 있는 이런 유연성이 딥러닝의 핵심 장점 중 하나이다.
  • 특성 추출(feature extraction)
    • 사전에 학습된 네트워크의 표현을 사용하여 새로운 샘플에서 흥미로운 특성을 뽑아내는 것
    • 'Pretrained network' 에서 합성곱층과 풀링층으로 이루어진 합성곱 블록(Convolutional block)들은 새로운 데이터를 통과시켜 특성을 추출하고, 뒤의 분류기에서는 추출된 출력으로 새로 학습시킨다(* 영상의 패턴들이 학습된 합성곱 블록과 달리 분류기에는 클래스에 대한 정보가 학습되어 있기에 합성곱 블록만 재사용하는 것).
    • 특성 추출을 사용할때 합성곱 블록은 학습하지 않고 특성만 추출해야 하므로 새로운 데이터에 훈련되지 않도록 동결(가중치 업데이트 중지)시켜야 한다(Keras의 경우 trainable 파라미티를 False로 설정).
  • 미세 조정(fine tunning)
    • 미세 조정은 특성추출에만 사용되던 합성곱 블록 중에서 상위층(입력과 가까운) 몇개를 동결에서 해제하고, 새롭게 합성곱 블록과 분류기를 함께 추가하여 훈련하는 것이다.
    • 합성곱 전체 블록을 특성 추출에만 사용하지 않고, 클래스 분류를 위한 고수준 정보들이 학습된 CNN 하위층(출력과 가까운)은 새로운 데이터에 맞게 학습시켜 가중치를 조정하므로 미세 조정이라고 부른다.

 

3. 일반적인 딥러닝 모델이 블랙박스(학습 과정을 사람이 이해하기 어려움)인 것에 반해 시각적인 패턴을 학습하는 합성곱 신경망은 중간층의 출력(feature map), 필터(filter)와 클래스 활성화에 대한 히트맵(attention map) 등을 시각화(visualization) 할 수 있다.

  • CNN 각 층의 출력 시각화
    • 연속된 컨브넷 층이 입력을 어떻게 변형시키는지 이해개별적인 컨브넷 필터의 의미 파악
    • 네트워크의 각각의 합성곱 층과 풀링 층의 특성맵 그리기
  • CNN 각 층의 필터 시각화
    • 컨브넷 필터가 찾으려는 시각적인 패턴과 개념
      • 입력: 빈이미지 -> 특정 필터의 응답을 최대화 하기 위해 컨브넷 이미지에 경사 상승법 적용
      • 출력 이미지는 선택된 필터가 최대로 응답하는 이미지
    • 전체 과정
      • 특정 합성곱 층의 한 필터값을 최대화하는 손실함수 정의
      • 활성화 값을 최대화 하기 위해 입력 이미지가 변경되도록 확률적 경사 상승법 적용
    • 결과
      • 모델의 하위층으로 갈수록 점점 더 복잡해지는 패턴
      • 첫번째 층: 간단한 엣지와 색깔 등의 필터
      • 하위층: 깃털, , 나뭇잎 등의 자연 질감과 유사

그림 4. CNN  각 층의 필터 시각화. (왼쪽) 모델의 상위층에서는 하나의 컬러나 점, 선 등의 단순한 패턴들만 필터에 보이지만, (오른쪽) 모델의 하위층으로 갈수록 마치 깃털, 비늘, 나뭇잎 같은 자연 질감과 유사한 패턴들로 고차원의 필터가 되어감을 볼 수 있다.

  • 클래스 활성화에 대한 Attention Map 시각화
    • 이미지의 어느 부분이 컨브넷의 최종 분류 결정에 기여하는지 이해
    • 분류에 실수가 있는 경우 디버깅에도 사용
    • 이미지의 핵심 오브젝트 위치 파악
    • Grad-CAM 기법
      • 합성곱 층의 특성 맵의 출력을 추출
      • 특성맵의 모든 채널 출력에 채널에 대한 클래스의 그래디언트의 평균을 곱함.
      • 입력이미지가 각 채널을 활성화하는 정도에 대한 공간적인 맵을 클래스에 대한 각 채널의 중요도로 가중치 부여

그림 5. Grad-CAM [Ref.  Selvaraju, R. R. et al., “Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization”, arXiv e-prints, 2016.]

 

* 출처: 케라스 창시자에게 배우는 딥러닝 / 프랑소와 숄레 / 길벗

728x90
728x90

댓글