OHEM: Training Region-based Object Detectors with Online Hard Example Mining

김태규·2024년 12월 29일
0

비전 논문리뷰

목록 보기
9/15

Abstract

이번 포스팅에서는 OHEM(Online Hard Example Mining)논문을 리뷰해보겠다.
일반적으로 object detection시에 배경영역에 해당하는 region proposals의 수가 더 많아 클래스 불균형이 발생하고, 이 문제를 해결하기 위해서 Hard negative mining을 적용해왔다고 합니다. 하지만 이로 인해 학습속도가 느려지고, 성능향상에 한계가 생겼다고 합니다. 그래서 OHEM은 이러한 문제를 해결하는 방법을 제시합니다.

Hard Negative Mining?

2-stage 모델을 활용한 object detection시, region proposal을 기반으로 classification과 localization을 수행하는데 이 과정에서 이미지 내에 객체가 존재하는 영역보다 존재하지 않는 영역이 훨씬 많기 떄문에 추출되는 region proposal에는 객체가 있는 영역보다 배경이 더 많게 된다. \rightarrow 클래스 불균형 발생(class imbalance)으로 모델의 학습이 제대로 되지 않음.

이러한 문제 때문에 Hard Negative Mining이란 방법을 사용했습니다.
Hard Negative MIning은 모델이 잘못 예측한 (hard) sample을 추출하는 방법입니다. object detection 모델이 있다고 했을 때, positive sample은 객체가 있는 sample, negative sample은 배경영역입니다. 여기서 모델이 예측하기 어려운 sample은 False Positive sample입니다.

False Positive sample를 더 중요하게 여기는 이유?

False negative는 객체를 배경으로 잘못 인식한 경우이다. 이는 객체가 일부 가려졌거나, 조명이 어두워서 탐지가 어려운 경우에 잘 발생한다.
하지만 False Negative는 모델이 없는 객체를 잘못 탐지하는 오류이기 때문에, 모델의 신뢰도를 저하시킬 수 있어 False negative보다 더 중요하게 생각하는 것 같다.

정리하면, False Positive는 모델이 객체와 배경을 구분하는 데 가장 혼란스러워하는 샘플이기 때문에, Hard Negative Mining에서 중요한 역할을 하는 것이다.

기존에는 Hard Negative Mining을 사용하여 모델이 예측하기 어려운 sample을 추출한 후, 학습 데이터에 포함시켜 모델이 False Positive 오류에 강건해지도록 학습시켰습니다. Object detection 모델 학습에 Hard Negative Mining 방법을 적용할 경우 다음과 같이 동작합니다.

전체 region proposals 중에서 positive/negative sample을 적절히 섞어 mini-batch로 구성한 후 모델에 입력하여 모델을 학습시킵니다. Hard Negative Mining 방법을 적용하여 학습된 모델이 False Positive로 판단한 sample을 학습 데이터셋에 추가합니다. 다음 epoch부터 모델은 False Positive sample이 추가된 mini-batch를 입력받아 학습하며, 마지막 epoch까지 위의 과정을 반복합니다.

위의 그림에서 빨간색 box는 positive sample, 파란색 box는 negative sample이다. 학습이 거듭될수록 모델의 성능이 좋아지며 False positive와 객체를 구분하기 어려운 sample들이 추가되는 것을 볼 수 있다.

Hard Negative Mining의 단점

논문의 저자는 이 방식으로 mini-batch를 구성하는 것이 비효율적이라고 지적한다. 모델이 False Positive를 판단하고 이것을 학습데이터에 추가한 후, mini-batch를 update할때까지 모델을 training시킬 수 없기 때문이다.

기존에는 positive/negative sample을 특정 비율에 맞춰 mini-batch를 구성했다고 한다. Fast R-CNN의 경우 2장에서 각각 64개의 region proposal을 추출하고 25%는 positive sample, 나머지는 negative sample로 구성했다고 한다. 여기서 positive sample은 ground truth와의 IOU가 0.5이상, negative는 0.1~0.5사이인 sample로 구성했다고 하는데, 저자는 이 과정이 지정해야하는 파라미터의 수가 많아져 실험자의 개입과 시행착오가 많이 필요하다고 지적한 것이다.

OHEM(Online Hard Example Mining)

OHEM은 이미지에서 추출한 모든 RoI(Region of Interest)를 추출한 후 forward pass에 넘깁니다. loss를 계산한 후, 높은 loss를 가지는 RoI에 대해서만 backward pass를 수행하는 방법입니다. (여기서 online은 데이터를 순차적으로 mini-batch로 구성하여 학습시키는 Online-learning을 의미하는 것임)

논문에서는 fast R-CNN에 OHEM을 적용시키는 과정을 설명합니다.

fast R-CNN은 여기서 참고하면 될 것 같다.

작동 과정

  1. iteration시, 이미지를 conv layer에 넣어 feature map을 얻는다.
  2. Selective search를 통해 얻은 RoI와 feature map으로 RoI pooling을 수행한다.
  3. fc layer와 bounding box regressor를 통해 RoI별로 loss를 계산한다.
  4. loss에 따라 RoI를 정렬한 후 B/N (RoI의 개수/사진의 수) 개의 sample만을 선택한 후 backward pass를 수행한다.

