출처

Yan, Zhicheng, et al. “HD-CNN: hierarchical deep convolutional neural networks for large scale visual recognition.” Proceedings of the IEEE international conference on computer vision. 2015.

Copyright of figures and other materials in the paper belongs to original authors.

Abstract

  • 이미지 분류 task에서 각기다른 object 카테고리에서의 시각적인 분리는 높은 확률로 고르지 않고, 몇몇의 카테고리는 다른것들보다 구분하기 훨씬 어려움
  • 이러한 어려운 카테고리는 dedicated 한 classifier을 요함
  • 그러나, 현존하는 딥러닝 CNN은 N-way clasifier으로 flat되어서 train되고, 카테고리의 계층적 구조를 이용한 연구는 많이 없음.
  • 본 연구에서는 계층적 CNNs를 제안하는데, 이는 embedding된 깊은 CNN을 2단계 카테고리 계층으로 구성됨.
  • HD-CNN 은 쉬운 class과 어려운 class를 분리하고, 어려운 class를 fine category classficier을 이용해서 구별함.
  • During HDCNN training, component-wise pretraining is followed by global fine-tuning with a multinomial logistic loss regularized by a coarse category consistency term.
  • 추가적으로, fine category classifier들에 대한 fine category classifier에 대한 조건부 execution(처형?)과 layer parpameter compression은 large scale visual recognition을 위한 scalable한 HD-CNN을 만들 수 있도록함

Introduction

  • Deep CNN은 large scale 강화 visual recogition taks에 알맞는데, 이는 DCNN이 scalable 학습 알고리즘을 가지고 있기 때문임.
  • DCNN은 시퀀셜한 scan을 할 때 잠재적으로 넓은 양의 training data의 아주 조금 chunk만을 필요로함.
  • 버스와 사과를 구분하는 것은 쉽지만, 사과와 오렌지를 구분하는 것은 어려움.
  • 본 연구에서는 Deep CNN 모델이 flat 한 Nway classifier이기 때문에, 모든 카테고리를 구별해내는것이 어렵다고 주장함
  • 관습적인 선형 분류기에서는 계층적 분류기가 효과가 있음이 증명이 되었지만 CNN 모델에 적용된 연구는 별로 없기 때문에 이를 연구하고자 함
  • Deep CNN 모델이 그 자체로 큰 모델이기 때문에, 이들을 계층적으로 정돈하려면 몇가지 챌린지가 있음
    • 먼저, 수작업처리된 카테고리 대신, 어떻게 카테고리를 training data itself으로 학습할 것인지, 그리고 이를 통해서 어떻게 cascaded inference를 할건지?
    • 두번째로, 계층적 cNN 분류기는 여러가지 CNN 모델을 different level에 포함하는데, 어떻게 하면 이러한 모델간의 공통점을 활용하면서 효과적으로 학습시킬 수 있는지?
    • 마지막으로 계층적 CNN 분류기는 새로운 testing image에 대해서 더 느리고 더 많은 메모리를 consume 할건데, 이를 어떻게 극복할건지?
  • 본 연구에서 제안된 모델의 process
    1. easy class들은 coarse 카테고리 cnn classifier으로 분리됨
    2. challening class들은 fine category classifier으로 분리됨

Related Work

Convolutional neural Netorks

  • CNN기반 모델은 CV task에서 SOTA급 성능을 보여줬음
  • 하지만, CNN의 성능을 특정 부분에서 재설계하지 않았음(아마도 계층적인 구조를 사용하지 않았다는 말 같음)

Category Hierarchy for Visual Recognition

  • visual recognition에서는 계층 구조를 활용한 방대한 자료가 있음.
  • 많은 class를 포함하고 있는 선형적 Classification task에서는, 가장 많이 사용되는 전략이 계층적 혹은 분류적(taxonomy) classifier을 만드는 거임.
  • hierachy는 predefined될 수 있고, top-down 과 bottom-up 방식 모두로 학습될 수 있음
  • HCNN의 초창기 모델의 목적은 class간의 정보를 전이하는데에 맞추어져 있었음.

