논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Hierarchical Novelty Detection for Visual Object Recognition

1. Introduction

기존의 CNN 구조는 학습 때 보았던 미리 정해진 클래스 셋을 인식하도록 학습되었습니다. 하지만 실제 사용할 때에는 보지 않았던 새로운 객체들이 나타나게 됩니다. 이에 기존의 CNN 구조를 확장하여 객체의 novelty를 탐지할 수 있는 능력이 필요로 하게 되었습니다. 기존의 방법들은 confidence score를 활용하여 uncertainty를 측정하는 방법을 사용했기에 너무 ambiguous한 방법이었습니다. 예를 들면 학습할 때 보지 않았던 다른 고양이 같은 이미지가 입력될 경우, 새로운 객체라는 것을 인식하기는 하지만 고양이의 새로운 종이라는 것을 인식할 수는 없습니다.

이런 문제를 해결하기 위해 새로운 분류 프레임워크를 제안합니다. 이 프레임워크는 계층적 분류 체계를 활용합니다. 각 클래스는 상위어와 하위어 관계를 가지게끔 하여 새로운 클래스가 입력되더라도 가장 관련있는 레이블로 분류되도록 하였습니다.

그림에서와 같이 새로운 고양이, 새로운 개, 새로운 동물 등으로 구분을 하는 것이 목표입니다. 이것을 hierarchical novelty detection 작업이라고 하겠습니다. 기존의 분류기들이 closed set의 클래스들에서만 이루어졌다면, 이 프레임워크에서는 클래스의 도메인을 분류 정보릉 이용한 open set으로 확장이 필요한 응용을 하고자 할 때 유용합니다.

이를 위해 top-down과 flatten 2개의 접근 방법을 제안합니다. Top-down 방법은 각 수퍼 클래스가 confidence-calibrated 분류기를 가져, 분포가 유니폼 분포에 가까우면 새로운 클래스라고 판단하는 방법입니다. Flatten 방법은모든 disjoint된 클래스들 모두에 대해서 소프트맥스를 계산한 뒤, 가장 세세한 단계에서 알고 있는 클래스인지 모르는 클래스인지 판단하는 방법입니다.

또한 두개의 방법을 통합하여 성능이 더 높아질 수 있음을 보였습니다.

2. Related work

3. Approach

3.1. Taxonomy

클래스간 계층적 관계를 나타내기 위해서, 분류 계통의 각 노드는 하나의 클래스나 구분할 수 없는 클래스들을 나타내도록 하였습니다. 여기서 클래스는 3가지 종류로 정의하였습니다. 1) known leaf class는 자식이 없는 노드로 학습 중에 보여주는 클래스, 2) super class는 leaft class의 조상으로 역시 알고 있는 클래스, 3) novel class는 학습 중에 보지 못하는 클래스로 계층에서도 명시적으로 나타나지 않습니다.그리고 leaf class와 novel class는 모두 자식이 없고 disjoint되어있습니다.

프레임워크에서는 먼저 known leaf class와 super class들로 분류 트리를 구성하고, 테스트할 때에는 가장 세부적인 레이블을 추정하도록 합니다. 만약 이미지가 새로운 클래스로 추정될 경우 super class 중 가장 가가운 클래스라 생각되는 하나로 할당하도록 합니다.

계층적 관계를 나타내기 위해 $\mathcal{T}$를 모든 known class들, $\mathcal{P}(y)$는 한 클래스 $y$의 부ㅜ모를, $\mathcal{C}(y)$는 자식 셋을 나타내도록 하겠습니다. $\mathcal{A}(y)$는 그 자신을 포함한 조상 셋을 나타내며 $\mathcal{N}(y)$는 가장 가까운 클래스가 $y$인 새로운 클래스들을 나타냅니다. $\mathcal{L}(\mathcal{T})$는 $\mathcal{T}$의 아래에 잇는 모든 known leaf들을 나타내며, 따라서 $\mathcal{T} \backslash \mathcal{L}(\mathcal{T})$는 $\mathcal{T}$내의 모든 super class들을 나타냅니다.

학습과 테스트 과정에서 $\mathcal{N}(y)$에 대한 정보는 없기에 하나의 클래스로 간주하였습니다.

3.2. Top-down method

계층적 분류를 하는 방법으로 가장 자연스러운 것은 뿌리 클래스로부터 top-down 으로 내려가는 방법입니다. $(x, y) \sim P_r(x, y|s) $ 수퍼 클래스 $s$에서 샘플링된 이미지와 레이블이라고 할때, 그리고 $y \in \mathcal{C}(s) \cup \mathcal{N}(s) $일 때, 분류 규칙은 다음과 같습니다.

$ \hat{y} = \begin{cases} \underset{y'}{\operatorname{\arg \max}} Pr(y' | x, s; \theta_s) \text{ if confident}\\ \mathcal{N}(s) \text{ otherwise} \end{cases}$

