본문 바로가기

Machine Learning Tasks/Object Detection

Object Detection - DIoU, CIoU

반응형

Object detection 알고리즘은 YOLO 시리즈, SSD 같은 1-스테이지 detection 과 R-CNN 계열의 2-스테이지 detection 으로 나눌 수 있지만, 이미지에 존재하는 객체의 localization 을 위한 bounding box regression 은 필수적으로 포함되며 일반적으로 $l_1, l_2$ norm의 목적함수로 훈련됩니다. 하지만 bounding box regression 성능 평가는 $l_1, l_2$ norm의 스케일과 해석의 비직관성으로 인해 타겟 박스와 (라벨) 예측한 박스가 겹치는 정도를 나타낸 IoU를 (Intersection over Union) 사용합니다. (Equation 1)

Equation 1

따라서, 테스트 메트릭과 (IoU) 목적함수의 ($l_1, l_2$) 불일치를 극복하기 위해 IoU 자체를 목적함수로 하는 방법들이 여럿 제안되었습니다. 먼저 Equation 2의 $L_{IoU}$는 IoU 자체를 직접적으로 목적함수로 사용합니다. 하지만 $L_{IoU}$는 예측 박스와 타겟 박스가 겹치지 않으면 IoU가 0이기 때문에 겹치지 않는 예측 박스에 대해서는 훈련이 되지 않습니다.

Equation 2

이를 개선하기 위해 제안된 방법으로 GIoU가 (Generalized IoU) 있습니다. GIoU는 Equation 3과 같이 Equation 2에 $B, B^{gt}$를 모두 커버하는 가장 작은 박스 $C$를 이용한 페널티 항을 추가합니다. 따라서 예측 박스는 타겟 박스와 겹치지 않더라도 페널티 항을 줄이기 위해 타겟 박스쪽으로 이동하게 됩니다. Figure 1의 첫번째 줄처럼 파란색 예측 박스가 초록색 타겟 박스를 포함할 수 있을 정도로 커진 이후에 IoU가 커지도록 훈련됩니다.

Equation 3

하지만 GIoU는 일단 예측 박스가 타겟 박스를 포함할 수 있을 정도로 커지면 IoU 항과 똑같이 동작합니다. Figure 2와 같이 예측 박스가 타겟 박스안에 포함되면 GIoU는 IoU와 마찬가지로 동작합니다. 이로 인해 뒤에서 살펴보겠지만 수렴속도가 느리고 성능이 좋지 않습니다. 이번 포스트에서는 IoU 기반 목적함수를 개선한 DIoU와 (Distance IoU) CIoU를 (Complete IoU) 살펴보도록 하겠습니다.

DIoU, CIoU

Analysis to IoU and GIoU losses

벤치마크 데이터셋에 대한 각 목적함수 별 detection 결과 분석은 직관적인 이해가 쉽지 않기 때문에 Figure 3과 같은 시뮬레이션 상황을 가정합니다. 먼저 중심 (10,10)에 7개의 서로 다른 높이너비 비율을 가진 타겟 박스를 잡습니다. (1:4, 1:3, 1:2, 1:1, 2:1, 3:1, 4:1) 이후에 중심 (10,10)으로부터 반경 3안에 위치한 5000개의 점에 대해서 7개의 스케일과 (앵커 박스의 면적이 각각 0.5, 0.67, 0.75, 1, 1.33, 1.5, 2) 7개의 높이너비 비율을 가진 앵커박스를 잡고 (총 49개) 전체 5000x7x7 앵커 박스에 대해 타겟 박스로 fitting 합니다. 따라서 총 7x7x7x5000=1,715,000의 regression 경우가 생기며, 타겟 박스에 대한 피팅은 Equation 4와 같이 이루어집니다. Equation 4에서 $\nabla B_i^{t-1}$은 $t-1$ 스텝에서의 주어진 목적함수 $L$에 대한 기울기이며 수렴을 빠르게 하기 위해 $2-IoU_i^{t-1}$을 기울기에 곱해서 훈련합니다. 총 200번 훈련하며, 누적된 $l_1$ 에러로 목적함수의 성능을 평가합니다. 전체 알고리즘은 Algorithm 1과 같습니다. 