Overview of HD-CNN

Notations

  • dataset은 xi, yi의pair으로 구성되어 있고 , xi는 이미지 yi는 xi에 대한 라벨임
  • C는 fine category의 개수이고, 이는 자동으로 K coarse category로 grouping될 것
  • Sfjcj =1 과 Sckkk=1은 fine 과 coarse 카테고리에 기반한 이미지 indices의 파티션들임.
  • f와 c는 fine과 coarse 카테고리를 의미함

HD-CNN Architecture

  • HD-CNN 은 계층적 카테고리의 구조를 모방하기 위해서 설계되었음
  • 구조

    image

    • a에서 확이날 수 있듯, fine category들이 coarse 묶음으로 group됨
    • b에서 확인할 수 있듯, end-to-end 분류기법임
  • b에서 확인할 수 있듯, 모델은 크게 4개의 구성으로 나누어 짐
    • shared layers
    • single component B to handle coarse categories
    • multiple components for fine classification
    • single probabilistic averaging layer
  • 추가 설명
    • shared layer들이 raw한 image 픽셀을 받아서 low level feature들을 뽑아냄.
    • shared layer들의 배열은 CNN속 building block 속에 있는 preceding layer와 똑같이 구성됨
  • figure 1의 b를 보면, 구성요소 B에 대한 coarse category의 독립적인 레이어들은 CNN의 building block의 rear layer(후 층) 의 배열을 다시 사용하고, itermediate fine prediction을 생성해냄
    • coarse category prediciton을 생성해내기 위해서 fine-to-coarse aggregation layer을 추가함(fig에는 없음). 이는 fine prediction을 coasre로 축소시켜줌 (P:[1,C]→[1,K])
    • coarse category probability 에는 2가지 큰 목적이 있음
      1. fine cateogry component에 의해서 만들어진 예측을 합치는데에 사용되는 가중치로 사용됨
      2. thresholded된 상황일 때, 상대적으로 large한 coarse probability를 가진 fine category component들을 조건부로 execution함
  • figure1의 b의 아랫쪽을 보면, fine category classifier들로 이루어진 independent layer이 이쏙, 각각의 레이어는 fine category prediction을 진행함.
    • 각각의 fine component는 category의 작은 set을 classifying하는데에만 관여하고, 부분 집합에 대한 미세한 예측을 생성해냄
    • 부분집합에 없는 다른 미세 범주의 확률은 암시적으로 0으로 설정되고, 계층의 구성은 대부분 block CNN에서 복사되는데, final classification layer의 filter 수만 조정됨
  • coase B와 fine component들은 공통된 레이어를 사용하는데, 이 원인은 threefold임.
    1. 참고문헌 35번에 따르면, deep 네트워크에 있는 preceding layer들은 class-agnostic low level feature에 반응하고, rear layers가 좀더 class specific feature을 추출해낸다고 알려졌음.
    2. low level feature가 coarse와 fine classficiation task모두에 중요하니까, preceding layer이 두개의 component(coarse, fine)에서 공유될수 있게 했음
    3. shared layer 는 전체 floating point operation과 memroy footprint를 동시에 줄여줄 수 있음.
  • figure1의 b의 오른쪽 부분에 있는건 probabilisitic averaging layer임.
    • category prediction을 recieve하고, weigthed average를 기반으로 final prediction을 진행함

      image

    • weighted average를 기반으로 최종적인 prediction을 진행함
    • Bik는 이미지xi의 coarse cateogry k에 대한 확률으로, coarse category component B에 의해서 예측됨
    • pk는 fine category component F에 의해서 예측된 fine category prediction임
  • coarse 와 fine category component은 모두 layer configuration을 building block CNN으로부터 reuse하는데, 이는 flexible modular design이 되도록 도왔음

