[CVPR 2022] Entropy-based Active Learning for Object Detection with Progressive Diversity Constraint

오랜만에 Object Detection을 위한 Active Learning 논문을 리뷰해보겠습니다. Multi-class가 존재하는 object detection 태스크에서, 보다 정확하고 균일한 데이터셋을 선택하는 방식을 제안한 연구입니다.



Background

Active Learning에서는 레이블이 없는 데이터가 얼마나 성능 향상에 도움이 될 지를 정량화 하는 것이 중요합니다. 정량화한 수치를 기반으로 데이터를 선택하고, 이에 레이블을 붙히고 모델을 재학습하는 것을 반복하기 때문이죠.

위에 있는 오리 사진들이 모두 비슷해 보이지만, 각 이미지가 모델 성능에 미치는 영향은 서로 다를 수 있습니다. Active Learning에서는 앞서 언급한 “모델 성능에 미치는 영향”을 정량화하기 위한 특정한 수식을 제안하곤 합니다. 대표적인 수식으로 Entropy 가 있습니다.

엔트로피 수식

만일 이미 학습된 모델의 출력값으로 두 개의 오리가 위와 같은 확률값이 나왔다고 가정해봅시다. 왼쪽오리: [ 0.14, 0.12, 0.24, 0.5 ] 오른쪽 오리: [ 0.11, 0.22, 0.33, 0.34 ] 두 경우에 대해 엔트로피는 각각 1.758와 1.888입니다. 엔트로피는 예측이 얼마나 불확실한 지를 나타내는 대표적인 수치이므로, Active Learning 에서는 오른쪽 오리 이미지가 더 많은 정보량을 가지고 있다고 판단합니다. (불확실한 오리를 선택한 뒤, 그 이미지에 대한 정답을 알아야 모델이 더 많은 정보를 얻는다는 가정)

다만 Active Learning은 Classification 위주로 연구가 진행되고 있었기에, Object Detection으로 확장하기 위해서는 더 복잡한 설계가 필요합니다. 위에서의 예시에서 살펴봤듯 Classification의 경우 이미지 전체를 고려한 확률값 만으로 데이터의 정보량을 판단하였습니다. 이미지의 정보량을 계산할 때 “어디에 오리가 있는지 혹은 오리가 몇 마리 있는지, 오리의 어떤 영역에 더 집중해야하는 지”는 굳이 고려하지 않아도 됩니다.

Image classification and object detection

그러나 Object Detection은 하나의 이미지에 여러 개의 객체 및 다양한 클래스가 존재할 수 있습니다. 상단 그림이 그 차이를 명확하게 설명해주는데, 이젠 다들 아주 익숙하시겠죠? 그림과 같이 Classification은 고양이라는 하나의 객체가 중심에 자리잡고 있습니다. 그에 반해 Object Detection에서는 고양이가 2마리일 수도 있고, 다른 객체가 동시에 존재할 수 있습니다.

즉, Object Detection에서는 여러 개의 객체가 있을 경우가 많은데, 그 객체 각각이 가지는 정보량이 다를 것입니다. 따라서 이미지가 가지는 정보량을 정확하게 수치화하기 위해서는 이미지 내의 모든 객체를 각각 찾아내고, 각 객체의 클래스와 위치 정보를 정확히 추출하는 것이 중요합니다. 그래야 이미지에 대한 정확한 스코어링이 가능하기 때문이죠.

다시 말해 그동안 Classification에서 사용하던 정량화 기법으로는 여러 instance 가 존재하는 상황을 고려할 수 없다는 것이 가장 큰 한계이죠.

Introduction

Active Learning 에서 데이터를 선택하는 기준은 크게 두 가지가 존재합니다: 1) Uncertainty (불확실성) 2) Diversity (다양성).

1) Uncertainty 의 경우, 결정 경계에 있는 데이터셋이 더 어려우니 이런 데이터셋을 선택해야 모델이 더 많은 정보를 얻을 수 있을 것이라는 전제로 데이터를 선택합니다. 상단 이미지에서 모델이 술빵 이미지를 보고 비숑인지 술빵인지 헷갈려한다면 그 데이터셋을 선택함으로써 술빵 데이터를 확보하고자 하는 것이죠