비슷한 영역에 있는 RoI가 forward pass에 들어간다면 같은 특징을 학습하는 과정이 반복될 수 있기 때문에 NMS(Non Maximum Suppression)을 사용하여 효율성을 높였다. 이때 NMS threshold는 0.7이다.

Traning Fast R-CNN with OHEM

OHEM을 구성하기 위해 저자는 두 read only RoI network를 구성한다고 한다. 하나는 read only network 나머지 하나는 standard RoI network이다.

read only RoI network는 forward pass만 하고 backward는 하지 않는다.
backward는 standard RoI network에서만 한다.
(두 개는 동일한 네트워크임)

1) region proposal by Selective search
원본 이미지에 대하여 Selective search 알고리즘을 적용하여 미리 region proposals를 추출합니다.

  • Input : image
  • Process : Selective search
  • Output : region proposals

2) Feature extraction by pre-trained VGG16
원본 이미지를 pre-trained된 VGG16 모델에 입력하여 feature map을 얻습니다.

  • Input : image
  • Process : feature extraction by VGG16
  • Output : feature maps


3) Max pooling by RoI pooling

Selective search를 통해 추출한 모든 RoIs와 2)번 과정에서 얻은 feature map을 사용하여 RoI pooling을 수행합니다. 이를 통해 RoI 수만큼의 feature map이 생성됩니다.

  • Input : feature maps, All region proposals
  • Process : RoI pooling
  • Output : feature maps


4) Calculate loss by readonly RoI network

RoI pooling을 수행하여 얻은 모든 RoIs에 대한 feature map을 readonly RoI network에 입력합니다. 이때 readonly RoI network는 fc layer, Bounding box regressor, Classifier로 구성되어 있으며, forward pass만을 수행합니다. 이를 통해 각각의 RoI에 대한 loss를 구합니다.

  • Input : feature maps
  • Process : Calculate loss by readonly RoI network
  • Output : RoI losses

5) Select hard examples by Hard RoI Sampler
먼저 중복되는 sample을 제거하기 위해 Non maximum suppression을 수행합니다. 그 다음 loss를 내림차순으로 정렬한 뒤 이미지별로 상위 B/N개의 RoI만 선택합니다. 예를 들어 2장의 이미지에서 128개의 RoI를 선택하여 mini-batch를 구성한다고 할 때, 각각의 이미지에서 loss가 가장 높은 상위 64개의 RoI만 선택하는 셈입니다.

  • Input : RoIs and RoI losses
  • Process : hard example sampling
  • Output : hard examples(mini-batch)

6) Max pooling by RoI pooling
Hard RoI Sampler에서 얻은 hard example와 2)번 과정에서 얻은 feature map을 사용하여 RoI pooling을 수행합니다. 이를 통해 hard example 수만큼의 feature map을 얻습니다.

  • Input : hard examples(mini-batch)
  • Process : RoI pooling
  • Output : feature maps

7) Train Standard RoI network
feature map을 입력받아 fc layer, Bounding box Regressor, Classifier를 거쳐 loss를 계산한 후, backward pass를 통해 모델을 학습시킵니다. 이 과정에서 오직 hard example에 해당하는 RoI만이 학습에 참여하게 됩니다.

  • Input : feature maps
  • Process : calculate loss by Standard RoI network
  • Output : losses

Experiment

여기서 NN은 mini-batch에 포함되는 이미지의 개수를 의미하고 bg_lo는 Negative sample의 IoU 하한값을 의미한다. ( 배경으로 간주할 IoU의 하한값을 의미 )

표에는 아쉽게도 gb_lo에 대한 비교가 거의 없었다. 아마 bg_lo=0.1일때 가장 좋아서 넣어 놓은 것 같다.

학습할때 gradient가 robust해서 N이 1이던지 2던지 상관없이 성능에 크게 영향을 미치지 않는다는 것을 을 수 있다. (12, 13 라인)
학습을 할 때 loss가 큰 데이터에 대해서 gradient update가 크게 되는 것을 당연하지만, hard example만을 사용해서 모델을 update를 해도 성능이 높다는 것에 놀라움을 가졌다.
이로써 hard example을 학습하는 것이 모델에 얼마나 중요한지 다시 생각하게 된 것 같다.

roi network를 복사해서 2개를 두고, 그 중 하나를 읽기 전용으로 두어서 back propagation을 위한 메모리 소비량을 줄인다는 아이디어 때문에, max memory가 많이 늘지는 않았다. 물론 늘었긴 하지만 fast R-CNN이 빨라서 허용할 수 있는 속도라고 한다.


결론

Training Region-based Object Detectors with Online Hard Example Mning의 경우에는 앞서 언급했듯이 기존의 연구에서 인간의 인위적인 개입이 필요했던 부분들(hyper parameter, background-foreground ratio 등등)을 제거해서 학습을 간단하게 만들었다.

그 결과 사람의 개입을 줄였음에도 불구하고 속도나 메모리 면에서도 안정적으로 학습할 수 있었다.

profile
발전하는 개발자입니다!

0개의 댓글