Learning a Category Hierarchy

  • category hierarchy를 building하는 것에 대한 목적은 confuisng fine category를 같은 coarse category로 group해서 fine cateogry classifier를 훈련하는 것
  • 본 연구에서는 training set으로부터 balance된 class distribution을 기반으로 set of image을 무작위하게 샘플링함. 나머지 training set은 block net을 생성하는 훈련을 하는데에 사용됨
  • 본 논문에서는 held-out set으로부터 net을 평가해서 confusion matrix F를 얻을 수 있게 됨.
  • distance matrix D는 아래와 같이 계산됨

    image

    • D는 모든 대각선의 항목이 0
    • D에 spectral clustering이 적용되어서 fine categorie를 K coarse category로 클러스터링 하려 했음
    • 결과는 2개의 계층적 카테고리로, many-to-one mapping 이 됨 (fine에서 coarse로)

Overlapping coarse categories

  • disjoint coarse catgory들을 기반으로 전반적인 classification은 coarse category classifier 에 기반함
  • 만약 이미지가 부정확한 fine category classifier에 기반한다면, mistake가 정정되지 못할 것이고, ground truth label에 대한 확률이 암묵적으로 0으로 setting 되게 됨.
  • coarse category들간의 separability constraint를 지우는 것은 HD-CNN이 coarse category classifier에 덜 의존적이게 할 수 있음
  • 따라서, 본 연구에서는 더 많은 fine 카테고리를 coarse 카테고리에 추가했음.
  • 몇몇의 특정 fine 분류기 Fk에는, coarse 카테고리 k에 잘못 분류되기 쉬운 j만큼의 카테고리를 추가하였음
  • 따라서, 본 연구에서는 fine카테고리 j에 있는 이미지가 coarse category k 에 잘못 분류될 가능성을 예측함

    image

  • Bdik는 fine category probabilities(Bfijj)를 합쳐서 얻은 coarse category probability임
    • mapping Pd에 따름
  • 우리는 가능성 uk(j)를 한계점으로 설정하여서 모든 fine category j를 부분 집합 Skc 에 추가하였음.

HD-CNN Training

  • fine category component를 HD-CNN에 embed했기 때문에, rear layer에 있는 파라미터는 선형적으로 증가햇을 것. 같은 양의 training data가 주어졌을 때, 이건 training complexity를 높임과 동시에 overfitting을 야기함.
  • 반면에, stochastic gradient descent mini batch를 사용한다면, 확률적으로 다른 fine category component으로 속하게 됨?
    • the other hand, the training images within the stochastic gradient descent mini-batch are probabilistically routed to different fine category components.
  • 결론적으로 더 큰 mini batch가 parameter gradient을 위해서 요구되는데, 이는 메모리가 늘어나게 하고 training process를 느리게 함.
  • 따라서, 본 연구에서는 HD-CNN training을 multiple step으로 나눠서 HD-CNN을 완성시키고자 했음

Pretraining HD-CNN

Initializing the Coarse Category Component

  • 먼저 CNN의 building block Fp를 training set을 사용해서 학습시킴. Subscript p는 CNN이 pretrained되었다는 것을 의미함. preceding과 rearlayer 가 모두 CNN에 있는 building block을 모방하기 때문에, coarse category component B를 Fp로 초기화 시킴

Pretraining the Rear layers of fine category components

  • Fine category components(Fk)는 병렬적으로 학습될 수 있음
  • 각각의 Fk는 coarse category k 안에서 fine category를 분류하는데에 특화되어야 함
  • 따라서, Fk를 pretraining하는 것은 coarse category에 해당하는 이미지만을 사용함
  • shared preceding layer은 이미 초기화 된 상태이며, 각각의 Fk를 위해서 본 연구에서는 모든 rear layers(마지막 conv제외)는 pretrained 모델에서 복사됨

    image