여기서 $\theta_s$는 $\mathcal{C}(s)$의 모델 파라미터로 $Pr(\cdot|x,s;\theta_s)$는 수퍼클래스 $s$에서 이미지 $x$가 주어졌을 때의 카테고리들의 분포입니다. Top-down 분류기는 클래스 추정이 leaf class나 not confident에 다다를 때까지 추정을 계속합니다. Confident는 유니폼 분포와의 KL divergence로 측정할 수 있습니다. 다음과 같이 $\lambda_s$와의 크기를 비교하여 confident를 판단할 수 있습니다.

$$ D_{KL}(U(\cdot | s) || Pr(\cdot|x, s; \theta)) \geq \lambda_s$$

Confidence calibrated classifier를 학습 시키기 위해, $s$와 disjoint된 클래스들을 이용합니다. $\mathcal{O}(s)$를 $s$와 그 후손을 제외한 나머지 모든 클래스라고 한다면, 학습의 목표 함수를 다음과 같이 사용합니다.

$$ \min_\theta \mathbb{E}_{Pr(x,y,|s)} [ -\log Pr(y|x,s;\theta_s)] + \mathbb{E}_{Pr(x,y,|\mathcal{O}_s))} [ D_{KL} (U (\cdot|s) || Pr(\cdot|x, s; \theta_s)) ] $$

하지만 top-down 방법의 단점은 계층이 깊어질 수록 분류 에러가 누적되어 어느 한 분류기가 좋지 않은 성능을 낼 경우, 하위 분류들을 다같이 성능이 낮아진다는 단점이 있습니다. 또한 어느 한 클래스가 여러 부모를 가질 경우, 틀린 분류가 될 수 있습니다.

3.3. Flatten method

Flatten 방법은, 수퍼 클래스 $s$의 확률을 $Pr(s|x) = \sum_{y \in \mathcal{C}(s)} Pr(y|x) + Pr(\mathcal{N}(s)|x)$로 나타내고, 이를 루트 노드에 적용하여 모든 하위 노드들에 대하여 $\sum_{l \in \mathcal{L}(\mathcal{T})} Pr(l|x) + \sum_{x \in \mathcal{T}\backslash \mathcal{L}(\mathcal{T})} Pr(\mathcal{N}(s) | x) = 1$ 이라고 생각하는 것입니다. 여기서 $\mathcal{N}(s)$는 수퍼 클래스 $s$ 아래에 있는 하나의 novel 클래스로 각 수퍼 클래스마다 가상으로 추가됩니다.

이제 $(x, y) \sim Pr(x,y)$는 가장 세부화된 레이블과 그 이미지 쌍으로 다음과 같은 분류 규칙에 의하여 추정됩니다.

$$ \hat{y} = \underset{y'}{\operatorname{\arg \max}} Pr(y'|x;\theta)$$

여기서 $y'$는 known leaft 이거나 novel class입니다. 이를 학습할 때의 문제점은 novel class에 대한 정보가 없다는 것입니다. 이를 해결하기 위한 방법을 알아보겠습니다.

Data relabling. 이 방법은 일부 학습 샘플들을 그 계층 내에서 조상으로 다시 레이블하는 것입니다. 이렇게 하면 다시 레이블링된 샘플들은 해당 수퍼 클래스 아래의 novel class로 간주할 수 있습니다. 이것은 세세한 레이블 단위와 듬성한 레이블 단위의 클래스를 함께 학습하는 방법과도 같습니다.

Leave-one-out strategy. 이 방법은 학습 중에 계층의 일부를 임시로 제거하여 novel class를 모델링하는 것입니다. 학습 레이블 $y$에 대해서 반복적으로 분류 $\mathcal{T}$에서 어떤 조상 $a \in \mathcal{A}(y)$를 제거한 계층 $\mathcal{T} \backslash a $를 정의합니다. 이제 이 클래스들을 novel class를 학습하기 위해 사용합니다. 이 방법을 leave-out-one (LOO)라고 부르고자 합니다. 목적 함수는 다으모가 같습니다.

$$ \min_\theta \mathbb{E}_{Pr(x, y)} [ -\log Pr(y|x;\theta_{\mathcal{L}(\mathcal{T})}) + \sum_{a \in \mathcal{A}(y)} - \log Pr(\mathcal{N}(\mathcal{P}(a))|x;\theta_{\mathcal{T} \backslash a})] $$

앞에서 언급한 통합하는 방법은, 먼저 top-down 방법을 통해 여러 softmax 확률 벡터를 구하고, 다음 모든 확률의 concatenation을 LOO 모델의 입력으로 사용할 수 있습니다.

4. Evaluation: Hierarchical novelty detection

5. Evaluation: Generalized zero-shot learning

6. Conclusion


Add a Comment Trackback