Introduction
동영상에 등장하는 개체들은 역동적으로 움직이면서 모션 블러가 생기거나, 초점이 나가거나, 일반적이지 않은 자세를 취하기도 하기 때문에, 일반적으로 동영상 물체 탐지는 정지 화상에서보다 더 난도가 높습니다. 아래의 그림은 탐지가 어려운 순간들을 포착한 프레임인데, 사람이 봐도 한 눈에 무엇인지 알아보기 쉽지 않습니다.
이 연구에서는 위와 같은 프레임들에서도 안정적으로 탐지 성능을 낼 수 있는 end-to-end trainable 방법을 제안하고 있습니다.
Proposed Method
Baseline and Motivation
동영상에서 물체 탐지를 하기 위한 기본적인 방법은 영상 내 모든 프레임에 각각 이미지와 동일하게 object detector를 적용하는 것입니다. 하지만 도입부에서 살펴본 바와 같이 동영상 내 특정 순간의 이미지는 여러 문제점들을 갖고 있기 때문에, 단일 이미지 detection은 잘 되지 않을 가능성이 큽니다.
이를 해결하기 위해서 이 논문에서는 인접 프레임의 feature를 propagation합니다. 전작인 DFF (Deep Feature Flow) 와는 접근 방식이 반대인데, DFF에서는 속도 개선을 위해 키프레임의 feature를 propagation해서 재사용했다면, 여기서는 정확도 개선을 위해서 인접 프레임들의 feature를 기준 프레임으로 propagation하고 합쳐서 기준 프레임의 feature를 강화하는 것입니다.
이를 위해 두 가지 모듈이 제안되었습니다. 첫번째로는 motion-guided spatial warping으로, 프레임간의 움직임을 예측해서 인접한 프레임의 feature map을 기준 프레임에 맞게 warping해 줍니다. 두번째로는 feature aggregation module입니다. 이는 여러 프레임의 feature들을 적당하게 합쳐서 현재 feature를 강화하는 부분에 해당합니다.
Model Design
먼저 flow-guided warping에 해당하는 부분은 DFF 논문에서와 동일한 방법을 사용하기 때문에 지난 리뷰를 참고하시면 됩니다.
Feature aggregation 모듈에서는 인접 프레임들로부터 warping된 feature들을 모아서 전부 합치는데, 이렇게 하면 시간에 따라 변화하는 다양한 빛 환경, 시점, 자세 등의 정보를 모두 지닐 수 있게 된다는 장점이 있습니다. 합치는 프레임의 갯수는 기준 프레임을 중심으로 앞뒤 각각 K개, 즉 2K+1개가 됩니다. 이 때 단순 합이 아니고 공간적 위치마다 다른 가중치를 할당하여 동일한 위치이면 모든 채널이 동일한 값을 갖도록 하였습니다. 여기서는 K=10을 기본값으로 하여 총 21개 프레임의 feature가 버퍼에 들어있게 되며, 이를 모두 합쳐서 aggregated feature로 사용하게 됩니다. 이 aggregated feature는 바로 detection network에 삽입되어 태스크를 수행하게 됩니다.
그럼 feature aggregation에 이용할 가중치를 구하는 과정이 남았는데, 여기서는 시간적으로 인접한 프레임임이라면 feature의 특정 위치가 다른 프레임의 해당 위치에서도 동일한 값을 가질 확률이 상대적으로 높다는 가정을 이용합니다. 즉, feature의 특정 위치에서의 warped feature와 extracted feature(reference)의 값이 유사할수록 해당 warped feature는 현재 feature와 공간적으로 유사하다는 뜻이 됩니다. 따라서 이러한 feature들에는 높은 가중치가 할당이 되는 것이 좋습니다.
각 위치마다의 유사도를 판단하기 위해서 cosine similarity를 이용합니다. 하지만 warped/extracted feature를 바로 사용하는 것은 아니고, similarity measure를 위한 새로운 feature로 embedding을 합니다. 이 embedding하는 과정에서는 embedding sub-network를 사용합니다.
i번째 frame의 feature를 f_i, j번째 frame의 feature를 i로 warp한 feature를 f_{j→i}, 각각 similarity measure space로 embedding한 feature를 f^e_*라고 할 때, cosine similarity를 이용한 각 location p에서의 가중치는 다음과 같이 계산합니다.
weight는 해당 위치 p에서 aggregate할 weight를 모두 더했을때 1이 되도록 normalize합니다.
Network Architecture
전체적으로 전작인 FPP와 네트워크 구조는 유사합니다. 다른 점이 있다면 feature aggregation의 weight에 해당하는 embedding network가 추가된 것입니다.
Flow network로는 Flying Chairs dataset에서 pre-train된 FlowNet Simple을 사용하였으며, feature map과 크기를 맞추기 위해 마지막에 반으로 downscale을 해주었습니다. Feature network로는 R-50, R-101 그리고 Inception-ResNet을 사용하였고, Detection은 R-FCN을 사용하였습니다.
Embedding network는 1*1*512, 3*3*512, 1*1*2048 세 개의 layer로 구성되어 있으며, 랜덤 초기화를 하였습니다.
Inference
Inference 과정은 다음 알고리즘과 같습니다. Aggregation range (=앞뒤로 각각 몇 개의 이미지를 합칠지의 범위)를 K라고 했을 때, 처음과 종료 직전의 K 프레임을 제외하면 버퍼에는 항상 2K+1개의 프레임을 저장하게 됩니다.
기존의 각 프레임마다 detection을 수행하는 알고리즘에 비해 여기서는 여러 프레임의 feature를 현재 프레임으로 warping 및 aggregation하는 연산이 추가되었습니다. 이 알고리즘의 시간 복잡도 비는
처럼 나타낼 수 있는데 (numerator에 (2K+1)이 아니라 2K?), F는 flow network, E는 aggregation weight를 구할 때 사용하는 embedding network, W는 blinear interpolation인 warping function, Nfeat와 Ndet는 각각 feature extractor와 head 입니다. Feature extractor와 flow network를 제외하면 상대적으로 연산량이 작기 때문에 다른 항들은 거의 무시될 수 있으며, 최종적으로 전체 연산량의 비는 flow network의 연산량에 가장 크게 의존하게 됩니다.
Training
Inference에서는 비교적 큰 값의 K를 쓸 수 있지만 training에서는 메모리의 한계 때문에 2의 값을 사용합니다. 이 때, 기준 프레임의 직전과 직후 프레임들만 사용하는 것이 아니고, 넓은 범위에서 인접한 프레임들 중 임의의 프레임을 샘플링해서 학습합니다. 저자들은 이를 "temporal dropout"이라고 명명하고 있습니다.
Experiment
Slow, medium, and fast motion
결과 분석에 앞서 데이터셋에 등장하는 물체들의 속도를 정량화하고 분류해 보았습니다. 물체의 속도는 앞뒤로 각각 인접한 10개의 프레임들에서의 평균 IoU로 정의하며, 이를 "motion IoU"라고 합니다. IoU가 작을수록 물체가 빠르게 움직이고 있는 것이 됩니다. Motion IoU가 0.9보다 큰 경우에는 slow, 0.7보다 작은 경우에는 fast, 그 사이 값들은 medium으로 분류하였습니다.
Ablation study
하나의 프레임만 가지고 detection을 하는, 가장 기본적인 베이스라인인 method (a)의 경우에 특히 빠른 물체들에 대해서 mAP가 50.1%로 성능이 별로 좋지 못한데, 논문에서 제시하는 방법 (d)를 사용하는 경우에는 훨씬 성능이 개선됩니다. 또한 end-to-end로 학습하지 않고 flownet을 따로 학습했을 때(e)와 비교했을 때도 3%가 넘게 좋아지는 등, FGFA의 모든 요소들이 성능 개선에 기여하는 것을 확인할 수 잇습니다. 다만 실행 시간이 R-50, K=10 기준으로 baseline 대비 3배 이상이 소요되기 때문에, 빠르게 처리해야 하는 경우에 적용하기에는 문제가 있습니다.
다음으로는 K 값에 따라서 성능의 어떻게 되는지를 더 자세히 살펴보고 있습니다. 학습시에는 K=2, K=5의 두 개 값을 사용하였으며, 5가 메모리에서 최대로 들어갈 수 있는 한계였다고 합니다. Testing에서는 K 값을 다양하게 바꿔가면서 정확도를 측정해 보았는데, testing K가 커질수록 당연히 정확도도 올라갔으나, 학습 시의 K 값은 결과에 별다른 영향을 미치지 않습니다. 이는 temporal dropout을 학습에 적용시킨 것이 유효했다는 것을 뜻한다고 해석하고 있습니다.
Combination with box-level techniques
제시한 방법은 feature 수준에서의 성능 향상에 집중하고 있기 때문에, box-level에서의 post processing 등을 추가할 수 있습니다. 여기서는 motion guided propagation(MGP), Tubelet rescoring, Seq-NMS의 세 가지를 추가하여 비교하였습니다. MGP와 Tubelet rescroring은 baseline에서는 효과를 보였으나, FGFA와 함께 쓰였을때는 별다른 개선이 없었습니다. 가장 효과가 큰 Seq-NMS 특히 Aligned-Inception-ResNet과 함께 썼을 때 가장 높은 정확도를 보였습니다.
Conclusions
이 연구에서는 비디오 물체 탐지에서 feature의 정확도를 향상시킬 수 있는 방법을 제시하고 있습니다. 따라서 box-level 정확도 향상 기법들과 상호보완적이며, 함께 쓰였을 때 더 좋은 성능을 내는 것을 확인할 수 있었습니다. 한편 처리 속도가 느려지는 단점이 있기 때문에 더 가벼운 flow network를 써서 속도를 빠르게 하거나, 메모리 사용을 효율적으로 하는 등 개선의 여지가 있습니다.
Share article