Object Detection을 위한 Active Learning 을 수행한 초창기 논문에 대해 리뷰해보려고 합니다. Active Learning이라는 연구에서는 대부분이 Classification 위주로 진행되고 있습니다. 그러나 실제 산업계에서는 Classification 보단, 다른 다운스트램 태스크를 원하고 있고 또한 2024년 새롭게 작성한 과제 제안서에, active learning for object detection 에서 확장하는 것을 연구 목표로 삼았기에, 오늘부터 차근차근 Active Learning 에서 object detection을 어떻게 수행하고 있는 지 리뷰해보려고 합니다.
[ICCV 2019] Active Learning for Deep Detection Neural Networks

- Title: [ICCV 2019] Active Learning for Deep Detection Neural Networks
- Supplemental: Link
- Code: GitHub
Introduction
Active Learning은 라벨이 없는 데이터셋(Unlabeled Dataset)에서 현재 모델의 지식을 더 많이 향상시킬 수 있는 하위 데이터셋을 고르는 연구입니다. 결국 Active Learning을 통해, 라벨이 없는 데이터 각각은 얼마나 모델에게 도움이 될 지 정량화되게 됩니다. 이 때, “라벨이 없는 데이터(Unlabeled Data) 각각”이 모델에 얼마나 도움이 되는지를 정량화하는 방식은 다양한데, 많은 연구들이 기 학습된 모델을 활용하는 방식을 많이 사용하고 있습니다. 예를 들어, 이미 학습이 완료된 모델에 unlabeled data를 입력으로 넣고, 그 출력인 어떤 확률 벡터를 사용하여 모델에게 도움이 될 정도를 수치화하는 방식이 대표적입니다. 대부분의 연구가 Classification으로 수행되고 있기 때문에, 이미지 하나 당 출력되는 하나의 확률 분포만을 사용하여 정량화 함수를 비교적 간단하게 설계할 수 있습니다.
그러나 객체와 배경이 가지는 시각적 정보 혹은 그 생김새가 상당히 다르기 때문에, 단순히 Classification이 아닌 Object Detection으로 문제를 확장하려는 요구는 꾸준히 증가하고 있습니다. Object Detection으로 Active Learning 을 수행하기 위해서는, 기존 Classification에서 취하는 방식인 객체와 배경을 모두 포괄한 하나의 확률벡터를 사용하여 정량화를 하기보다는, Object 각각에 대한 출력을 모두 고려한 하나의 정량화 지표 통해 모델의 지식을 향상시킬 데이터셋을 찾아야 합니다. 따라서 핵심은 BBox의 Classification 말고, 좌표에 대한 출력은 어떻게 정량화에 적용할 지가 될 듯 합니다.
본 연구에서는 Object Detection을 위한 Active Learning 수행하는 방식을 제안하였습니다. 이를 위해 어떤 데이터가 모델의 지식을 더 많이 향상시킬 수 있을지를 결정하는 스코어링 방식을 Object Detection에 적합하도록 설계하였습니다. 앞서 Detection을 위해서는 localization에 대한 고려가 필요하다고 하였는데, 저자는 이를 픽셀 단위의 classification으로 문제를 해결하고자 하였습니다. 또한 앞서 픽셀 레벨로 구한 스코어를 이미지 단위로 확장할 수 있도록 적절한 픽셀레벨 통합 방식을 제안하였습니다. 픽셀 단위로 구한 스코어를 이미지 단위로 스코어를 통합해야, 여러 Unlabeled 이미지 중에서 어떤 데이터를 선택해야할 지를 판단할 수 있기 때문이죠. 본 저자가 제안하는 Active Learning for Object Detection 자세한 방법론은 Method 섹션에서 자세히 설명드리도록 하겠습니다.
Contribution w/ Related work
저자들이 말하는 기존 연구들과의 차별점은 크게 3가지가 존재합니다.
1) Active Learning 에서 흔히 사용하는 불확실성 측정 함수가 아닌 새로운 픽셀 단위의 스코어링 방식을 제안하였다는 점입니다. 아무래도 기존 불확실성 측정 함수는 Classification을 중심으로 연구가 수행되었기 때문에, 위치 정보까지 고려할 수 있는 픽셀 단위의 스코어링 방식이 보다 Object Detection에 적합하다는 것이 저자의 주장입니다.
2) image 단위의 스코어를 구하기 위해, 픽셀 단위의 score 전체를 평균/최대값 을 취하는 ‘단순 병합 방식’ 을 사용하였으나, 저자들이 제안하는 새로운 병합 방식이 유의미함을 실험을 통해 보였다고 합니다.
3) 이미지 데이터셋이 아닌 비디오 데이터셋에서도 잘 동작하는 메소드를 설계하였다고 합니다. 비슷한 시간대에 수집된 이미지의 경우, 공간적 중복성이 많은 비디오 데이터셋에서도 Active Learning이 잘 수행된다고 합니다. 이는, 데이터셋 사이의 중복성이 비디오만큼 크지 않은 기존 이미지 데이터셋보다 높은 확장성을 가지고 있다는 의미입니다.
Method
본격적인 논문 설명에 앞서 몇 가지 정의에 대해서 언급해보겠습니다.
임의의 이미지 X가 주어졌을 때, x_1는 이미지 중 일부 패치를 의미하고, x_2는 \epsilon 픽셀만큼 변환하여 얻은 또 다른 패치라고 정의하겠습니다.
x_1 = X_{m_1:m_2,n_1:n_2}
x_2 = X_{m_1\pm\epsilon:m_2\pm\epsilon,n_1\pm\epsilon:n_2\pm\epsilon}
이 때, 충분히 잘 학습된 모델이라면, x_1, x_2가 서로 유사한 확률 분포를 예측할 가능성이 높다고 가설을 세워보겠습니다. 이때, x_1과 x_2 사후 확률 사이의 차이(Divergence)를 D(\theta(x1)|| \theta(x2))라고 정의하면, TP와 TN 예측에 대해 D가 작고, 반면 FP FN예측에 대해서는 D가 클 거라고 가정할 수 있게 됩니다. 따라서 저자는 이를 통해, FP FN예측의 수를 줄이는 것을 목표로 하는 Active Learning 학습 방법론을 제안하고자 하였습니다.

