Multimodal Object Detection via Probabilistic Ensembling(ProbEN) 요약
객체 인식은 자율주행 차량 등 다양한 분야에서 활용되고 있다.
이때, 자율주행 차량과 같은 시스템들은 밤, 낮, 우천 시 등 다양한 환경에서 Object Detection을 수행해야 하는데, 이를 위해 일반적인 RGB 카메라 뿐만 아니라 열화상(Thermal) 카메라 등이 사용된다.
이 논문에서는 RGB와 Thermal 이미지와 같은 멀티모달 환경에서 모델 내부에서의 특성 융합(feature fusion)이 아닌, 독립된 모델들의 앙상블 방법을 통해 강건한 모델을 만드는 ProbEn 방법을 소개한다.
이 방법을 KAIST PD, FLIR 등의 데이터에서 테스트한 결과, 이전의 다른 방법들을 13% 이상의 차이로 앞서는 결과를 보였다.
Introduction
일반적으로 열화상 이미지는 RGB 이미지에 비해 조도(illumination)의 영향을 적게 받기 때문에, 더 좋은 detection 성능을 내었다. 그러나 RGB에 비해 열화상 이미지는 데이터셋이나 사전학습 데이터가 매우 모자란 것이 현실이다.
특히, RGB와 열화상 이미지 쌍으로 구성된 데이터는 매우 적다. RGB와 열화상 이미지는 물리적으로 다른 성능과 위치의 카메라에서 촬영되기 때문에 공간적, 시간적 변위(mis-alignment)가 발생하는데, 이를 보정하려면 빔 스플리터와 같은 특별한 HW적, SW적 보정이 필요하다. (이마저도 완벽하지 않다.)
이러한 보정이 잘 되어있지 않거나 아예 안 되어있는 unaligned RGB-thermal 데이터의 경우, 학습은 물론 활용이 어렵고, 정교하고 세심한 보정이 적용된 aligned data인 KAIST PD와 같은 데이터도 하드웨어적 한계 등으로 인해 약간의 mis-alignment가 발생한다.
이전 연구들에서, 대부분의 연구가 RGB 데이터와 thermal 데이터의 fusion에 집중하였는데, 대부분의 연구가 fusion의 시점에 따라 early, mid, late fusion과 같이 구분하여 두 데이터를 하나의 모델 안에서 활용하기 위한 연구로 진행되었다.
ProbEn은 이 관점에서 아예 다른 모델들의 결과를 얻어 앙상블하는 very-late fusion이라 할 수 있는데, 개념적으로 단순하지만 효과적인 방법이 될 수 있다.
확률적 앙상블 (ProbEn)
앙상블의 대상이 되는 각 모델 중, 하나의 모델만 객체를 인식하는 경우가 있을 수 있다. ("Missing" modality) ProbEn은 이런 경우 단순히 그 예측을 전체 예측에 더한다.(put)
score-averaging, max-voting과 같은 이전 방법들은 모든 모델들이 어떤 예측을 생성하는 것을 전재로 한다. 이런 앙상블 기법들은 여러 분야에서 좋은 성능을 내었지만(e.g. random forest), 각 모델이 완전히 다른 예측을 수행하는 Object Detection 분야에서 이런 고전적인 앙상블 기법들은 효과적이지 않을 수 있다.
ProbEn은 멀티 모달 detection을 위한 fusion 방법으로 앙상블을 제안한 첫 모델이다. ProbEn은 꽤나 간단한 방법이지만, 그럼에도 매우 훌륭한 결과를 보여준다.
Related Works
지금까지 COCO를 비롯한 RGB object detection 문제에서 많은 SOTA 모델들은 모델의 구조에 집중해왔다.
이런 모델들은 주로 여러 개의 겹치는 예측들을 생성하고, NMS(non-max suppression)를 적용해 이 예측들을 추려냈다.
놀랍게도 NMS가 싱글 모달 detection에서 아주 광범위하게 사용되고 있음에도, 이를 여러 모달들을 앙상블 하는데 사용하려는 시도는 없었다. 우리는 이 방법이 꽤나 효과적임을 실험으로 보였다.
한편, 멀티 모달 detection 문제들은 KAIST Pedestrian Detection 데이터셋의 공개 이후로 점차 활발히 연구되고 있는데, 많은 방법들이 기존에 성공적이었던 RGB detector들을 이용하여, RGB와 thermal 데이터를 잘 융합하는 쪽으로 연구되고 있다.
이런 연구는 대부분 잘 정렬된(aligned) 데이터에서 이루어지고 있는데, 이 연구들이 FLIR 데이터셋과 같이 잘 정렬되지 않은 데이터에서 얼마나 잘 먹힐지는 의문이다. 우리는 정렬된 데이터와 비정렬 데이터 두 분야 모두에서 연구를 수행했다.
멀티모달 fusion은 멀티모달 detection의 주된 문제인데, 일반적으로 데이터를 입력 이전에 fusion하는 ealry fusion보다 하나의 모델의 중간에서 fusion하는 mid-fusion이 더 나은 성능을 보인다. 이는 early fusion에 비해 mid-fusion이 데이터의 비정렬에 대해 조금이나마 더 강건하기 때문인데, 우리는 아예 분리된 detector 모델들의 결과를 앙상블하는 late-fusion 방식을 통해, 정렬/비정렬 데이터 모두에서 좋은 성과를 낸 ProbEn을 제안한다.
Fusion Strategies for Multimodal Detection
Naive Pooling
다른 모델들의 예측을 단순히 합치는 late-fusion 방법으로 가장 간단한 방법이다. 이 방법을 사용하면 하나의 객체에 대해 여러 개의 예측이 생기는 부작용이 있을 수 있다. (위 그림의 a)
Non-Maximum Suppression (NMS)
중복 예측을 다루는 간단하고 일반적인 방법이다. 이는 RGB detector들에서 중복 예측을 다루기 위해서 흔히 사용되지만, 여러 개의 모델의 결과를 합치기 위해 사용된 사례는 없었다. 우리는 NMS가 여러 모델의 결과를 융합하는데 충격적일 정도로 효과적임을 발견했다. (위 그림의 b)
NMS는 IOU가 0.5 이상인 예측들 중 높은 것을 취하는데, 이는 밤에는 thermal, 낮에는 RGB와 같이 모델 자체를 바꾸는 것보다 더 자연스럽고 효과적이다. 하지만, 일부 사례에서 NMS는 결국 여러 모델 중 하나의 예측만을 남기기 때문에, 성공적이지 않은 경우가 있다.
Average Fusion
멀티모달 예측을 실제로 "융합"하기 위해, NMS를 약간 수정할 수 있다. 겹치는 예측들의 confidence score를 평균내는 방법이다. 그러나 이런 방법은 필연적으로 단일 모델의 예측 confidence score를 떨어뜨리게 되고, 실험 결과 오히려 NMS나 싱글 모달 detector보다 안 좋은 성능을 내었다. (위 그림의 c)
우리는 어떤 모델들이 공통적으로 객체에 대해 긍정적인 의견을 내면, 오히려 confidence score를 향상시키기를 원했다.
Probabilistic Ensembling (ProbEn)
우리는 먼저 어떻게 detection score들을 합칠지 고민했다.
어떤 클래스 $y$ (예를들면, 사람)에 대해, 두 개의 모델이 각각 $x_1$(RGB), $x_2$(thermal)의 점수를 줬다고 할 때, 앙상블된 결과는 다음고 같다.
$$ p(x_1, x_2, |y) = p(x_1|y)p(x_2|y) $$
이 식은 다음과 같이 유도될 수 있다.
$$ p(y|x_1, x_2) = \frac{p(x_1, x_2|y)p(y)}{p(x_1, x_2)} \propto p(x_1, x_2 | y)p(y)$$
$$ p(y|x_1, x_2) \propto p(x_1|y)p(x_2|y)p(y) \propto \frac{p(x_1|y)p(y)p(x_2|y)p(y)}{p(y)} \propto \frac{p(y|x_1)p(y|x_2)}{p(y)}$$
정리하면, 독립적인 모델들의 예측 $p(y|x_i)$를 곱하고, 이를 class prior 분포 $p(y)$로 나누어 fused score를 구한다.
$p(y)$는 다음과 같이 구할 수 있다.
$$p(y|{x_i}^M_{i=1}) \propto \frac{\Pi^M_{i=1}p(y|x_i)}{p(y)^{M-1}}$$
BBox Fusion 작성 예정
NMS와 ProbEn의 의사코드
def multimodalfusion(D, mode):
"""
Perform multimodal fusion with NMS or ProbEn
:input D: Detections from multiple modalities.
d = (y,z,m) in D
y is classification score, z is box coordinates and m is modality tag
:output F: set of fused detections
"""
while D.isNotEmpty():
i = D.argmax(dim=0) # 가장 큰 confidence score를 가진 d
T = IOU(t, D[i]) > 0.5 # i와 IOU가 0.5 이상인 box들
if mode=="NMS":
d_ = d
elif mode=="ProbEn":
S = T.argmaxforeachmodal() # 각 modality에서 가장 score가 높은 T들 추출
d_["score"] = nayesian_fusion(S)
d_["bbox"] = weighted_bbox_fusion(S)
F.append(d_)
D.delete(T)
return F
def bayesian_fusion(match_score_vec):
log_positive_scores = np.log(match_score_vec)
log_negative_scores = np.log(1 - match_score_vec)
fused_positive = np.exp(np.sum(log_positive_scores))
fused_negative = np.exp(np.sum(log_negative_scores))
fused_positive_normalized = fused_positive / (fused_positive + fused_negative)
return fused_positive_normalized
def weighted_box_fusion(bbox, score):
weight = score / np.sum(score)
out_bbox = np.array(bbox) * weight[:,None]
out_bbox = np.sum(out_bbox, axis=0)
return out_bbox
Reference
- Multimodal Object Detection via Probabilistic Ensembling - Chen et al.
'Deep Learning > 공부 노트' 카테고리의 다른 글
Video-to-Video Retrieval 맛보기 (0) | 2023.05.01 |
---|---|
Retrieval Task와 Metric Learning (0) | 2023.03.24 |
M2Det: SSD based on Multi-Level FPN 요약 (0) | 2023.02.02 |
FPN (Feature Pyramid Network) 요약 (1) | 2023.02.01 |
YOLO v2(YOLO9000: Better, Faster, Stronger) 요약 (0) | 2023.01.30 |
댓글
이 글 공유하기
다른 글
-
Video-to-Video Retrieval 맛보기
Video-to-Video Retrieval 맛보기
2023.05.01 -
Retrieval Task와 Metric Learning
Retrieval Task와 Metric Learning
2023.03.24 -
M2Det: SSD based on Multi-Level FPN 요약
M2Det: SSD based on Multi-Level FPN 요약
2023.02.02 -
FPN (Feature Pyramid Network) 요약
FPN (Feature Pyramid Network) 요약
2023.02.01