약초의 숲으로 놀러오세요

OHEM 논문(Training Region-based Object Detectors with Online Hard Example Mining) 리뷰 본문

Computer Vision/Object Detection

OHEM 논문(Training Region-based Object Detectors with Online Hard Example Mining) 리뷰

herbwood 2020. 12. 24. 18:33

이번 포스팅에서는 OHEM(Online Hard Example Mining) 논문(Training Region-based Object Detectors with Online Hard Example Mining)을 리뷰해보도록 하겠습니다. 일반적으로 object detection 시, 배경 영역에 해당하는 region proposals 수가 더 많아 클래스 불균형(class imbalance)가 발생하고, 이러한 문제를 해결하기 위해 Hard Negative Mining 방법을 적용했습니다. 하지만 이로 인해 학습 속도가 느려지고, 성능 향상에 한계가 생기게 됩니다. 이러한 문제를 해결하여 모델의 학습 속도 개선과 성능 향상을 이뤄낸 새로운 bootstrapping 방법인 OHEM을 살펴보도록 하겠습니다. 


Preview

Hard Negative Mining 방법은 모델이 제대로 예측하지 못한 일부 region proposals을 sampling한 후 forward, backward pass를 수행하는 반면, OHEM은 모든 region proposals를 forward pass한 후 loss를 계산하여, 높은 loss를 가지는 region proposals에 대해서만 backward pass를 수행하는 방법입니다. 논문에서는 끊임없이 Hard Negative Mining과 OHEM을 비교합니다. 따라서 기존 방법인 Hard Negative Mining의 개념과 동작 과정을 짚고 넘어가도록 하겠습니다. 

Main Ideas

Hard Negative Mining의 문제

1) Hard Negative Mining

 

2-stage 모델을 활용한 object detection task 시, region proposals를 기반으로 classification과 localization을 수행합니다. 하지만 일반적으로 이미지 내 객체가 존재하는 영역보다 객체가 존재하지 않는 영역이 훨씬 많기 때문에 추출되는 region proposals에는 객체가 있는 영역(foreground)보다 배경 영역(background)이 더 많습니다. 이로 인해 클래스 불균형(class imbalance) 문제가 발생하여 모델의 학습이 제대로 이뤄지지 않을 수 있습니다. 이러한 문제를 해결하기 기존에는 Hard Negative Mining 방법을 사용했습니다.

 

Hard Negative Mining은 모델이 잘못 예측한, 어려운(hard) sample을 추출하는 방법입니다. 가령 object detection 모델이 있다고 할 때, positive sample은 객체에 해당하는 영역이며, negative sample은 배경입니다. 여기서 모델이 예측하기 어려운 sample은 주로 False Positive sample입니다. 왜냐하면 object detection 모델은 positive에 해당하는 객체의 영역만을 detect하기 때문에, 배경을 잘못 예측한 False Negative sample은 object detection task에서 고려하지 않기 때문입니다.

 

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

 

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입니다. 학습이 거듭될수록 점차 mini-batch에 False Positive sample들이 더해지면서 객체라고 착각할만큼 어려운 negative sample들이 추가된 것을 확인할 수 있습니다.  

 

2) Problem with Hard Negative Mining 

 

하지만 OHEM 논문의 저자는 이같은 방식으로 mini-batch를 구성하는 것은 비효율적이며, 최적의 방법이 아니라고 비판합니다. 모델이 False Positive를 판단하고 이를 학습 데이터셋에 추가하고, mini-batch를 구성하는 과정이 끝날 때까지 모델을 update할 수 없어, 학습이 느려질 수밖에 없기 때문입니다.

 

또한 기존에는 positive/negative sample을 특정 비율에 맞춰 mini-batch를 구성했습니다. 가령 Fast R-CNN의 경우 2장의 이미지에서 각각 64장씩 region proposals를 추출하고, 25%는 positive sample로, 나머지는 negative sample로 구성했습니다. positive sample은 ground truth box와의 IoU값이 0.5 이상, negative sample은 IoU값이 0.1~0.5 사이인 sample로 정의했습니다. 논문의 저자는 이러한 방식이 휴리스틱(Heuristic)하다고 언급합니다. 즉, 지정해줘야 하는 하이퍼 파라미터(positive/negative sampling ratio, IoU threshold 등)가 많아 실험자의 개입과 시행착오가 많이 필요하다고 지적한 것입니다.  

OHEM(Online Hard Example Mining)

Online Hard Example Mining