상단 그림과 함께 저자가 제안하는 방법론의 프레임 워크를 설명드리겠습니다. 우선 initial Labeled set으로 모델을 학습합니다. 그런 다음 앞서 학습한 Detector로 Unlabeled dataset을 입력으로 넣어주어 예측을 수행합니다. 해당 Detector의 output 은 K개의 중간 피처를 채널축으로 concat한 shape을 가집니다. 그리고 모든 피처는 input 이미지 shape과 동일하기 때문에, K개의 아웃풋에 대하여 pixel-level의 *informativeness score를 계산합니다. 그런 다음 하나의 이미지가 가지는 고유의 값을 구하기 위해 각 픽셀의 Informativeness score를 통합합니다. 그럼 Unlabeled Dataset에서 최종적으로 구한 이미지 단위의 Informativeness score를 기준으로 높은 값을 가지는 B개의 데이터를 선택하고, 라벨과 함께 Labeled dataset에 추가합니다.
*informativeness score: 해당 데이터가 모델에 얼마나 도움이 될 지를 정량화한 수치, Active Learning 에서는 이 값을 기준으로 Labeled Pool에 포함시킬지/말지가 결정됨. 모든 Unlabeled Dataset 에 대하여 informativeness score를 구하면 각 데이터마다 고유의 값이 산출됨. 그럼 각 값에 대해 정렬한 뒤, B개 (Labeled Pool에 추가될 사전 정의된 데이터셋의 크기)의 데이터셋을 추가하는 방식으로 Active Learning 이 수행됨.
이제부터, 프레임워크를 기준으로 순차적으로 각 단계에 대해 설명드리도록 하겠습니다.
1) Network Architecture
Active Learning 에서는 해당 데이터를 학습 데이터로 추가하면 얼마나 모델에게 도움이 될 지를 설계한 Acquitision Score**를 통해 정량화하고, 그 값들을 정렬하여 다음 학습에 사용할 데이터를 일정 개수만큼 선택합니다. 그리고 Acquitision Score를 설계하는 데에 대개 모델의 예측값을 활용합니다. 본 논문의 저자는 Acquitision Score에 입력에 대한 각 픽셀 별 예측값을 기반으로 설계하였습니다. 즉, 각 픽셀 별 classification 예측 확률값을 기반으로 Acquitision score를 설계하였습니다.
** 본 논문의 저자는 Informativeness score라고 언급함