Equation 4
Algorithm 1

Figure 3(b), 4를 보았을 때 $L=L_{IoU}$의 경우 타겟 박스가 겹치는 부분에 대해서만 동작합니다. 따라서 Figure 3(b)를 보면 겹치지 않는 부분에 대해서 $\nabla B=0$이므로 에러가 거의 줄지 않고 Figure 4(a)를 보면 타겟 박스와 겹치는 가운데 부분의 에러만 감소한 것을 확인할 수 있습니다.

GIoU 목적함수는 상황이 더 낫습니다. 페널티 항을 추가했기 때문에 겹치지 않는 박스에 대해서도 훈련이 되었으므로 Figure 4(b)를 보면 에러가 낮아진 부분이 IoU 목적함수에 비해 더 많아졌습니다. 하지만 수평, 수직 부분에 대해서는 에러가 큰 것을 볼 수 있는데, 타겟 박스와 수평, 수직선을 이루는 앵커 박스는 $|C- A\cup B|$이 매우 작거나 0에 가까우므로 IoU 함수와 거의 비슷하게 동작합니다. 또한, 겹치지 않는 박스에 대해서 일단 예측 박스의 크기를 매우 키우고 IoU를 늘리는 동작 특성 때문에 수렴 속도가 매우 느립니다. 정리하면 IoU 함수는 겹치지 않는 부분에 대해서는 훈련시킬 수 없고 GIoU 함수는 수렴 속도가 매우 느립니다. (특히, 수평, 수직 방향에 대해서 $|C- A\cup B|$가 매우 낮고 IoU값 자체도 낮으므로 수렴이 매우 느릴 수밖에 없습니다.)

DIoU

DIoU는 (Distance IoU) GIoU가 면적 기반의 페널티 항을 부여했다면 Equation 5와 같은 거리 기반의 페널티를 부여합니다. Equation 5의 $\rho^2$는 Euclidean 거리이며 $c$는 $B, B^{gt}$를 포함하는 가장 작은 박스의 대각선 거리입니다. (Figure 4) DIoU 함수의 특징을 보자면 1) 다른 IoU 기반 함수와 마찬가지로 회귀문제에 대해 scale-invariant 하고, 2) 페널티 항으로 겹치지 않은 부분에 대해서 동작하며, 3) 두 개의 박스가 완벽히 일치한다면 0, 매우 멀어진다면 $L_{GIoU}=L_{DIoU}\rightarrow 2$ 가 되게 됩니다. (2가 되는 이유는 IoU가 0이 되고 페널티 항이 1에 가깝게 되기 때문입니다.) Figure 1의 두번째 줄의 DIoU 동작과정을 보면 DIoU는 두 박스의 중심점 거리를 직접적으로 줄이기 때문에 GIoU 함수에 비해 수렴이 빠르고 거리기반이므로 수평, 수직방향에서 또한 수렴이 빠릅니다.

Equation 5

CIoU

성공적인 bounding box regression 을 수행하기 위해서는 1) 겹치는 부분, 2) 중심점 사이의 거리, 3) 높이너비 비율 (aspect ratio) 모두를 고려해야합니다. DIoU에서 1, 2번 부분을 고려했고 여기에 aspect ratio 부분을 고려한 페널티를 추가한 것이 CIoU (Complete IoU) 함수가 됩니다. (Equation 6) $\alpha$는 trade-off 파라미터로 IoU가 큰 박스에 대해 더 큰 페널티를 주게 됩니다. ($v$에 $\frac{2}{\pi}$가 들어가는 이유는 $arctan$ 함수의 최대치가 $\frac{\pi}{2}$이므로 스케일을 조정해주기 위해서입니다.)

