ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Computer Vision] Learning Deep Features for Discriminative Localization 번역 및 정리 (CAM)
    Paper review/Computer Vision 2021. 11. 5. 18:04

    @ 굵은 글씨 중요한 내용, 빨간 글씨는 내가 추가한 내용

     

    http://cnnlocalization.csail.mit.edu/Zhou_Learning_Deep_Features_CVPR_2016_paper.pdf

     

    주요 기여:

    • GAP(global average pooling)을 통해 object localization을 수행하고 성능을 높임

     


     

    0. Abstract

    우리는 다양한 실험에서 우리의 네트워크가 분류 과제를 해결하기 위한 훈련을 받았음에도 불구하고 차별적 이미지 영역을 국소화 할 수 있다는 것을 입증한다.

     

    본 연구는 GAP를 통해 CNN이 image 학습 후에(classification이 어떻게 결정되는지 주목하는 위치에 대한 정보가 없는 label만을 학습) localization 능력을 가질 수 있도록 하는 방법을 제안한다.GAP(global average pooling)은 학습을 정규화하기 위한 수단으로 사용되어왔지만, 이미지에서 CNN이 attention 하는 localizable deep representation을 생성하는 것을 발견했다 (GAP를 수행함으로써 CNN이 classification을 수행할 때 이미지의 어느 영역에 많은 주목을 했는지에 대한 정보를 생성한다는 것)GAP의 단순성에도 불구하고, bounding box에 대한 정보 없이도 object localization에 대해 37.1% top-5 error를 달성한다. 본 네트워크가 classification을 위한 학습을 했음에도 불구하고 discriminative localization (=object detection)이 가능하다는 것을 보인다.

     

    1. Introduction

    최근 CNN이 object 위치에 대한 label이 없었음에도 object detection 역할을 한다는 것을 발견했다. 하지만 이 정보는 FC layer (fully connected layer)가 classification에 사용될 때, 사라지게 된다. 최근에는 FC layer를 제거하여 매개 변수를 최소화하면서도 성능을 유지하기 위해 FCN(Fully convolutional network)가 사용되었다.

     

    또한 학습 중 과적합을 방지하기 위해 GAP(global average pooling)을 사용한다. 우리는 GAP를 통해 최종 layer까지 object localization 정보를 유지할 수 있다는 것을 발견했다. 이를 통해 object localization에 대해 학습되지 않았더라도 discriminative object part를 식별할 수 있다. 아래 그림에서 볼 수 있듯이 object classification에 대해 학습된 CNN은 action classification에 대한 discriminative regions을 인간과 상호작용하는 object로 성공적으로 localize할 수 있다 (action classification이 인간만 보는 것이 아니라 object까지 attention 하는 것을 확인할 수 있다는 말=성공적으로 object localization이 가능하는 말)

    weakly supervised object localization의 경우 37.1% top-5 test error를 달성하고, 이는 fully supervised AlexNet의 성능(34.2% top-5 test error)에 가깝다. 

    더보기

    weakly supervised learning

    Bootstrapping, self-training이라고도 한다. 이 learning은 두 가지 방법이 있다.

    1. 학습 데이터 중 labeling가 적은 상태로 classifier를 학습하는 것이다. unlabeled data를 classifier에 input하여 labeling하고 다시 학습하는 과정을 반복하여 적은 labeling 데이터로 classifier를 학습하는 방법이다.
    2. 데이터의 얕은 정보를 학습하여 더 깊은 정보를 생성하는 방법이다 (본 논문처럼 classification label만 존재하는 데이터를 통해 object localization을 수행하는 것이다).

    또한 우리의 접근 방식은 확장성이 좋다.

     

    1.1. Related Work

    Weakly-supervised object localization  

    CNN을 통한 weakly supervised object localization 연구가 많이 수행되었다. 하지만 기존 연구들은 localization 성능을 평가하지 않았고, end-to-end 학습을 하지 못하고, object를 localization 하기 위해 multiple forward passes가 필요하다는 한계점이 존재했다. 

    우리는 end-to-end 네트워크이며 single forward passes로 localization이 가능하다.

    가장 유사한 방법으로 GMP를 활용한 연구가 있다. 이 방식은 object의 전체 범위보단 object의 위치로 제한된다. GAP는 GMP와 유사하지만 object의 전체 범위를 인식하여 discriminative localization이 가능하다 믿는다.

     

    Visualizing CNNs  

    CNN이 학습을 시각화한 많은 최근 연구가 존재한다. 하지만 conv layer만 분석하고 fully connected는 무시하여 imcomplete하다. 우리는 FC layer를 제거하고 성능을 유지함으로써 전체 네트워크를 이해할 수 있다.
    또한, 이미지의 어떤 영역이 discrimination에 중요한지 정확하게 강조할 수 있다. 

     

    2. Class Activation Mapping

    CAM(Class activation map)은 CNN이 해당 class를 식별하기 위해 사용하는 discrimivative image region을 나타낸다. CAM을 생성하는 방법은 아래와 같다.

    Network in Network, GoogLeNet과 유사한 네트워크를 사용한다. 대부분 conv layer로 구성되며 최종 output layer(classification의 경우 sofrmax) 직전에 GAP를 수행하고 CAM을 생성하는 FC layer의 feautre로 사용한다. 

    output layer의 가중치를 class activation mapping에 다시 projection하여 CAM을 생성한다.

     

    위의 그림처럼, GAP는 마지막 conv layer에서 각 unit의 feature map의 spatial 평균을 output 한다. 이 값의 가중합은 최종 output을 생성하는 데 사용된다. CAM을 얻기 위해 마지막 conv layer의 feature map의  가중합을 계산한다. 

    최종 output layer가 sofrmax라 가정한다. regression 및 다른 loss에도 동일하게 적용 가능하다.

     

    주어진 image에 대해, f_k(x,y)는 unit k의 activation을 의미한다 (feature map 중 k 번째  feature map을 f_k라 하고 각 feature map의 (x, y) 값을 f_k(x, y)라 한다). f_k에 대해 GAP를 수행한 값이 F^k이다. 

    더보기

    global average pooling

    Average이지만 수식에 sum만 있는 이유는 같은 layer의 모든 feature map은 x,y의 개수가 동일하여 굳이 나눠주지 않아도 영향이 없어서 sum으로만 수행해도 무관하기 때문이다.

    주어진 class c에 대해 softmax input은 S_c이다. 이때 w는 f_k에서 class c의 가중치를 의미한다. 본질적으로 w는 c에서 F_k의 중요성을 나타낸다.

    결과적으로 class c에서의 softmax 결과 P_c는 다음과 같다.

    아래 그림과 같이 f_1에 대해 GAP를 수행하여 F^1=50이란 값을 얻는다. f_1에서의 class 2의 가중치 w는 1이고 이때, S_2는 56이 되는 것을 확인할 수 있다.

     

    그리고 M_c를 class c에 대한 CAM으로 정의한다.

    아래 그림을 보면 M_2는 앞의 softamax를 구하는 방식과 달리 f_1(x, y)을 더하지 않고, 위치별로 가중합을 더함으로써 각 class에 대해 feature map이 주목하고 있는 정도를 알 수 있다 (모든 x, y에 대해 값이 나옴).

    직관적으로 각 class에 대해 관련 있는 영역이 활성화될 것으로 예상한다. CAM은 input image보다 작기 때문에 input image size로 upsampling 한 후 비교하여 관심 영역을 얻을 수 있다.

    아래 이미지는 CAM 결과 예시이다. class 별로 discrimivative 영역이 활성화된 것을 확인할 수 있다.

     

    아래 이미지는 class에 따른 CAM의 차이를 볼 수 있다.

    Global average pooling (GAP) vs global max pooling (GMP)  GAP는 object의 모든 discrimivative part를 찾음으로써 값을 극대화할 수 있지만,  GMP의 경우 score가 높고 낮은 것과 관계없이 딱 한 부분에서만 score가 높으면 나머지는 고려되지 않고 max값만 고려되므로 모든 discrimivative 영역을 찾지 못한다.

    GMP와 GAP의 classification 성능은 비슷하지만, localization에서 GMP를 능가한다.

     

    3. Weakly-supervised Object Localization

    3.1. Setup

    AlexNet, VGGnet, GoogLeNet을 사용하여 CAM을 생성한다. 각 네트워크에서 최종 output 직전의 FC layer를 제거하고 fully connected softmax layer로 교체한다.  

    마지막 conv layer가 고해상도일 때, localization 성능이 향상된다는 것을 발견했다. 이를 mapping resolution이라 한다. 이를 위해 네트워크에서 몇 개의 conv layer를 제거한다. 그 후 3 × 3의 conv layer, stride 1, pad 1 with 1024 units을 추가한 다음 GAP와 softmax layer를 추가했다.

    • AlexNet: conv5 후에 layer 제거 ->13x13
    • VGGnet: con5-3 후에 layer 제거 -> 14x14
    • GoogleNet: inception4e 후에 layer 제거 -> 14x14

    평가 시 classification과 localization 모두 top-1, top-5 error metric을 사용한다.

     

    3.2. Results

    Classification 

    아래 표는 classification 성능 비교 결과이다. 추가 layer를 제거함으로써  약간의 성능 저하가 존재한다. 하지만 전체적으로 classification 성능이 크게 보존되는 것을 알 수 있다.

    또한 GoogLeNet-GAP과 GoogLeNet-GMP가 예상대로 classification에서는 유사한 성능을 가지고 있음을 알 수 있다.

     

    Localization

    CAM에서 bounding box를 생성하기 위해 heatmap에 대해 간단한 임계값 기법을 사용한다 (CAM의 최댓값의 20%를 초과하는 영역을 분할하여 가장 크게 연결된 부분을 포함하는 bounding box를 선택). 아래의 (a)는 그 예시이다.

    아래 표와 이미지는 localization의 성능 비교 결과이다.

    GoogLeNet-GAP이 top-5 error가 43%로 가장 성능이 좋았다. 또한 backpropagation을 통한 localization 성능을 크게 능가하는 것을 볼 수 있다 (그림 6의 (b)에서 확인할 수 있다). 

    그리고 classification에서는 GoogleNet의 성능이 좋았지만, localization에서는 GoogleNet-GAP의 성능이 훨씬 좋다는 것을 알 수 있다 (GoogleNet의 저해상도로 인해 localization이 방해받는 것으로 추정된다).

    GMP보다 GAP를 사용했을 때, 성능이 더 좋다는 것을 알 수 있다.

     

    아래 표는 기존 weakly supervised와 fully supervised CNN 방법들의 localization 비교 결과이다. 

    heuristics 한 방법을 통해 bounding box를 결정한다. CAM에서 top 1과 2의 bounding box를 선택하고 top 3에서 loose 한 bounding box를 하나 선택한다. 이  heuristics가 성능 향상에 도움이 된다는 것을 발견했다.

    이는 fully supervised AlexNet에 근접한 결과이지만, fully supervised GoogleNet(동일한 아키텍처)와 비교할 때는 아직 부족하다.

     

    4. Deep Features for Generic Localization

    4.1. Fine-grained Recognition

     

    4.2. Pattern Discovery

     

    5. Visualizing Class-Specific Units

     

    6. Conclusion

    GAP를 가진 CNN을 위한 class activation mapping이라는 방법을 제안한다. 해당 방법을 통해 classification을 위한 CNN은 bounding box 없이도 object localization을 할 수 있다.

    CAM을 사용하면 주어진 이미지에 예측 class score를 시각화하여 CNN에 의해 주목된 discriminative object part를 강조하여 시각화할 수 있다.

    Weakly supervised object localization에 대한 방법을 평가하여 CNN에서의 GAP가 정확한 object localization을 수행할 수 있음을 보인다.

    댓글

Designed by Tistory.