OHEM(Online Hard Example Mining)은 이미지에서 추출한 모든 RoIs(Region of Interest)를 forward pass한 후 loss를 계산하여, 높은 loss를 가지는 RoIs에 대해서만 backward pass를 수행하는 방법입니다. 여기서 Online은 데이터를 순차적으로 mini-batch로 구성하여 학습시키는 Online learning을 의미하는 것이라고 생각합니다. 논문에서는 Fast R-CNN 모델에 OHEM 방법을 적용하여 동작하는 과정을 설명합니다. 

 

1) t번째 iteratoin 시, 이미지를 conv layer(=pre-trained VGG16)에 입력하여 feature map을 얻습니다.

2) Selective search를 통해 얻은 모든 RoIs와 1)번 과정에서 얻은 feature map을 사용하여 RoI pooling을 수행합니다. 

3) fc layer와 Classifier, Bounding box regressor를 거쳐 각 RoI별로 loss를 계산합니다.

4) loss에 따라 RoI를 정렬한 후 B/N개의 example(=sample)만을 선택한 후 backward pass를 수행합니다. 

 

RoI끼리 겹치는 영역이 있어 연산이 공유되기 때문에 forward pass 시 추가되는 연산량은 상대적으로 적다고 합니다. 또한 오직 적은 수의 RoI가 모델을 update하는데 사용되었기 때문에 기존의 방식으로 backward pass할 때와 연산량 차이가 크지 않다고 합니다. 

 

하지만 비슷한 영역에 있는 RoIs가 모두 backward pass 시 포함되어 loss가 두 번 계산될 수 있는 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 논문의 저자는 Non Maximum Suppression을 사용합니다. RoIs와 각각의 loss가 주어질 때 NMS를 수행하여 loss가 높은 RoI와 높은 IoU 값을 가진 RoI를 제거합니다. 여기서 NMS threshold = 0.7로 지정했습니다. 

 

실제로 OHEM을 구현하기 위해 두 종류의 RoI network를 구성한다고 합니다. 그 중 하나는 readonly(읽기 전용, read-only) network로, forward pass시에만 메모리를 할당합니다. 각 iteration마다 conv feature map이 주어지면 readonly network는 forward pass를 수행하고 모든 RoI에 대하여 loss를 계산합니다. 그리고 Hard RoI Sampler는 hard example만을 추출하여 일반적인 RoI network에 입력합니다. 이 network는 오직 hard example에 대해서만 forward, backward pass를 수행하여 gradient를 축적하여 ConvNet에 전달합니다. 다음으로 OHEM 방법을 적용한 Fast R-CNN 모델의 학습 과정을 살펴보도록 하겠습니다. Fast R-CNN 모델에 대한 구체적인 설명은 Fast R-CNN 논문 리뷰를 참고하시기 바랍니다. 

Training Fast R-CNN with OHEM

Training Fast R-CNN with OHEM

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

OHEM 방법을 적용할 경우, 학습 도중에 sampling 과정을 필요로 하지 않기 때문에 모델의 학습을 빠르게 할 수 있다는 장점이 있습니다. 기존 Hard Negative Mining 방법을 적용했을 때보다 학습 속도가 2배 이상 빠른 모습을 보였습니다. 또한 positive/negative를 균형있게 sampling하기 위한 별도의 하이퍼 파라미터를 필요로 하지 않습니다. 만약 특정 class(positive 혹은 negative)의 example이 backward pass 되지 않았다면, loss는 상승할 것입니다. 이는 다음 iteration 때 선택되어 backward pass될 가능성이 높아진다는 것을 의미합니다. 가령 어떤 이미지에서 foreground RoI에 해당하는 sample이 모델이 예측하기 쉽다면, background RoI를 상대적으로 많이 sampling할 것입니다. 반대의 경우도 마찬가지입니다. 이를 통해 실험자가 직접 개입해야하는 휴리스틱한 방법을 상대적으로 덜 사용하게 됩니다. 

 

이밖에도 detection 성능 역시 향상된 결과를 보였습니다. VOC 2007 데이터셋을 활용했을 때 Fast R-CNN 모델이 67.2%의 mAP 값을 보인 반면, OHEM을 적용한 Fast R-CNN 모델은 69.9%의 mAP값을 보였습니다. 

 

저는 이전까지 모델 구조 개선에 대한 논문을 중심으로 읽어왔습니다. 그렇기에 적절한 sampling을 통해 모델의 성능을 향상시키는 방법을 소개한 이번 논문이 더욱 참신하게 느껴진 것 같습니다😆. 다음 포스팅에서는 YOLO v1 논문을 읽고 리뷰해보도록 하겠습니다. 

 

Reference

OHEM 논문(Training Region-based Object Detectors with Online Hard Example Mining)

haejoo님의 OHEM 논문 설명

R-CNN 논문 리뷰

Fast R-CNN 논문 리뷰

pytorch로 구현한 R-CNN 모델

Hard Negative Mining 그림 출처

Comments