그에 반해 2) Diversity는 전체 데이터셋을 커버할 수 있는, 그 클래스를 대표하는 샘플을 선택해야 모델이 더 많은 정보를 얻을 수 있을 것이라는 전제 하에 데이터를 선택합니다. 상단 이미지에서는 전신이 나와있고 성견인 비숑 이미지를 선택해서 보다 다양한 비숑 이미지를 커버하고자 하는 것이죠.

각 방법은 명확한 장단점이 존재합니다. 1)은 그 때 그 때 중요한 데이터를 선택하면 됩니다. 현재 내가 가지고 있는 데이터셋은 고려하지 않아도 되죠. 이로 인해 계산 복잡성이 거의 없다고 볼 수 있습니다. 그 때 그 때 모델이 어려워하는 데이터셋을 선택하다보면… 지속적으로 비슷한 데이터가 계속 선택되는 상황이 발생하기도 합니다. 2)의 경우, 가지고 있는 데이터와 선택될 데이터 사이의 유사도를 고려하여 더욱 다양한 데이터를 선택하기 때문에, 1)에 비해 비슷한 데이터가 선택되는 경우가 적긴 합니다. 그러나.. 데이터 별 유사도를 고려해야한다는 점에서 엄청난 계산 복잡도를 요구합니다.

따라서 저자는 이 두 측면의 단점을 완화하고자, 두 가지를 결합한 Hybrid 기반의 Active Learning을 제안하였습니다. 또한 여러 개의 객체가 있을 수 있는 object detection의 특성을 반영하여, 이미지 내 인스턴스의 불확실성을 평가하고, 중복된 인스턴스를 제거하여 이미지와 인스턴스 수준에서의 다양성을 확보하는 방식을 제안하였습니다.

Method

아래 그림이 바로 저자가 제안하는 DivProto 라는 방식입니다. 왼쪽 박스부터 순서대로, Uncertainty -> Diversity(1) -> Diversity(2) 로 봐주시면 됩니다. 지금부터 차근차근 설명드리겠습니다.

1) ENMS for Intra-Image Diversity

본 논문에서는 대표적인 Uncertainty 기법으로 초반에 설명드린 Entropy 를 사용하였습니다. Object Detection의 예측값이 인스턴스에 대한 클래스와 좌표값으로 나오는데, 클래스에 대한 확률값으로 엔트로피를 구합니다.

이미지에 대한 불확실성을 정량화하는 과정은 다음과 같습니다: 레이블이 없는 이미지에 대해 inference를 수행하면, 여러 개의 box가 예측될 겁니다. 이 예측한 박스별로 Entropy를 구합니다. 그런데 Object Detection에서는 종종 같은 이미지 내에서 여러 개의 겹치는 BBox가 생성되곤 합니다. 이를 해결하고자 가장 유력한 하나의 영역만을 남기고 제거하는 NMS 라는 기법이 존재합니다. 저자 역시 동일한 객체에 여러 개의 박스가 수행될 경우를 고려하고자 Entropy에 대한 NMS를 수행하는 ENMS를 제안하였습니다. 이를 통해, 중복된 정보를 제공하는 인스턴스를 제거하여 데이터의 다양성을 확보하고자 하였습니다.

