developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 삼성코테구현문제추천
  • SW역량테스트파이썬풀이
  • BOJ파이썬풀이
  • 삼성코테자바준비
  • 통계학
  • 시계열
  • 삼성코테기출
  • 카카오코테java풀이
  • SW역량테스트파이썬
  • c++ 빌더 패턴
  • 삼성코테기출자바풀이
  • c++디자인패턴
  • 시계열분석
  • 운영체제인터럽트
  • 삼성코테준비
  • Arima
  • 삼성코테자바풀이
  • MA모형
  • 통계분석
  • 데이터분석
  • 삼성코테자바꿀팁
  • 삼성코테파이썬풀이
  • 백준파이썬풀이
  • ARIMA모형
  • 삼성코테파이썬준비
  • 코테파이썬
  • 카카오코테
  • 삼성코테구현풀이
  • 삼성코테파이썬
  • AR모형

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen

인간 디버거의 로그 찍기

[AI] Visualizing and Understanding Convolutional Networks 논문 리뷰
AI/papers

[AI] Visualizing and Understanding Convolutional Networks 논문 리뷰

2024. 9. 16. 16:43
  • https://arxiv.org/pdf/1311.2901

 

0. Abstract

  • AlexNet부터 Large Convolutional Network models들이 ImageNet에서 상당히 안정적인 성능을 보임
  • 그러나, 왜 모델들이 잘 동작하는지, 어떻게 개선이 된건지에 대해 명확한 이해가 없음
  • 해당 paper를 통해 새로운 visualization techinique을 제시하여 intermediate feature layer들과 분류기의 operation에 대한 함수의 통찰력을 제공함
  • 서로 다른 layer들이 미치는 performance contribution을 측정하기 위해, 하나씩 제거해보는 연구를 수행
  • 추가적으로, ImageNet model의 다른 dataset들을 이용해서 일반화 특성을 파악함

1. Introduction

  • 1990년대 초반, LeCun의 연구에서는 CNN이 손글씨 인식이나, face detection등에 우수한 성능을 보인다고 소개됨
  • 2012년도 ImageNet 대회에서 AlexNet이 PASCAL VOC 데이터 셋에 대해 error가 16.4%로 1등을 함(2등 model은 26.1%)
    • → 성능 향상 요인
      • 레이블링된 수백만개의 샘플 학습 데이터 셋
      • 강력한 GPU 파워가 제공되어 큰 규모의 모델들의 practical한 학습 가능
      • Dropout과 같은 모델의 regulation 전략이 발전됨
  • 이러한 계속되는 발전에도 불구하고, 이런 복잡한 모델들의 내부 operation과 behavior들에 대한 인사이트가 거의 없음 → trial-and-error가 시행됨
  • 해당 논문의 제안
    • 각각의 feature map들을 자극하는 입력 stimuli를 나타내기 위해 visualization techinique을 제안
      • 시각화는 training동안 feature들의 진화를 관찰할 수 있게 해줌
      • 모델의 잠재적인 문제를 진단 가능하게 함
    • 제안한 visualization technique는 Zeiler라는 사람이 제안한 Deconvolutional Network(deconvnet)을 사용함
      • input pixel 공간에 feature activation을 투영시킴
      • classification할 때 어느 부분이 중요한지 분석함
  • 해당 논문에 활용지점
    • 해당 tool을 사용해서 ImageNet에서 1등한 Alexnet을 탐구함
    • 모델의 일반화 능력을 위해 다른 데이터로도 탐험함

1) Related Work

  • 기존 Visualizing feature
    • 현실에서 network를 파악하기 위해, 시각화 방법을 많이 사용함 → 대부분 pixel공간으로 projection이 가능한 1번째 레이어로 제한됨
    • 상위 Layer를 시각화 하는 방법 중 하나인 unit activation을 최대화 하기 위해 이미지 공간의 gradient descent를 수행하며 각 unit의 최적의 stimuli를 찾는 방법
      • unit? CNN의 뉴런, 예를 들어 Convolutional Layer의 필터의, Fully Connected Layer의 뉴런 등..)
      • 조심스러운 initialization이 필요하며, unit들의 불변성(invariance)에 대해 어떠한 정보도 받지 못하는 어려움 존재
Unit’s Invariance
- Invariance한 뉴런은 입력이 특정 변환을 거치더라도 해당 feature로 high response를 유지하는 것
- 예를 들어, 얼굴 특징을 탐지하는 뉴런의 경우 얼굴이 rotate되더라도 recognition을 잘 하는 것
  • 해당 논문에서 제시하는 Visualizing techinique
    • 학습 데이터셋에 대해 어떤 패턴이 feature map을 activation시키는지 보기 위해 invariance(불변성)을 non-paramatric한 view에서 제공한 기법을 제안
    • 본 논문에서 사용하는 Convolution layer대신 Convet의 Fully Connected layer로부터 투영하게 saliency map을 얻는 기법과 상당히 유사함
      • input image를 crop하지 않고,각 feature map에 top-down structure에 투영함