우선 저자는 디텍터의 백본으로 FPN과 유사한 구조를 사용하였으나, 너무 무거워서 다소 가벼운 디코더의 여러 중간 피처를 사용하였습니다. 이 때, pixel 단위로 예측값을 구하기 위해서는, output 의 shape 역시 image 와 동일해야하기 때문에, bilinear upsampling 을 사용하여 중간 피처의 크기를 input과 동일하도록 설계하였습니다.
또한 백본 모델에 있는 Fire Residual은 SqueezeNet[1]의 일부 모듈을 그대로 사용했다고 합니다. SqueezeNet은 CNN 경량화를 위한 네트워크로서, 어떻게해야 성능 하락없이 보다 적은 파라미터를 사용할 수 있을지에 대한 관점으로 3×3 filter 대신 1×1 을 사용하는 등 다양한 방식을 제안한 논문으로, 앞서 너무 무거운 백본을 다소 수정하였다는 목적과 부합하여 다소 가벼운 네트워크를 구성하고자 따른 설계인 듯 합니다.
[1] SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size
지금까지는 백본 설계에 대한 것이고, 그것보다 핵심은 저자가 score를 도출할 때, 여러 개의 중간 피처들을 사용하였다는 점인데요. 상단 네트워크 그림 중 빨간색 박스로 표시된 Predict 가 바로 score 계산을 위해 사용한 피처입니다. 그림에 따르면 총 5개의 중간 피처를 사용했음을 알 수 있습니다. 또한 각 피처의 크기는 input shape과 동일합니다. 여기서, 중간 피처 {\theta^1, \theta^2, \theta^3, \theta^4, \theta^5}가 각각 {270×160, 225×130, 145×80, 80×50, 55×31} 크기의 BBox를 포함하도록 네트워크를 설계하였습니다. 여기서 \theta^1은 인코더의 마지막 레이어에 연결된 피처를 나타내고 \theta^5는 디코더의 끝에 있는 피처를 나타냅니다.
2) Pixel-level score
본 방법론 설명을 시작할 때, FP와 FN 픽셀 근처에서 예측 확률 분포 사이의 Divergence가 높아야한다는 가설을 세웠었는데요. 다시 말해, 예측의 차이(Divergence)를 로컬하게 계산하면, 픽셀의 예측이 잘못된 정도를 대략적으로 추정할 수 있다는 의미입니다.