이를 수행하는 과정은 상단 세 가지 이미지를 통해 확인해보겠습니다. 세 가지 이미지에 대해 예측된 박스가 각각 파란색, 초록색, 빨간색과 같다고 합니다. I_1의 경우, 가운데 강아지에는 박스가 2개가 있죠, 이럴 경우 모든 박스에 대해 Entropy를 계산하여 합할 경우 부정확한 값이 도출될 것입니다. (비슷한 정보가 두 번 더해지니까요) 그러므로 이를 제거하는 과정인 ENMS를 수행합니다.

  1. 인스턴스 별 불확실성 계산: 이미지 내 각 객체 인스턴스에 대해 엔트로피를 계산합니다. 높은 엔트로피 값은 해당 인스턴스가 더 불확실하다는 것을 의미합니다.
  2. 가장 불확실한 인스턴스 선택: 계산된 엔트로피 값을 기반으로, 가장 높은 엔트로피 값을 가진 인스턴스를 선택합니다.
  3. 유사성 비교 및 중복 제거: 선택된 인스턴스와 같은 클래스에 속하면서, feature space 상 에서 높은 유사성을 가지는 다른 인스턴스들을 찾아 제거합니다. Cosine Similarity를 사용하며, 이 유사도가 일정 값 (T_{enms} = 0.5)보다 높은 경우 중복되는 인스턴스라고 간주하고 제거합니다.
  4. 반복: 모든 인스턴스가 선택/제거될 때까지 해당 과정을 반복합니다.

위의 이미지가 바로 1번 과정입니다. 이미지내 각 객체에 대한 엔트로피를 계산하고, 모든 객체에 대한 엔트로피를 합한 것을 가장 위에 있는 박스로 나타낼 수 있습니다. 이 때, 빈 원이 바로 예측된 객체 박스를 의미합니다.

이에 대해 ENMS를 수행하여 비슷한 객체를 제거한 것이 오른쪽 박스와 같습니다. 분명 ENMS 과정을 수행하기 전에는 I_1 이 가장 정보량이 많은 데이터였으나, 중복된 박스를 처리하고 나니 I_2 가 가장 정보량이 많은 이미지로 처리되는 것을 확인할 수 있습니다.

지금까지 설명한 ENMS을 정리한 것이 위의 이미지입니다. I_i는 이미지를 k는 예측된 인스턴스, \mathbb{H}는 엔트로피를 의미합니다.

2) Diverse Prototype for Inter-Image Diversity

앞서 저자는 Uncertainty와 Diversity를 결합한 Hybrid 방식의 Active Learning 을 제안했다고 하였습니다. 앞 단원에서는 인스턴스 별 불확실성을 계산하는 방식을 알아보았습니다. 지금부터는 Diversity를 고려하는 방식에 대하여 알아보겠습니다.

저자는 이미지 간의 다양성을 보장하기 위해 인스턴스들을 클래스별 프로토타입으로 계산하고, 이 프로토타입 간의 유사성을 기반으로 데이터를 선택하였습니다. 이 과정에서 클래스 내(Intra-class) 다양성과 클래스 간(Inter-class) 다양성을 모두 고려하여 학습할 데이터를 선택합니다.

Intra-class diversity

Object Detection에서는 이미지 내 여러 객체를 탐지해야 하고, 같은 클래스에 속하는 객체들이 여러 이미지에 존재할 수 있습니다. 이때, 같은 클래스 내에서도 다양한 형태, 크기, 위치 등의 변화가 있습니다. 하지만, Active Learning 과정에서 너무 유사한 객체들만을 선택하게 되면 학습 모델은 그 클래스의 특성을 충분히 학습하지 못하게 되어 성능 저하로 이어질 수 있습니다. 따라서, 같은 클래스 내에서도 최대한 다양한 객체를 선택하는 것이 중요합니다.

다만 이미지 내에 존재하는 모든 객체의 다양성을 고려하려면 계산 복잡도가 엄청나게 늘어납니다. 100장의 이미지가 있다고 가정하고 각 이미지 별로 객체가 2개씩 검출된다면, 총 200개의 객체와 선택될 객체와의 다양성을 비교해야 합니다. 객체가 3-4개가 검출된다면.. 고려해야하는 객체는 더욱더 커지게 됩니다. 따라서 저자는 Prototype을 사용하였습니다. 프로토타입이란, 이미지 내 동일한 클래스를 가지는 객체의 feature의 평균을 취해 대표적인 샘플을 만드는 “해당 클래스의 중심적인 특징을 대표하는 벡터” 입니다.