2. Approach

  • 본 논문은 표준 fully supervised convnet model인 Alexnet을 사용

Alexnet

  • 8개의 layer로 구성 → 5개의 Conv layer, 3개의 FC layer

1) Visualization with a Deconvnet

  • CNN의 동작을 이해하기 위해, 중간의 hidden layer들의 feature activity에 대한 해석이 필요함
    • input space로 다시 mapping 시키는 Deconvolutional Network에 기반한 새로운 방법을 제시
  • 이러한 mapping을 Deconvolutional Network(deconvnet)등을 사용함
    • 네트워크, 즉 pixel의 mapping 되는 과정에 정반대라고 생각하면 됨
  • convnet을 진단하기 위해, deconvnet은 각 layer들에 부착됨
  • Image pixel들까지 다시 되돌아오는 경로가 제공됨

 

  • 시각화 방법
    1. 입력 Image가 주어지면, convnet에 제공되고 feature가 각 layer를 통과하며 계산함
    2. 주어진 convnet의 activation을 진단하기 위해, layer내에 다른 모든 activation을 0으로 setting하고, feature map에 통과하게 함으로써, deconvnet layer의 입력이 되도록 함
      1. unpool 수행
      2. rectification을 수행
      3. filter을 수행하여 layer아래의 activation들을 restruct해줌 → 선택된 activation를 시각화

Unpooling

  • convnet에서 maxpooling 연산은 non-invertible(역을 계산할 수 없는) 연산
    • maxpooling을 가장 큰 값만을 가지고 나머지는 버리는 연산이기 때문
  • maxima값의 location 정보를 저장한 것을 switch variables 기록하며, inverse를 근사하는 값을 얻을 수 있음
  • switch layer로 reconstruction하는 과정에서 적절한 위치를 잡게함으로써 stimulus의 구조를 보존함

Rectification

  • Rectification? ReLU의 활성화함수 적용
    • f(x)=max(0,x)
  • 해당 논문에서 convnet은 Relu(비선형) 함수를 사용함
    • feature map들이 rectifiy되며 feature map들이 항상 positive한 상태를 보장받음
  • Relu를 거치면 양수인 부분은 그대로라서 상관이 없지만, 음수 부분은 아예 0이 되어버려서 살릴 수 있는 방법이 없음 → 해당 논문에서 음수부분은 우리가 원하는 stimulus를 찾는데는 영향을 끼치지 않아 문제가 되지 않다고함

Filtering

  • convolution연산을 inverse 하기위해 같은 filter들의 transpose하고, 연산된 결과와 곱함
  •  참고 : https://medium.com/apache-mxnet/transposed-convolutions-explained-with-ms-excel-52d13030c7e8

3. Training Details

  • ImageNet dataset의 classfication 수행을 위해 AlexNet model 사용
    • 3, 4, 5번째의 layer의 sparse connection을 dense connection으로 대체
      • AlexNet의 training할 때는 GPU를 분리해서 병렬 수행했기 때문
  • 학습 데이터
    • 해당 모델은 ImageNet 2012 dataset으로 학습(1.3 milion image, 1000개의 class)
    • 입력 크기는 256x256으로 cropping한 후, 224x224로 sub cropping을 수행
  • hyperparameters
    • 128 mini batch size, learning rate 0.01
  • 학습하는 도중 첫 번째 layer의 시각화는 일부가 dominant한 것을 확인 가능함
    • 이를 위해, convolutional layer의 각 filer를 renormalize함
  • 학습
    • 70 epoch 이후 학습을 멈추고, 12일간 GTX 580로 학습 진행

4. Convnet Visualization Result

1) Feature Visualization

  • training된 model의 feature들을 시각화한 결과
    • deconvnet을 사용해서 ImageNet의 validation set에 대해서, feature activation을 시각화함
  • Results
    • layer1, 2는 edge, corner와 같은 low level의 feature들을 추출함
    • layer3의 경우, 좀 더 깊어진 high level의 feature, 사물의 texture나 어느정도의 물체를 추출함
    • layer4는 사물이나 개체의 일부분의 feature를 시각화
    • layer5는 사물이나 개체의 위치 및 자세 변화를 포함하는 전체모습을 시각화함
    • layer가 더 깊어질 수록 더 세밀한 특징을 잡아냄
     

2) Feature Evolution during Training

  • 각 feature들을 학습하는데 1, 2, 5, 10, 20, 30, 40, 64 epoch가 소요됨
    • epoch가 커짐에 따라 특징을 제대로 추출 가능함

 

 