5.2 Fine-tuning HD-CNN

  • coarse 와 fine category component들은 적절하게 pretrained한 후에, 본 연구에서는 complete 한 HD-CNN을 위해서 fine tuning을 진행함
  • 계층적 구조와 associated mapping P0이 학습되었기 때문에, 각각의 fine category 구성요소는 cfine category의 fixed subset을 분류하는데에 focus함.
  • fine tunng 중에는, coarse category component으로 인해서 predcited 된 coarse category의 semantic(의미)가 fine category component 와 일관성 있어야 함
  • 따라서, coarse category consistency erm을 추가해서 conventional multinomial logistic loss 를 정규화 하려고 함

Coarse category consistancy

  • Coarse cateogry consistency term은 mean coarse category distribution을 ensure하고, fine tuning시에 mini batch가 잘 보존될 수 있도록 함.
  • 학습된 Fine-to-coarse category mapping은 target coarse category distribution에 specify하는 방법을 제공해 줌.
  • 특히 tk가 전체 training image의 fraction으로 설정됨
  • fine tuning 시에 사용된 Loss Function

    image

    • pyi : 이미지 i에 대한 라벨에 대한 확률
    • tk : fraction
    • Bik : Bik는 이미지xi의 coarse cateogry k에 대한 확률
    • n : mini bach 사이즈(훈련시)

HD-CNN Testing

  • HD-CNN에 fine cateogry component을 추가했음
    • number of params
    • memory footprint
    • execution time in rear layers
    • all scale linearly in the number of coarse categories
  • HD-CNN이 large scale visual recog에도 scalable할 수 있다는 것을 ensure하기 위해서, 본 연구 저자들은 conditional execution과 layer parms compression 기술을 develop하였음

Conditional Execution

  • Test time에서 image가 주어졌을 때 , 전체 fine category classifier을 평가해야하는 것은 아님
  • top relevant fine components의 conditional execution은 HDCNN 분류기를 더 가속화 시킬 수 있음
  • 따라서 임계점 Bik를 parametric 변수로 사용함

Parmeter compression

  • HD-CNN에서 rear layer의 파라미터 수가 늘어나 기 때문에 본 연구에서는 layer parmeter을 압축하는 과정을 거침
  • product quantization을 사용해서 파라미터 매트릭을 compress함
  • 먼저, W를 수평적으로 s개로 나누고, k-means clustering을 row에 행함
    • By only storing the nearest cluster indices in an 8-bit integer matrix Q ∈ Rm×(n/s) and cluster centers in a single-precision floating number matrix C ∈ Rk×n, we can achieve a compression factor of (32mn)/(32kn + 8mn/s), where s and k are hyperparameters for parameter compression.

Experiments

CIFAR100

  • CIFAR 100은 100개의 클래스가 포함되어 있음
  • CIFAR 100에는 5만개의 training image와 1만개의 test image가 있음
  • preprocess는 선행연구 따라서 했는데, 무작위하게 crop , filp해서 26*26의 이미지로 만드는 것
  • 3개의 stacked layer으로 이루어진 NIN network을 사용했고, Fine category component는 conv1~pool1까지의 레이어를 공유했음
  • category를 계층적으로 만들기 위해서 무작위의 1만개의 이미지를 training set으로 부터 뽑아서 held-out set으로 만들었음
  • 같은 coarse category에 있는 fine category는 시각적으로 좀 더 비슷해 보였음
  • 본 연구에서는 fine category component에 있는 rear layer들을 pretrain하였음
  • 초기 lr은 0.01이고, 매 6천번의 iteration마다 decreased되었음
  • Finetuning은 2만개의 iteration에 의해서 perform되었음

Category hierarchy

  • 계층적인 카테고리를 만들기 위해서, clustering algorithm에 의해서 coarse 카테고리의 개수가 조정되었음
  • 우리는 coarse 카텥고리의 개수를 하이퍼파라미터 r을 사용해서 조정할 수 있음. 따라서, 우리는 이러한 효과를 classification error에 반영하려고 했음(?)
  • 5,9,14,19개의 coarse 카테고리를 기반으로 실험을 진행했고, r의 값을 변동하여 실험했음.
  • 가장 좋았던 결과는 9개의 overlapping coarse category들과 r =5일때의 값이었음.

    image

  • 9개의 overlapping coarse category에서의 fine category occurance에 대한 히스토그램

    image

