일반적으로 현재 존재하는 object detection 방법에는 3가지로 분류할 수 있습니다.
- one-stage detection : YOLO series, SSD etc...
- two-stage detection : R-CNN series etc..
- multi-stage detection : Cascade R-CNN
이렇게 다른 detection frameworks를 가지고 있지만 bounding box regression 인 target의 위치를 예측하는 사각형 박스는 중요한 단계로 취급됩니다. 현재 가장 대중적으로 사용되고 있는 boundign box regression 방법은 IOU방법입니다.
보통 L1-norm이나 L2-norm loss를 B^gt와 B의 distance loss을 측정할 때 사용되어왔습니다. 하지만 2019년에 이는 적절한 방법이 아니라며 IOU loss가 등장하기도 했습니다.
하지만 IOU loss역시 단점이 존재합니다. bounding box 간의 overlap이 없으면 동작하지 않는다는 점입니다. 따라서 overlap이 있을 시에만 loss를 측정하기에 non-overlapping cases의 경우 어떠한 기울기의 움직이도 발생하지 않습니다.
이를 극복하기 위해 GIOU-loss가 등장합니다.
GIOU loss는 B, B^gt를 모두 커버하는 가장 작은 박스 C를 이용하게 됩니다. 따라서 예측 박스는 타깃 박스와 겹치지 않더라도 C 때문에 loss을 줄일 수 있는 방향으로 갈 수 있게 됩니다.
하지만 GIOU loss 또한 다른 단점을 갖고 있습니다. 분명 IOU-loss에 있던 단점인 non-overlapping cases일 경우 gradient vanishing 문제는 해결이 되지만 수렴 속도가 느리고 부정확한 바운딩 박스를 예측하고 예측 박스가 타깃 박스를 포함할 수 있을 정도로 커지면 IOU항과 똑같이 동작을 똑같이 하게 된다는 단점이 있습니다.
위 그림을 보시면 예측 박스가 타깃 박스를 포함할 수 있을 정도로 커지면 IOU항과 똑같이 동작하는 모습을 확인할 수 있습니다. (즉 IOU만 고려하고 위치를 전혀 고려하지 않음을 확인할 수 있습니다.) 반면 DIOU Loss는 중심점 좌표를 고려하므로 overlap 된 경우에 두 바운딩 박스의 위치까지 고려를 합니다.
위 그림은 iteration에 따른 GIOU Loss의 바운딩 박스 예측 과정입니다. 매 반복이 진행하면서 target과의 overlap을 위해 predicted box의 영역이 넓어집니다. 그리고 target과 overlap이 된 이후부터는 IOU를 높이기 위해 predicted box의 크기를 줄여 나가는 모습을 확인할 수 있습니다.
반면에 DIOU Loss는 IOU와 중심점 좌표를 함께 고려하므로 predicted box가 서서히 target으로 이동하는 것을 확인 할 수 있으며 GIOU LOss보다 훨씬 더 적은 iteration으로 수렴하는 모습을 보여줍니다.
이제 본격으로 DIOU LOSS와 CIOU LOSS에 대해서 알아보겠습니다.
DIOU Loss(Distance - IOU Loss)
IOU Loss에서 중심점을 고려하는 페널티 term을 추가한 식입니다.
위 그림에서 설명하듯이 DIOU Loss는 중심점을 고려한다는 사실을 알 수 있습니다.
DIOU Loss 특징
IOU Loss와 GIOU Loss의 장점을 모두 갖고 있습니다. non overlapping 된 경우에 두 박스의 거리를 최소화하는 방향으로 제공하므로 GIOU Loss보다 빠르게 수렴하는 장점이 있습니다.
CIou Loss ( complete IOU Loss)
DIou loss에서 aspect ratios을 추가적으로 고려한 게 CIou Loss라고 생각하시면 됩니다.
즉 IOU, Central point distance, aspect ratio 세 가지 요소를 함께 고려합니다.
V는 aspect ratio의 일치성을 측정하고, 알파는 non-overlapping case와 overlapping case의 균형을 조절합니다. 특히 non-overlapping 경우에 높은 우선순위를 부여하는 역할을 합니다.
CIOU Loss의 gradient는 위의 수식과 같습니다.
h와 w가 [0, 1] 범위에 있는 경우에 w^2 + h^2의 값이 매우 작아져 gradient explosion 문제가 발생됩니다. 따라서 저자의 경우에는 w^2 + h^2를 1로 대체했다고 합니다.
Non-Maximum Suppression using DIOU
NMS을 할 때 IOU뿐만 아니라 두 박스의 중심점 거리도 동시에 고려하기 때문에 매우 유연한 NMS라고 할 수 있습니다.
그림과 그래프를 결과를 보면 아시겠지만 타깃박스가 가깝게 붙어 있는 경우, NMS을 진행하면 supression이 되는 물체들이 많아지는 방면, DOIU-NMS를 사용한다면 타겟 박스의 중심점도 고려하기 때문에 타깃 박스끼리 겹쳐져 있는 경우에 robust 하다는 장점이 있습니다.
Experimental Results
YOLOV3 on PASCAL VOC
SSD on PASCAL VOC
FASTER R-CNN on MS COCO
Conclusion
Code
'AI' 카테고리의 다른 글
5x5 Conv 를 3x3 Conv2개로 대체 효율 (0) | 2021.11.08 |
---|---|
[논문리뷰] DropBlock: A regularization method forconvolutional networks (0) | 2021.11.02 |
오차역전파-1 (딥러닝) 곱셉노드, 덧셈노드 (0) | 2021.06.20 |
CUDA Toolkit 삭제 & 다운(11.2 -> 11.1) (0) | 2021.03.23 |
딥러닝에서 필터의 개수는 왜 증가할까 (0) | 2021.01.27 |