가설부터 위 설명까지 이해가 안되시는 분들이 꽤 있을 것 같습니다. 조금 풀어서 설명드리자면.. 상단 이미지 처럼 빨간색 패치가 존재한다고 해봅시다. 이 때, 픽셀이 약간 이동 했을 때의 패치가 파란색이라고 한다면 둘은 동일하게 사람이라는 출력을 내야한다는 것이 저자들이 세운 가설입니다. 즉, 많은 픽셀을 이동하지 않는다는 가정에서, 두 개의 패치는 서로 비슷한 확률값을 뱉어야한다는 가정입니다. (당연히 많이 이동할 경우 왼쪽에 있는 자동차에 패치가 위치하여 다른 확률값을 가지겠죠, 여기서 핵심은 크게 이동하지 않을 때 입니다.) 따라서 비슷한 위치에 존재하는 두 가지의 패치임에도 불구하고, 서로 다른 확률분포를 가진다면 앞서 정의한 Divergence가 커질거고, 이는 곧 FP or FN 일 가능성이 크다는 것이기 때문에, 모델이 헷갈릴 데이터를 넣어서 조금 더 많은 정보를 가지게 하자는 취지였습니다.
따라서 저자는 5개의 피처끼리 얼마나 다르게 예측하는 지를 통해 데이터의 acquitision score를 설계하고자 하였습니다. (앞서 저자가 설계한 백본을 통해 output 은 총 5개의 중간 피처로 구성되었다고 설명드렸죠). 즉, 좌표 (i, j)를 중심으로 주변 영역에서 서로의 예측이 얼마나 다른지를 나타내는 점수 행렬 S를 설계하고자 하였습니다.
이를 위해 \theta^k의 (i, j)에서의 예측값을 p^k_{i j}로 표시하면, 픽셀 (m, n)의 score를 구하기 위한 첫 번째 단계는 다음과 같이 주변 반경 r에 대한 값이며 아래와 같이 나타낼 수 있습니다.

다음으로 K번째에 대한 (m,n의 score는 다음 수식 (2)와 같이 도출되는데, 여기서 H는 엔트로피 함수를 의미합니다.

최종적으로 (m,n)에 대한 Score는 모든 피처에서 동일한 score를 합산하여 픽셀 별 스코어를 도출합니다.

3) Aggregating score
이제 어떤 데이터를 선택해서 다음 데이터에 추가할 지, 각 이미지 별 Informativeness socre를 계산할 차례입니다. 앞서 구한 pixel 단위의 score를 하나의 값으로 어떻게 통합할 지에 대한 설명입니다.

저자는 이미지를 상단 그림과 같이 겹치지 않는 일정 영역으로 나눈 다음, 영역 별 최대 점수를 계산하고자 하였습니다. 그런 다음 각 영역의 최대 점수를 최대값으로 표시하면, 최대 풀링된 점수의 평균으로 이미지 수준 score Z를 계산하고자 하였습니다. 이를 계산하기 위한 공식은 아래 수식 (5)와 같습니다. 아래 수식에서 D_p는 max-pool된 영역의 총 개수입니다.

Experiment
Datasets
실험을 위해 사용한 데이터셋과 정보는 아래와 같습니다.

Time-to-completion vs. budget:
우선 저자는 추가되는 데이터셋 크기인 b를 어떻게 설정하였는지를 보이기 위한 aBlatation study 먼저 수행하였습니다. 즉, 적절한 b를 찾는 것이 중요하다는 실험을 보였습니다.
Active Leanring 을 통해 최종적으로 B개의 데이터에 대한 라벨링을 원한 다고 했을 때, 각 사이클마다 b개의 데이터를 선택해야 합니다. 이 때, b를 어떤 값으로 설정할지도 중요한 요소라고 저자가 주장하였습니다. 예를 드러, b 값이 부적절하면 Active LEarning 전체 완료 시간이 늘어날 수 있다고 합니다.

상단 그림은 칼텍 데이터셋 51, 363개 프레임에 대해 서로 다른 값의 b와 B를 사용하여 제안하는 방법의 전체 완료 시간을 나타낸 것입니다. B = 7500이라고 가정하면, b = 2500의 경우 완료하는 데 ∼46시간이 걸리고, b = 50의 경우 ∼1800시간이 걸려습니다.
반편, b를 50으로 설정하는 것은 완료할 때까지 소요되는 시간이 길어지며, 게다가 매 사이클마다 50개의 이미지만 추가하면, (즉 너무 작은 데이터셋을 추가하면) 모델은 적은 데이터에 편향적으로 학습될 수 있습니다. 반면에 b를 2500으로 크게 설정하면, 프레임을 유니폼하게 선택하는 것으로 줄어들 수 있ㄷ고 합니다. 따라서 총 소요시간이 190시간인 b를 500으로 설정하는 것이 더 실용적이었으며, 또한 매 사이클마다 500개를 선택했을 때 네트워크의 정확도가 향상될 가능성이 높았기 때문에, 따라서 대부분의 실험에서 b = 500으로 설정하였다고 합니다.
Our method vs. random:
다음으로 랜덤과의 비교실험 결과입니다. 아래 그림에서 첫번째 그림이 저자가 제안하는 방법론, 두번째에 존재하는 그래프가 Random 에 대한 결과를 나타냅니다. 그래프는 Miss rate과 FPPI 측면의 결과를 나타냅니다.