Shared Layers

  • 공유 계층을 사용하면, computational complexity와 memory footprint을 모두 선형적으로 처리할 수 있게 됨
  • We also want to investigate the impact of the use of shared layers on the classification error, memory footprint, and the net execution time (Table 2).

    image

Conditional execution

  • 하이퍼파라미터 b를 varying함으로 인해서 fine category component들의 개수를 효과적으로 다룰 수 있음
  • execution time과 classification error간의 trade off가 있음.
  • B가 크면 더 큰 정확도를 보이고, fine categorization의 component의 개수가 더 많아짐

Parameter compression

  • 본 연구에서는 memory footprint를 447에서 286으로 줄였고, error는 크게 늘지 않았음

Comparison with a strong baseline

  • HD-CNN은 근본적으로 model averaging이랑 다름.
  • Model averaging에서는 모든 모델이 전체 category를 분류해내는게 가능하고, 각각의 카테고리는 독립적으로 훈련됨
    • main source는 서로 다른 초기화를 거침
  • HD-CNN 에서는 각각의 fine category clasifier은 카테고리의 부분 집합만 classify함
  • HD-CNN과 model averaging을 비교하기 위해서, 두개의 CIFAR100-NIN network들을 훈련시키고, 최종 예측을 위해서 그들의 평균 prediction을 사용함

    image

Coarse category consistancy

  • coarse category consistency 의 효율을 검증하기 위해서 HD-CNN을 전통적인 multinomial logistic loss function을 사용한 fine tune HD-CNN을 사용함

Comparison with sate of art

ImageNet 1000

  • 1.2 million 학습 이미지와 5만개의 validation image를 사용함

Network-In-Network Building Block Net

  • public 4-layer NIN net을 첫번째 building block을 선택했는데, 이는 Alexnet에 비해서 훨씬적은 파라미터를 가지고 있지만 적은 오차 rate을 들고 있다는 것이 특징임
  • 원본 이미지들은 256256으로 resize되었으며, 무작위로 잘려지고 수평적으로 reflect되어서 224224 패치들이 만들어졌고 이게 training에 사용되었음.
  • 계층적인 카테고리를 만들기 위해서, 100만개의 training image를 사용했고, 89개의 overlapping coarse category를 찾았음.
  • 각각의 fine category는 fine tune되었고, lr 0.01은 매 1.5만개 iter마다 줄였음
  • HD-CNN에 대한 완전한 fine tuning은 진행되지 않았는데, mini batch size이 상대적으로 building block net에 비해서 컸기 때문임.

    image

Case Studies

  • HD-CNN 가 building block net으로 인해 발생한 mistake들을 어떻게 정정하는지를 알기 위한 연구

    image

    • 첫번째 케이스에서, building block net은 hermint crap을 예츠하는데에 실패했음.
    • HD-CNN에는 2개의 coase category(6과 11) 가 있고, 가장 큰 coarse 확률값을 받았음.
    • fine category인 6은 crab breed을 분류하는데에 좋은 특성을 보였고, 이를 top fine category classfication과 합치면 HD-CNN이 hermint crab을 가장 적합한 레이블로 추정함.
    • Image net-NIN은 hand blower을 다른 plunger과barwell으로 착각했는데, HD-CNN은 coarse category component이 어떤 coarse category에 object이 속하는지에 대해서 확신을 서지 못했고, 따라서 평이한 category probability를 보이는 것을 보여줬지만, 정확히 분류해 냈음

Overlapping coarse categories

  • 분류를 위한 overlapping coarse 카테고리의 impact을 확인하기 위해서, HD-CNN을 90개의 fine category classifier에 학습했고, table 3에 결과가 나와있음