이제, 새로운 이미지의 객체들이 기존에 선택된 이미지들의 프로토타입과 얼마나 유사한지를 측정합니다. 유사도는 마찬가지로 코사인 유사도로 계산되며, 유사성이 높은 경우에는 해당 이미지가 클래스 내에서 중복된 정보를 포함할 가능성이 높다고 판단합니다. 그리고 Intra-class diversity를 유지하기 위해, 유사성이 높은 이미지들은 선택에서 제외합니다. 즉, 새로운 이미지의 객체들이 기존에 선택된 이미지의 프로토타입과 유사성이 높은 경우, 해당 이미지를 학습 데이터로 선택하지 않음으로써 중복을 줄이고, 클래스 내에서 다양한 데이터를 확보하게 됩니다. 이를 수식으로 나타낸 것이 아래 수식 (4) 와 같습니다.

설명보다는 역시 예시를 통해 알아보는 게 이해가 쉽겠죠?

Intra-class diversity에서는 이미지를 선택할 때 보다 다양한 객체를 선택하는 것을 목표로 합니다. 따라서 이미 선택된 데이터가 가지는 객체끼리 비교하고, 유사도가 보다 낮은 객체를 선택하는 것을 목표로 합니다. 현재 이미지가 class 1과 class 2에 대한 프로토타입이 있다고 한다면, 수식 (4)에 의해 선택된 ∆S 이미지의 프로토타입과 모두 비교를 합니다.

그럼 위와 같이 A, B, C, D, E에 대한 유사도가 계산이 될 겁니다. 그럼 수식 (4)에 따라서 min(max(A, B, C), max(D, E))인 값을 M_g로 설정합니다. 그리고 이 M_gT_{intra}보다 작으면, 데이터를 선택합니다.

class 1이 강아지, class 2가 고양이라고 한다면.. 현재 이미지를 선택할지 말지를 결정할 때, 강아지 프로토타입별 가장 큰 유사도랑 고양이 프로토타입별 가장 큰 유사도가 더 작은 값을 기준으로 임계값보다 작을 경우, 그 객체는 기존에 가진 객체와 다른 경향이 있다고 처리하고 데이터를 선택하는 것입니다.

Inter-class diversity

객체 탐지 작업에서는 여러 클래스에 속하는 다양한 객체들이 존재합니다. 만약 학습 데이터가 특정 클래스에만 집중된다면, 모델은 그 클래스에 대해서는 잘 학습할 수 있지만, 다른 클래스에 대해서는 성능이 떨어질 수 있습니다. 따라서, 모든 클래스가 균형 있게 학습될 수 있도록 다양한 클래스를 포함하는 데이터를 선택하는 것이 중요합니다. 이것이 Inter-class diversity를 유지해야 하는 이유입니다.

한줄로 요약하면 데이터를 선택할 때, 클래스 분포를 고려해서 적은 개수를 가진 클래스부터 선택한다는 뜻이죠. 이를 위해, 우선 클래스 별 할당량 설정합니다. 데이터셋 내에 있는 클래스들 중에서 상대적으로 적게 나타나는 클래스들을 “소수 클래스(minority class)”로 정의합니다. 각 소수 클래스에 대해 더 많은 할당량을 부여하여, 학습 데이터에 이러한 클래스들이 충분히 포함될 수 있도록 합니다. 데이터를 선택할 때 이 소수 클래스가 속할 경우 먼저 선택하고, 할당량을 충족했을 때 다른 클래스를 선택하자는 취지죠

클래스 별 할당량을 선택하는 방식은 상단 수식과 같습니다. b는 active learning에서 추가되는 데이터셋 크기이고, C는 클래스의 개수입니다. 상단 수식을 아래와 같이 변형해보겠습니다

b/C는 사실 클래스 별로 이상적으로 데이터가 선택되는 크기를 의미합니다. 1,000개의 데이터가 선택된다고 했을 때, class가 10개인 데이터셋이라면 클래스 균형을 고려해서 100개 씩 선택되는 것이 이상적이겠죠? 그런데 Active Learning에서는 초기 데이터셋이 랜덤으로 선택되기 때문에 처음 가진 데이터셋의 균형이 맞지 않을 수 있습니다. 따라서 적은 클래스를 더 많이 선택해서 클래스 균형을 맞추고자 할당량이라는 것을 제안했고, β=0.75 α=0.5로 설정하였다고 합니다. 즉, 소수 클래스는 이상적인 개수에 1.5배를 선택하게 강제하는 기법이죠.