cycle 4가 끝났을 때, 최종적으로 2K개의 프레임이 선택되었습니다. 그 결과는 AL방식으로 선택한 결과가 랜덤에 비해 더 정확한 네트워크를 학습한다는 것을 보여주었습니다. 마지막으로, 14번째 사이클의 결과는 Caltech 데이터 셋에서 저자의 방법론이 랜덤보다 훨씬 더 나은 성능을 보인다는 것을 보여주었습니다.
Other pixel-level score functions:

또한 기존 acquitision function 에 비해 저자가 제안하는 피처 당 차이에 대한 성능이 얼마나 좋은지를 비교한 결과입니다. 기존에 사용되던 mcdrop과 entropy 대비 Object Detection 데이터셋에서 잘 동작하는 것을 확인할 수 있었습니다.
Object Detection에 대한 접근이 제법 신선했는데, 이 방법 말고도 최근에는 어떻게 수행되고 있을지 순차적으로 리뷰해보겠습니다.
안녕하세요. 홍주영 연구원님. 좋은 리뷰 감사합니다.
Active Learning을 Detection으로 확장하는데 생각보다 고려해야 할 것이 많군요…
흥미롭게 읽으면서 궁굼한 점이 몇 개 생겨 질문드립니다.
1. 모델의 출력이 입력 shape와 맞아야 한다는 것이 결국 백본 모델의 형태가 제한된다는 걸 의미하는 건가요? 일반적으로 CNN은 계층이 쌓일 수록 feature map 해상도가 낮아지는데, 만약 이게 제한된다면 지금까지 연구된 수많은 detector에 적용하기 어려울테니 꽤 큰 한계가 아닌가 싶습니다.
2. 초반에 비디오 데이터에서도 잘 동작한다는 언급이 있는데, 단순히 아주 짧은 비디오에서의 object detection에서 working한다는 것인지 혹은 action recognition이나 localization같은 완전 비디오쪽 task에서의 실험이나 이론적 근거가 논문에 제시되는지 궁굼합니다!
감사합니다.
안녕하세요, 백지오 연구원님. 리뷰 읽어주셔서 감사합니다.
이제서야 답변드리게 된 점 양해부탁드립니다.
Q1. 백본 모델의 중간 형태가 제한된다면 지금까지 연구된 수많은 detector에 적용하기 어려울테니 꽤 큰 한계가 아닌가 싶습니다.
-> 아주 예리한 지적인데, 언급해주신 부분이 해당 연구의 가장 큰 한계라고 할 수 있습니다.
본 연구가 워낙 초창기 연구이다 보니, 최근 연구들은 어떤 모델에도 붙힐 수 있는 방식을 제안하고 있습니다.
Q2. 초반에 비디오 데이터에서도 잘 동작한다는 언급이 있는데, 단순히 아주 짧은 비디오에서의 object detection에서 working한다는 것?
-> 사실 엄밀히 말하면 비슷한 시간대에 찍혀서 시각적으로 많이 유사한 데이터가 많은 데이터셋을 대상으로 데이터를 선별할 경우,
사이클마다 비슷한 이미지를 계속 선별할 수 있는 문제점이 발생할 수 있습니다. 이에 대응할 수 있도록 후처리 방식을 제안하였단 말로 작성된 것입니다!