Equation 6

CIoU 함수에 대해 최적화를 수행하게 되면 Equation 7과 같은 기울기를 얻을 수 있습니다. 이때, $w, h$는 모두 0과 1사이에 위치하여 값이 작으므로 gradient explosion을 유발할 수 있습니다. 따라서 실제 구현시에는 $\frac{1}{w^2+h^2}=1$로 설정합니다.

Equation 7

Non-maximum suppresion using DIoU

NMS는 한 객체에 대해 겹치는 여러 박스를 제거하기 위한 알고리즘으로 IoU 기반으로 동작합니다. 하지만 면적 기반이기 때문에 매우 많이 겹치는 부분에 대해서는 참이라 하더라도 제거해버리는 (false suppresion) 현상이 일어날 수가 있는데요, NMS에 DIoU의 개념까지 추가하여 겹치는 면적과 두 박스의 중심점 거리까지 고려하는 DIoU-NMS를 제안합니다. (Equation 7) 가장 높은 스코어를 가지는 $M$에 대하여 IoU와 DIoU의 거리 페널티를 동시에 고려하는데, IoU가 매우 크더라도 중심점 사이의 거리가 멀면 다른 객체로 판단할 수 있으므로 임계치를 낮추어 기존처럼 false suppresion 하지 않습니다. 

Equation 7

 

Experiments

YOLO v3 on PASCAL VOC

YOLO v3에 대하여 각 목적함수 별 object detection 성능을 비교합니다. PASCAL VOS 07+12 데이터를 훈련 데이터셋으로 사용했으며 VOC 2007 test를 테스트 데이터셋으로 사용합니다. (4952 이미지) 성능은 일반적인 방법과 같이 다양한 IoU 임계치에서 측정한 AP의 평균과 IoU 임계치가 0.75일 때의 AP75를 사용합니다. 결과는 Table 1과 같습니다.

$L_{CIoU}$를 사용했을 때 성능의 많은 향상이 있었고 Figure 6에서 볼 수 있듯이 $L_{CIoU}$의 박스가 $L_{GIoU}$의 박스에 비해 더 정확한 것을 볼 수 있습니다. 또한, DIoU-NMS를 사용했을 때 성능이 더욱 향상된 것을 볼 수 있습니다.

Faster R-CNN on MS COCO

MS COCO 데이터셋은 118K개의 훈련 데이터와 5K개의 테스트 데이터로 이루어진 대용량 데이터셋으로 Faster R-CNN 모델에 대해 실험합니다. 결과는 Table 3과 같습니다. Faster R-CNN은 매우 많은 앵커 박스를 가지고 있는 모델로 초기 상태에서부터 큰 IoU를 가지고 있어 GIoU 함수에서의 성능 향상은 미미합니다. 하지만 CIoU 함수를 사용했을 때, 중간 / 큰 객체에 대해서는 성능 향상을 볼 수 있습니다. 하지만 작은 객체에 대해서는 CIoU 함수의 성능이 오히려 떨어지는데 이는 작은 객체에서는 aspect ratio 고려가 중요한 부분이 아니고 박스간 중심점 거리가 더 중요한 팩터로 작용하기 때문에 DIoU의 성능이 더 높습니다.

Discussion on DIoU-NMS

NMS에 한두줄의 코드로 성능을 더 개선할 수 있습니다. Figure 8을 보면 기존 NMS에서 잘못 suppression 된 박스들이 DIoU-NMS 상에서 제거되지 않은 것을 볼 수 있습니다. 특히, Figure 9에서처럼 임계치 $\epsilon$에 따른 NMS / DIoU-NMS 성능 비교를 수행했을 때, DIoU-NMS가 임계치 상관없이 성능이 일관적으로 좋은 것을 볼 수 있습니다.

 

참조

반응형