객체 검출/물체 인식의 NMS보다 좋은 앙상블 방법, Weighted Boxes Fusion(WBF): ensembling boxes for object detection models 논문 리뷰 및 정리
1. WBF의 등장배경
Weighted Box Fusion(WBF)는 다양한 물체 감지(Object Detection) 모델의 예측을 앙상블하여 성능을 향상시키는 새로운 방법입니다. 이 방법은 대규모 Open Image 데이터셋에 대해 훈련된 다양한 모델의 예측으로 테스트되었습니다. 이 방법의 소스 코드는 아래의 깃헙에 공개되어있습니다.
https://github.com/ZFTurbo/Weighted-Boxes-Fusion
이미지에 대한 모델의 예측은 사각형의 4 좌표, 객체의 클래스 ID(예를들어 {1: '사람', 2: '자동차', 3:'동물'})과와0에서 1 사이의 확률(이 객체가 실제로 여기에 있다는 모델의 확신)의 6개의 값으로 이우러져 있습니다. 각각에 대해 여러가지 다른 모델과 그에 따른 예측이 있다고 가정해봅시다. (하나의 모델을 갖고 원본 이미지와 수직 대칭 이미지에 대해서 예측을 추가로 하는 것과 같은 Test Time Augmentation; TTA에도 활용될 수 있습니다.) 예측을 주어진 메트릭에 대해서 향상되는 방식으로 결합할 수 있는지가 중요합니다.
이를 위해 NMS(Non Maximum SUpression) 방법과 Soft-NMS extension이 주로 사용됩니다. 이 논문에서는 새로운 방법, WBF를 제안합니다. 예측의 일부를 단순히 제거하는 NMS, Soft-NMS extension과 달리, WBF는 모든 예측된 사각형을 사용하므로, 결합된 사각형의 품질이 크게 향상될 수 있습니다. 아래의 예시 그림을 보면, NMS는 부정확한 상자를 제외한 하나의 상자만 남겨두고, WBF는 3개의 상자 모두의 정보를 사용하여 문제를 해결합니다. (빨간색: 예측, 파란색: 정답)
NMW라고 다른 유사한 방식이 있지만, 아래와 같은 약간의 차이점이 존재합니다.
1. NMW는 confidence를 변화시키지 않습니다.
2. NMW는 boxes에 가중치를 주기위해 IoU 값을 사용하지만, WBF는 사용하지 않습니다.
3. NMW는 최대 confidence를 가진 박스를 사용하여 비교하는 반면에, WBF는 각 단계에서 평균 박스를 사용하여 같 다음 박스와의 교차점을 체크합니다.
4. NMW는 얼마나 많은 모델이 군집에서 주어진 박스를 예측하지에 대한 정보를 사용하지 않습니다.
2. WBF 알고리즘
알고리즘은 다음과 같습니다.
- weighted_boxes_fusion(boxes_list, scores_list, labels_list, weights = None, iou_thr = 0.55, skip_box_thr = 0.0, conf_type = 'avg', allow_overflow = False) 함수에서 iou_thr는 iou 임계 값에 해당합니다. skip_box_thr는 각각 박스의 스코어는 이 임계값보다 작으면 버려지고, 가중치는 모델마다 다른 값을 갖습니다. None이면 각 모델의 기본 가중치는 1입니다.
- prefilter_boxes(boxes, scores, labels, weights, thr) 함수는 후속 처리를 위해 다른 모델에서 동일한 레이블의 박스를 병합하여 필터처리 합니다. 값이 skip_box_thr보다 작으면 해당 박스는 삭제 된 다음 각 레이블 박스가 처리됩니다.
- 두 박스의 iou를 계산하여 iou가 iou_thr보다 크면 get_weighted_box (boxes, conf_type = 'avg') 함수를 통해 두 박스가 융합됩니다. 융합의 첫 번째 단계는 스코어를 매기는 것입니다. 프레임 좌표 융합의 경우 프레임 좌표에 해당 스코어를 곱한 다음 합계를 융합 스코어로 나눕니다. Frame Fusion C2와 같은 비선형 가중치를 사용하여 더 나은지 여부를 확인하고 융합된 모든 원본 프레임과 퓨전 후 프레임을 저장할 수 있습니다.
- 융합 된 프레임 스코어의 크기를 조정합니다. 즉, 융합된 스코어의 값에 작은 값을 원래 프레임 수와 총 모델 수로 곱한 다음 모든 모델 수로 나눕니다. (다음의 계산과 같습니다.)
weighted_boxes [i] [1] = weighted_boxes [i] [1] * min (weights.sum(), len (new_boxes [i])) / weights.sum() - 위의 단계는 최종 결과를 얻습니다. 여기서 저자는 몇 가지 개선 사항을 제안합니다.
- 첫 번째는 일반적인 nms 또는 softnms 후에 wbf를 사용할 수 있다는 것입니다. (nms에 해당하는 conf_type은 max이고 soft-nms에 해당하는 conf_type은 avg입니다)
- 두 번째는 두 모델의 경우 스코어의 차이가 너무 크면 문제가 생길 수 있으며, 사전에 스코어로 정규화 할 수 있습니다
- 세 번째는 wbf 계산 효율이 nm보다 약 배 느리다는 것입니다. 아마도 루프 계산이 많기 때문일 것입니다.
3. 실험결과
성능은 다음과 같습니다.
4. 결론
제안 된 방법은 물체 검출 모델에 널리 사용되는 NMS 방법과 비교하여 매우 우수한 성능을 보여줍니다.
가장 특징적인 다른 점은, NMS 방법은 부정확한 상자를 제외한 하나의 상자만 남겨두고, WBF는 3개의 상자 모두의 정보를 사용하여 문제를 해결합니다.
WBF의 사용법 및 예제는 포스트 상단에 있는 링크를 통해 접근하실 수 있습니다.
'📚 딥딥러닝' 카테고리의 다른 글
DevOps와 MLOps (0) | 2020.07.13 |
---|---|
YOLO v5 모델로 Object Detection(객체 인식) inference(추론) 해보기 - 미드 office parkour 예제 동영상 (2) | 2020.06.30 |
YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기 (3) | 2020.06.29 |
YOLO v5 공개! 개념, 이론, 논문 대신에 iOS...? (0) | 2020.06.22 |
Keras baseline using MFCC for Sound Classification (0) | 2020.06.16 |
댓글
이 글 공유하기
다른 글
-
DevOps와 MLOps
DevOps와 MLOps
2020.07.13 -
YOLO v5 모델로 Object Detection(객체 인식) inference(추론) 해보기 - 미드 office parkour 예제 동영상
YOLO v5 모델로 Object Detection(객체 인식) inference(추론) 해보기 - 미드 office parkour 예제 동영상
2020.06.30 -
YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기
YOLOv5 학습 예제 코드 (튜토리얼) - 마스크 쓰고 있는/안 쓴 얼굴(사람) 찾기
2020.06.29 -
YOLO v5 공개! 개념, 이론, 논문 대신에 iOS...?
YOLO v5 공개! 개념, 이론, 논문 대신에 iOS...?
2020.06.22