3) Feature Invariance

  • invariance
    • 함수의 입력이 바뀌어도 출력은 그대로 유지되는 것
  • 그림에서 행
    • a는 사진을 translation했을 때
    • b는 scale 했을 때
    • c는 rotation 했을 때를 의미
  • Results
    • a,b, c2와 a, b,c3은 layer1과 layer7에서 원본과 변형된 이미지의 feature vector 사이의 Euclidean distance를 나타낸 그래프
    • a, b, c4는 각 이미지에 변형됨에 따라각 이미지를 옳게 분류할 확률을 나타냄
    • layer1에서는 작은 변화에도 민감하게 변하지만, layer7에서는 불변성이 얻어지는 것을 확인

 

 

4) Architecture Selection

  • Alexnet을 visualization하면서, 더 좋은 모델을 만들기 위해 노력함
    • Layer 1: 11x11 filter를 7x7 filter로 줄임
    • Layer 2: Stride size를 4에서 2로 줄임
  • 더 선명하고, 다양한 filter를 얻을 수 있었음

5) Occlusion Sensitivity

  • 해당 paper의 저자들은 input image에 특정 부분을 가리면, 분류가 어떻게 동작되는지 확인하는 실험을 함
  • 이를 확인하기 위해 obejction의 일부분을 회색 박스로 가리고 학습을 진행
    • 결과로, 물체를 가리면 그 물체를 제대로 분류할 가능성이 떨어진다는 것을 확인함
     

  • 사진 예시
    • (c)는 최상단인 feature map에서 deconvent을 이용한 결과 → 강아지 얼굴이 가장 강력한 feature로 추출됨
    • (d)는 가린 부분을 옮겨가며, feature map의 활성도 결과를 보여줌 → activation이 확 떨어지는 것을 확인
    • (e)는 가린 부분을 옮겨가며, 분류에 대한 결과
    4.3 Correspondence Analysis 
    • 아래 실험은 강아지의 location(오른쪽 눈, 왼쪽눈, 코, 랜덤선택)을 회색박스로 가린 후 original 사진과 feature vector의 오차값을 계산했음
    • 해당 차이값으로 서로 다른 이미간에 Hamming distance로 계산해서, 그 값이 작다면 서로 다른 이미지들에서 feature가 달라진 방식이 유사하다는 것을 의미
    • 실험 결과 5번째 레이어에서 낮은 점수를 기록함→ CNN모델이 특정 물체를 구성하는 부분간의 대응을 계산함

5. Experimental

  • 우리는 AlexNet model을 구조를 거의 복제하고, Image Net의 data를 이용해서 training
    • 거의 error rate가 비슷함

1) Varying ImageNet Model Sizes

  • Layer 3, 4, 5의 크기를 각각 384, 1024, 512로 변경했을 때 더 나은 성능을 보였음
    • middle layers들의 size를 변형하면 performance가 좋아짐
  • FC layer인 Layer 6, 7의 size를 늘렸을 경우 오히려 Overfitting이 발생해 더 낮은 성능을 보였음
    • fully connected layers들의 size를 변형하면 눈에 띄게 performance가 안 좋아짐

2) Feature Generalization

  • 다른 data set(Caltech-101, Caltech-256, PASCAL VOC 2012)를 이용해 해당 모델의 generalizaiton한 feature 탐구
  • Alexnet 기반에서 위에서 성능이 좋다고 평가된 모델 구조로 new training data를 가지고 학습
  • Caltech-101, Caltech-102는 ImageNet dataset 결과와 비슷, PASCAL은 다름
    • PASCAL은 아마 data bias가 있음…
     

6. Discussion

  • 해당 논문에서 제시한 Visualizing Techinique으로 각 Layer의 feature map의 분포를 살폈음
    • 각 layer들의 feature map을 디버깅하며 더 좋은 성능을 보여주는 모델의 구조를 찾음
  • 여러 occlusion 실험을 통해 local structure에는 매우 민감하다는 것을 알게됨
  • layer를 하나씩 제거해보면서, 적은 depth를 갖는 네트워크 모델은 performance에 치명적이라는 것을 알게됨
  • ImageNet으로 pretraining된 model을 다른 데이터셋에 적용해보면서 generalization feature를 알아봄

'AI > papers' 카테고리의 다른 글

[AI] Deep Residual Learning for Image Recognition  (7) 2024.09.16
[AI] MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications 논문 리뷰  (0) 2024.09.15
    'AI/papers' 카테고리의 다른 글
    • [AI] Deep Residual Learning for Image Recognition
    • [AI] MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications 논문 리뷰
    developer-ellen
    developer-ellen

    티스토리툴바