그럼 다시 선택과정으로 돌아와서, 현재 이미지 선택 여부를 결정할 때 이미지가 소수 클래스의 객체를 포함하는지 확인합니다. 이를 위해, 이미지 내 객체가 소수 클래스에 속할 확률인 M_p를 계산합니다. M_p를 구하는 수식은 아래 수식(5)와 같습니다.

이 확률인 M_p가 특정 임계값 T_{inter}​보다 크면, 해당 이미지는 소수 클래스를 포함하는 것으로 판단하고 학습 데이터로 선택합니다. 각 소수 클래스에 대해 설정된 할당량을 다 채우게 되면, 해당 클래스는 더 이상 소수 클래스로 간주되지 않으며, 다른 소수 클래스들이 우선적으로 선택됩니다. 이렇게 함으로써 학습 데이터는 모든 클래스에 대해 균형 있게 구성됩니다.

지금까지 설명한 Diverse Prototype에 대한 알고리즘을 위에서 확인할 수 있습니다.

Experiments

MS COCO & Pascal VOC

MS COCO 데이터셋은 80개의 객체 카테고리로 구성된 대규모 데이터셋으로, 실험에서는 전체 데이터셋의 일부만 사용하여 학습한 후, 제안된 방법의 성능을 평가했습니다. 그 결과 그림 3의 (a), (b)와 같이 모든 사이클에서 우수한 성능을 보였습니다.특히, 학습 데이터의 양이 10% 미만으로 제한된 경우에도 저자의 방식이 가장 우수한 성능을 보였습니다.

Pascal VOC 데이터셋은 20개의 객체 카테고리로 구성된 데이터셋으로, 제안 방법은 7천장의 이미지로 73.68%의 mAP를 기록했습니다. 이는 다른 방법들이 동일한 성능을 내기 위해 8,000개 또는 10,000개의 이미지를 필요로 한다고 합니다.

Ablation Study

제안된 방법의 각 구성 요소(Entropy, ENMS, DivProto) 평가하기 위한 실험 결과, ENMS 또는 DivProto를 단독으로 사용한 경우, Random 보다 높은 성능을 보였으며, 두 가지를 결합한 경우 더 높은 성능 향상을 가져왔습니다. ENMS와 DivProto를 결합한 방법은 학습 데이터의 양이 증가함에 따라 AP 성능이 꾸준히 증가했다고 합니다.

또한 테이블 2에서 α, β와 같은 하이퍼 파라미터에 대한 ablation study도 진행했고 0.5, 0.75 세팅이 가장 성능이 좋았다고 합니다.

테이블 3에서는 MS COCO 데이터셋에서 ResNet-101을 백본으로 사용하는 Faster R-CNN 모델을 기반으로 다양한 비율의 레이블 셋을 사용하였을 때의 성능입니다. 이 실험은 ResNet-101 백본을 사용하는 경우에도 제안된 방법이 얼마나 효과적인지를 확인하기 위해 수행되었고, 그 결과 제안한 방식이 항상 일관되게 효과적인 결과를 보임을 확인하였습니다.

TSNE

마지막으로 Entropy 기반 방법이 생성한 프로토타입의 분포와 TSNE를 비교한 결과입니다. 그 결과 그림 4는 제안된 DivProto 방법이 객체 탐지에서 클래스 간 및 클래스 내의 다양성을 효과적으로 관리하고 있음을 시각적으로 보여줌을 확인할 수 있습니다,


직면한 문제를 하나하나 해결하고자 잘 설계한 논문이라고는 생각이 들긴 합니다만.. 워낙 미세한 성능 향상이기에.. 원복이 안되어서 코드 공개를 안하나..? 라는 합리적 의심이 들긴 한 논문이었습니다…. 코드 공개를 하지 않은 탓에 다른 논문에서도 비교 실험을 수행하지 않았고.. 아쉬운 점이 좀 있네요.

Author: 홍 주영

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다