Machine Learning|Deep Learning/Anomaly Detection

블랙박스 영상 기반 교통사고 탐지 (Traffic Accident Detection)

Jeina 2019. 12. 9. 01:23

#논문리뷰 #Anomay Detection #Video #영상탐지 #이상치탐지 #교통사고 자동탐지 #이상탐지모델 #Traffic Accident Detection

 

 

 

 

 


이 글은 논문을 읽고 리뷰한 글입니다.
각 부분에 대한 중요도에 따라 통번역 또는 부분번역을 하고, 필요시 추가 설명을 담았습니다.
최대한 정확한 내용을 담으려고 노력하였지만, 부족한 부분이 분명 있을거라고 생각합니다.
어떤 지적이나 조언이든 해주신다면 감사히 받고 더 나은 글을 쓰기 위해 노력하겠습니다.
논문에 사용된 소스코드는 이 곳에서 보실 수 있습니다.

 


 

 

 

 

 

현재 진행하고 있는 블랙박스 영상을 활용한 교통사고 탐지 프로젝트를 위해 자료를 찾던 도중, 재미있는 논문을 발견했습니다.

 

바로 2019년 11월에 열린 IROS2019 학회에서 발표된, 아주 따끈따끈한 [Unsupervised Traffic Accident Detection in First-Person Videos] (1인칭 영상을 이용해 교통사고를 탐지하는 비지도 학습 모델) 논문인데요!

 

이 논문이 영상기반 이상탐지와 관련된 이전 논문들에 비해 눈에 띄는 이유는 바로 쉴 새 없이 움직이는 카메라블랙박스 영상에서 직접적으로 교통사고를 탐지해내는 모델을 다루었다는 점 때문입니다. 영상 기반으로 Anomaly Detection을 시도한 연구는 이전에도 다양했지만, 주로 감시카메라와 같은 정지 상태의 카메라의 영상에서만 이루어졌다는 한계가 있었습니다. 그런 의미에서 움직이는 카메라에서의 이상 탐지를 해냈다는 것은 앞으로 훨씬 더 많은 활용 가능성을 가진다고 볼 수 있습니다! (정지된 감시카메라 영상에 대한 이상탐지도 꽤나 흥미로운 주제인데요, 이에 대해서도 관심이 있으시다면 이 글을 추천합니다!) 

 

이 논문이 특히 인상적이었던 것은, 설명이 꽤나 친절하다고 느껴졌다는 점입니다. 많은 논문들을 읽다보면 설명에 비약이 많아서 이해하기가 난해한 것들이 종종 있는데, 이 논문은 방법론, 모델 설계, 데이터셋 등 모든 내용들에 대해 자세하고 친절하게 설명을 해서 읽기가 편했던 것 같아요.

논문을 구현한 소스코드도 깃헙에 깔끔하게 정리해서 올려놓고..! 참된 연구자다....!! ㅎㅋㅎ

 

그래서 혹시 이 분야에 대해 더 깊은 관심이 있으시다면 논문을 직접 읽어보는 것도 추천합니다! 전체적으로 흥미로운 내용이 많았거든요.👍

 

 

논문 내용에 본격적으로 들어가기 전에 GitHub에 올라온 데모영상을 먼저 확인해보겠습니다. 

 

 

 

 

위 영상에서처럼 교통사고 또는 비정상적인 상황이 발생할 경우 모델이 이를 탐지해서 해당 객체를 빨간색으로 표시하게 됩니다.

그렇다면 이런 이상탐지는 어떻게 이루어지는 것인지, 논문에는 얼마나 참신한 내용들을 담겼는지 등 구체적인 내용들을 소개해드리도록 하겠습니다. 가보시죠! (۶•̀ᴗ•́)۶

 

 

 

 


 

1. Abstract

초록에서는 성공적인 자율주행을 위한 필수적인 기술 중 하나로 교통법규 위반 또는 교통사고와 같은 비정상 상황을 잘 탐지해내는 것을 제시합니다. 지금까지 영상을 기반으로 이상 상황을 탐지하는 모델에 대한 연구는 많이 이루어져왔지만, 중요한 두 가지 이슈를 해결하지 못했다는 점에서 한계가 있었습니다.

 

두 가지 이슈 중 첫 번째는 지금까지 이상탐지에 사용된 영상은 주로 고정된 카메라로 촬영되었고, 따라서 프레임 내의 대부분의 객체가 고정되어 있었다는 점입니다. 고정된 상태로 촬영하는 감시 카메라 등에 대한 활용은 다양하게 시도되었지만, 자동차에 장착된 블랙박스와 같은 움직이는 카메라에는 활용되지 못했습니다.

 

두 번째, 지금까지는 주로 각 이상 상황 별로 카테고리를 나누어 분류하는 방법으로 이상탐지를 했기 때문에, 아낌없는 노력으로 사람이 직접 라벨링 해놓은 훈련 데이터셋이 필요했습니다. 즉, Supervised ― 지도 학습의 형태로 진행되었기 때문에 시간과 비용이 많이 들 뿐만 아니라 모델이 Training 과정에서 보지 못한 데이터에 대해서는 이상 탐지가 되지 않는다는 한계점 또한 있었습니다.

 

이러한 배경에서, 본 논문은 1인칭 시점의 블랙박스 영상을 활용한, 비지도 학습 기반의 교통 상황 이상탐지 모델을 제안합니다. 저자가 접근한 새로운 방식은 바로 영상 프레임 내의 객체들에 대한 미래 위치를 예측해서 이상 탐지를 진행한다는 점입니다. 이 때 모델이 학습하기 위한 정답, Label은 바로 다음 순간의 위치이기 때문에 별도로 사람이 Labeling 할 필요가 없습니다. 즉, Unsupervised ― 비지도 학습의 형태로 학습이 될 수 있고, 이는 많은 시간과 비용을 줄일 수 있습니다. 

 

미래 위치 예측은 1) 모델이 예측한 미래 위치가 실제 위치와 비교했을 때 얼마나 정확한지(Accuracy), 그리고 2) 객체가 보이는 비정상적인 움직임이 일관적으로 관측되는지(Consistency) 등을 평가하며 학습이 진행되고, 잘 학습된 모델은 예측한 위치와 실제 위치의 차이가 큰 경우를 이상 상황으로 탐지해낼 수 있게 됩니다.

 

논문에서는 공개적으로 사용 가능한 HEV-I 데이터셋과 함께, 새로운 교통사고 데이터인 AnAn Accident Detection(A3D) 데이터셋을 이용해서 모델을 평가하였습니다. (여기서 저자가 모델 학습에 사용한 HEV-I 데이터셋은 다양한 블랙박스 영상이 있는 데이터셋인데, 공식 사이트에는 United States. 에 있는 대학에 대해서만 공유 가능하다고 되어있습니다....후...)

 

모델의 퍼포먼스는 지금까지 보여졌던 다른 방법들과 비교했을 때 State-Of-The-Art (SOTA 신기록)의 성능을 보였습니다. 저자가 공개한 코드와 데이터셋은 https://github.com/MoonBlvd/tad-IROS2019 에서 확인할 수 있습니다.

 

 

 

 

2. Introduction

서론에서는 초록에서 설명한 내용과 함께 도로 위 상황에 대한 특징, 비지도 학습으로 진행하는 이상탐지의 이점 등을 설명했습니다.

 

간단히 살펴보면 다음과 같습니다.

 

  • 도로 위 상황은 Long-tailed Distribution ― 긴꼬리 분포를 가진다는 특징을 가진다.
  • 이는 "전체 일어날 수 있는 상황의 가짓수는 거의 무한대에 가깝지만, 각 상황이 일어날 확률은 매우 적다"는 뜻이다.
  • 여기서 중요한 것은, 특이한 상황들이 일어날 확률이 아무리 적다고 해도, 언제든 일어날 수는 있다는 사실이다.
  • 하지만, 흔하지 않은 사건들은 너무 희귀해서 그에 대한 충분한 Training data를 수집하기 쉽지 않다.
  • 따라서 현실 세계에서 가능한 모든 상황을 모델에 입력해서 분류하도록 하는 것에는 분명한 한계가 있다.
  • 이러한 문제는 "정상 상황인지, 아니면 이상 상황에 대한 신호가 존재하는지" 의 이진 분류로 단순화해서 해결할 수 있다. 
  • 이에 대해 본 연구는 "블랙박스 영상 내에 잡히는 특정 객체의 바로 다음 순간 위치를 예측한다"는 새로운 접근법을 시도하였다.
  • 이 접근에는 "만약 이상 상황이 발생한다면 모델이 예측한 위치에서 크게 벗어난 위치에 있을 것" 이라는 대전제가 있다.
  • 이 경우 모델에 입력되는 학습 데이터는 정상 상태의 주행 데이터뿐이기 때문에 손쉽게 얻을 수 있을뿐만 아니라 별다른 labeling 작업도 불필요하다는 장점이 있다.
  • 본 연구와 가장 가까운 연구인 Liu et al. 에서는 전체 RGB frame에 대해 예측해서 다음 순간의 프레임과 얼마나 다른지를 탐지했다.
  • 하지만 Liu et al. 에서는 정지되어 있는 카메라를 사용했기 때문에, 빠르게 움직이는 주행 영상을 사용하는 본 연구에서는 전체 프레임을 예측하는 것이 거의 불가능하다는 점에서 적용이 어렵다.
  • 따라서 우리는 전체 프레임에 대한 예측을 객체의 행동반경만 예측하는 것으로 변형함으로써 이러한 문제를 해결했다.
  • 또한, 우리는 블랙박스가 장착된 1인칭의 차 (ego-vehicle) 의 움직임 또한 예측함으로써 스스로의 움직임에 대한 이상치 탐지도 함께 진행하였다.
  • 이 과정은 탐지된 이상치가 나 자신의 사고인지, 또는 다른 차량의 사고를 목격한 것인지를 구분할 수 있게 한다.
  • 우리는 YouTube에서 수집한 약 1,500개의 비디오세 가지의 데이터셋에서 엄청난 양의 모델 평가를 진행했다.
  • 실험 결과, 우리 방법의 성능은 기본적인 Baseline 뿐만 아니라 기존의 SOTA 성능을 훨씬 뛰어넘은 것을 확인하였다.

 

(↓ 본문 전체 )

더보기

자율주행은 우리가 몸소 느끼고 있듯이 세상을 새롭게 바꿀 수 있는 잠재력을 가지고 있다. 교통수단을 더 빠르고, 안전하고, 저렴하게 만들뿐만 아니라 노동력 또한 크게 줄일 것이다. 다만, 그렇게 되기 위해서는 얼마든지 새로운 상황을 마주칠 수 있는, 엄청난 다양성을 가진 실제 세계의 도로 위에서, 정확하고 안전하게 시스템이 유지될 수 있어야 한다. 

 

도로 위 상황은 Long-tailed Distribution ― 긴꼬리 분포를 가진다는 특징이 있다. 즉, 도로 위에서 주로 일어나는 상황은 그저 차들이 정상적으로 달리거나 멈춰 있는 것과 같이 몇 가지가 채 되지 않는다. 하지만 전체 일어날 수 있는 상황의 가짓수는 거의 무한대에 가까운데 ― 언제 어디서 갑자기 동물이 튀어나올지 모른다거나, 차가 갑자기 잘못된 방향으로 튼다거나 ― 이런 다양한 사건들이 일어날 확률은 반대로 매우 작다. 중요한 것은, 이러한 특이한 상황들이 일어날 확률이 아무리 적다고 해도, 언제든 일어날 수는 있다는 사실이다. 더 정확하게는, 오히려, 어떤 날에 적어도 하나의 특별한 상황이 일어날 확률은 꽤 높다. 

 

지금까지 이루어진 다양한 Computer Vision 관련 연구 중에는, 딥러닝을 활용하여 블랙박스 영상에서 특정 행동이 시작하는 지점을 탐지하고, 그 행동이 어떤 행동인지 분류하는 행동탐지 연구가 있었다. Long-tailed 분포라는 것은, 흔하지 않은 사건들은 너무 희귀해서 그에 대한 Training data를 수집하기 쉽지 않다는 뜻이기도 하다. 그래서 어떤 연구에서는 무인 자동차가 상용화되기 위해서는 수십억 마일을 달리며 테스트를 해 봐야 비로소 흔치 않은 상황들에 대해서도 어느정도 이상의 정확도를 달성할 수 있다고 한다.

 

시도해볼 수 있는 다른 접근법으로는, 모델을 가능한 모든 상황에 대해 학습시키지 않고 그저 정상 상황인지, 아니면 이상 상황에 대한 신호가 존재하는지를 탐지하도록 만드는 것이 있다. 이 방법은 Fully-supervised 된 분류 기반의 모델과는 다르게 비지도 학습 관점에서 접근하는 방법으로, "어떤" 이상상황인지 정확하게 파악을 할 수는 없지만, 적어도 "비정상적인", 또는 "위험한" 상황이라는 것은 충분히 탐지해낼 수 있다. 따라서 본 연구는 블랙박스 영상 내에 잡히는 자동차, 자전거, 보행자 등의 특정 객체가 바로 다음 순간의 미래에 이동할 위치를 예측한다는 새로운 접근법을 시도하였다. 이 방법을 사용할 경우 모델에 입력할 학습 데이터는 정상 상태의 주행 데이터로, 손쉽게 얻을 수 있을뿐만 아니라 별다른 labeling 작업도 불필요하다는 장점이 있다. 

 

만약 모델이 대량의 정상 데이터로 잘 학습했을 경우, 모델은 각 객체의 미래 위치를 효과적으로 예측할 수 있을 것이다. 이 부분에서 우리는 "만약 이상 상황이 발생한다면 모델이 예측한 위치에서 크게 벗어난 위치에 있을 것" 이라는 기본 가정을 두었다. 이는 자동차끼리 부딪히는 등의 사고가 일어날 경우 차량의 움직임이 예측불가능하다는 점에서 합리적인 가정이라고 할 수 있다.

 

아마 본 연구와 가장 가까운 연구는 영상에서의 이상 탐지를 다룬 Liu et al. 일 것이다. 그들은 전체 RGB frame에 대한 미래 예측을 했고, 예측한 프레임이 실제 다음 순간의 프레임과 얼마나 다른지를 척도로 이상탐지를 진행했다. 하지만 이 연구에서는 정지되어 있는 카메라를 사용했기 때문에, 빠르게 움직이는 주행 영상에는 전체 프레임을 예측하는 것이 거의 불가능하다는 점에서 적용이 어렵다.

 

우리는 전체 프레임에 대한 예측을 객체의 행동반경만 예측하는 것으로 변형함으로써 이러한 문제를 해결했다. 또한, 우리는 블랙박스가 장착된 1인칭의 차 (ego-vehicle) 의 움직임 또한 예측함으로써 스스로의 움직임에 대한 이상치 탐지도 함께 진행하였다. 이 과정은 탐지된 이상치가 나 자신의 사고인지, 또는 다른 차량의 사고를 목격한 것인지 구분할 수 있도록 했다. 

 

우리는 YouTube에서 수집한 약 1,500개의 비디오세 가지의 데이터셋에서 엄청난 양의 모델 평가를 진행했다. 실험 결과, 우리 방법의 성능은 기본적인 Baseline 뿐만 아니라 기존의 SOTA 성능을 훨씬 뛰어넘은 것을 확인하였다.

 

 

 

 

3. Unsupervised Traffic Accident Detection In First-Person Videos

자율주행 자동차는 어떤 상황이 발생하더라도 반드시 그  상황을 인식하고, 이를 피하는 행동을 할 수 있어야 합니다. 이를 위해서 이전 연구에서는 전체 프레임에 대한 예측을 활용해 이상치를 탐지했지만, 움직이는 차량에서 촬영한 영상은 나 자신과 객체 모두가 움직이고 있으므로 이를 적용하기 어렵다고 하였습니다. 또한, 사실 주행 영상에는 건물이나 도로같이 움직이지 않는 객체도 많이 있기 때문에 이에 대한 미래 위치는 예측할 필요가 없기도 합니다. 따라서 본 연구에서는 객체 단위로 위치를 예측하며, 그 예측값에서 크게 벗어날 경우 이상 상황이 일어났다고 간주하는 방식을 취했습니다.

 

Liu et al. 연구와 같이, 본 연구 또한 모델을 대량의 정상 상태 데이터셋으로 먼저 학습시켰습니다. 이러한 학습을 거치면 모델은 이 세상에 존재하는 모든 이상 상황에 대해 직접적으로 노출되지 않더라도 '정상 패턴'이라는 것이 무엇인지 학습할 수 있으며, 나아가 객체들이 정상적으로 움직일 위치까지 잘 예측할 수 있게 됩니다. 또한, 스스로의 움직임(ego-motion)에 의한 영향을 고려하기 위해 입력값에는 ego-motion prediction을 추가하였습니다. 과거 프레임을 바탕으로 객체의 현재 위치를 예측했을 때, 모델에 대한 평가는 3-B에서 설명할 세 가지 전략을 이용해 진행하였습니다.

 

 

A. Future Object Localization (FOL) 

1) Bounding Box Prediction

FOL에서 사용하는 용어는 다음과 같습니다.

  • 시간 $t$ 일 때,
  • 객체를 감싸는 Bounding box는 $X_t = [c^x_t, c^y_t, w_t, h_t]$ 로 표현
  • 이 때 $(c^x_t, c^y_t)$는 box의 중심이고, $w_t, h_t$는 box의 가로, 세로 길이
  • 모델이 예측한 미래 Bounding box 모음은 $ {\bf Y_t} = \{Y_{t+1}, Y_{t+2}, ..., Y_{t+\delta} \}$ 로 표현 (현재 시간 $t$ 에서 $t+\delta$ 까지 예측)
  • 각 $Y_{t+k}$ 또한 $[c^x_t, c^y_t, w_t, h_t]$ 로 이루어짐
  • $O_t$ 는 이미지 정보를 담은 벡터 (Image와 Optical flow의 정보를 RoIPool을 이용해 합친 것)

 

 

 

 

위 그림은 모델의 전체 구조로, 간단히 정리하자면 모델은 

  • 이미지 정보를 담은 $O_t$, 객체의 위치 정보를 담은 $X_t$, 그리고 과거 정보인 $H_{t-1}$를 입력받아서
  • ${\bf Y_t}$ 를 출력합니다.

Yao et al. 에서 모델에 대한 영감을 받았지만, 세부 구조는 완전히 다릅니다. 이전 연구에서는 최종 결정을 내리기 위해 매 프레임마다 데이터를 입력받은 후 이전의 10 프레임을 전부 다시 생성해야했지만, 본 모델은 현재에 대한 정보만 출력합니다. 이는 추론(inference)하는 시간을 현저히 감소시키는 효과를 갖는다고 합니다.

 

모델의 Encoder(Enc)는 GRU 기반의 구조입니다. 각 객체의 위치 정보를 추출하는 Location Encoder는 두 부분으로 나뉘는데, 하나는 객체의 현재 bounding box에 대한 정보인 $X_t$ 를 입력받고, 다른 하나는 시간 정보와 공간 정보를 합친 Spatiotemporal feature를 입력받아서 특징을 추출하게 됩니다. 여기서 Spatiotemporal feature는 Optical flow를 RoIPool 과정을 통해 추출한 벡터로, 이미지 내의 움직임에 대한 추가적인 정보를 포함합니다. (Optical flow란 객체의 움직임에 대한 정보를 담은 데이터인데, 이 개념이 낯설다면 이 영상으로 빠르게 감을 잡을 수 있습니다!) 이러한 입력값을 통해 Encoding 된 벡터들은 Location Decoder에 입력되어 즉각적인 다음 순간의 위치를 빠르게 예측해내도록 합니다.

 

2) Ego-Motion Cue

블랙박스가 탑재된 내 자신의 차량인 "Ego-motion" 정보는 다음과 같이 나타냅니다.

  • 시간 $t$ 일 때,
  • $E_t$ 는 내 차량의 주행상태(ego-motion)에 대한 정보로, $E_t = \{ \phi_t, x_t, z_t \}$로 구성
  • 여기서 $\phi_t$ 는 촬영 각도, $x_t, z_t$ 는 처음 시작점으로부터 $x$ 축, $z$ 축 방향으로 이동한 거리를 나타냄

 

Ego-motion 정보는 보다 정확한 예측을 위해 꼭 필요하기 때문에 이를 모델에 학습시키기 위해서 모델은 ego-motion 정보를 입력으로 받는 Odometry Encoder라는 또다른 Encoder를 가집니다. 이 부분 또한 RNN encoder-decoder 구조로써,

  • 현재 정보와 직전 정보의 차이값인 $E_t - E_{t-1}$ 을 Encoder에 입력해서 Encoding 한 후,
  • Decoder는 ego-motion의 예측값인 $ {\bf E_t} = \{E_{t+1}-E_t, E_{t+2}-E_t, ..., E_{t+\delta}-E_t \}$ 를 출력합니다.

 

여기서 ego-position 정보로 현재 정보값을 사용하지 않고 현재와 과거의 차이값인 $E_t - E_{t-1}$ 을 사용하는 이유는 이전까지 축적된 에러를 제거하기 위함입니다. 즉, 지금까지 축적되어 있지만 겉으로 드러나지 않는(implicit) 에러를 무시하면서, 현재의 순간적인 motion 변화를 담기 위해 차이값을 사용합니다.

여기서 출력된 $\bf E$ 는 다시 Location Decoder에게 입력되어 객체의 미래 위치를 보다 정확하게 예측할 수 있도록 도와주는 역할을 합니다.

 

3) Missed Objects

영상 프레임을 지나면서 순간순간 탐지되는 모든 객체들은 $Trks$ 라는 tracker 리스트에 담아둡니다. 이는 어떤 순간 특정 객체가 다른 차량 등에 의해 가려져서 보이지 않게 되었을 때에도 그 객체를 잊지 않기 위함입니다. 예를 들어 어떤 트럭이 $t$ 일 때 감지되었지만, $t+1$ 부터 $t+5$ 구간에서는 다른 차량에 가려 보이지 않는다고 해도 그 객체의 현재 위치를 계속 추정할 수 있어야 어떤 사고도 놓치지 않을 수 있습니다. 주행 영상에서는 객체들끼리의 겹침으로 인해 서로 가리게 되는 경우가 많으므로, 가려서 안 보이는 순간에도 연속적으로 그 위치를 예측해놓을 수 있어야 합니다. 이를 위한 장치가 바로 $Trks$ 인 것입니다. 

 

$Trks$ 내의 모든 객체는 각각 고유한 ID를 가집니다. 즉, 만약 특정 트럭이 한 번 객체로 감지가 되었다면 그 트럭은 잠시 안보이거나 프레임을 벗어나도 일정 시간동안에는 계속 그 ID로써 $Trks$ 안에 존재합니다. 

 

$Trks$ 에 대한 용어는 다음과 같습니다.

  • $Trks[i].X_t$ :  $Trks$ 에 있는 객체 중 $i$ 번째 객체의 $X_t$ 값
  • $Trks[i].\bf \hat{Y}_t$ :  $Trks$ 에 있는 객체 중 $i$ 번째 객체의 $X_t$ 값을 이용해 예측한 미래 위치 벡터
  • $Trks[i].age$ :  $Trks$ 에 있는 객체의 나이 ($Trks$ 에 있는 객체가 너무 오래되었다면 필요 없으므로 age를 이용해 삭제)
  • $D$ :  $Trks$ 안에 존재하는 모든 ID 리스트
  • $C$ :  $Trks$ 내의 객체 중, 현재 프레임에서 감지되는 객체들의 ID 리스트

 

 

지금까지 설명한 모든 요소들을 이용한 FOL-Track의 전체 알고리즘은 다음과 같습니다.

 

 

알고리즘은 크게 1) 현재 관찰되는 객체들에 대한 정보 update 2) missed된 객체들에 대한 정보 update의 두 단계로 나뉩니다.

 

전체 알고리즘을 한 줄 한 줄 자세히 뜯어보시죠!

  • 먼저, $A$ 는 Tracker에서 가장 오래된 객체의 나이로 설정
  • 첫 번째 update observed trackers
  • $C$ (현재 관찰되는 객체 리스트) 의 각 객체 $i$ 에 대해 for 문 반복
    • 만약 $i$ 가 $D$ (전체 객체 리스트) 에 아직 없다면, 새로운 객체이므로:
      • $Trks[i]$ 를 새로 생성 (initialize)
    • $i$가 $D$에 있다면, 원래 있던 객체이므로:
      • $Trks[i].X_t$ 를 현재 보여지는 $X^(i)_t$ 의 정보로 업데이트
      • $Trks[i].\bf \hat{Y}_t$ 는 현재 정보인 $X^(i)_t$ 와, $O_t$ 로 예측한 $FOL(X^(i)_t, O_t)$ 값으로 업데이트
  • 두 번째 ― update missed trackers
  • $D-C$ (전체 객체 리스트에 있지만 현재 안보이는 객체들) 의 각 객체 $j$ 에 대해 for 문 반복
    • 만약 $Trks[j].age$ 가 가장 오래된 나이인 $A$ 보다 크다면, 너무 오래되었다는 뜻이므로:
      • $Trks$ 에서 $Trks[j]$ 를 삭제
    • 그게 아니면, 잠깐 가려진 것이므로:
      • 현재는 실제 위치값인 $Trks[j].X_t$ 를 알 수 없으므로, 이전에 예측했던 값인 $Trks[j].\hat{Y}_t$ 로 업데이트
      • $Trks[j].\bf \hat{Y}_t$ 는 방금 업데이트한 $Trks[j].X_t$ 와 $O_t$ 로 예측한 $FOL(X^(i)_t, O_t)$ 값으로 업데이트

 

즉, 전체적으로 현재 보이는 객체를 업데이트하거나, 안보인다면 이전에 예측했던 값을 이용해 또다시 예측하는 방법을 취하는 것입니다.

 

 

B. Traffic Accident Detection

지금까지 전체적인 알고리즘에 대해 살펴보았습니다. 그 알고리즘을 통해 모델이 보다 잘 학습할 수 있도록 하는 세 가지 전략 ― 손실함수를 더 구체적으로 살펴보도록 하겠습니다.

 

세 가지는 각각 "Predicted Bounding Box - Accuracy", "Predicted Box Mask - Accuracy", 그리고 "Predicted Bounding Box - Consistency" 으로, 전체적인 흐름에 대한 그림은 다음과 같습니다.

 

 

 

1) Predicted Bounding Boxes - Accuracy

첫 번째의 가장 간단한 평가지표는 바로 객체의 다음 순간 위치로 예측한 bounding box와 실제 위치 box 가 얼마나 유사한지를 측정하는 것입니다. FOL 모델은 특정 순간으로주터 $\delta$ 번째 미래까지의 위치를 예측합니다. 이는 곧 시간 $t-\delta$ 부터 $t-1$ 는 $t$ 에서의 위치를 예측한다는 뜻입니다. 따라서 현재 시간 $t$ 일 때의 예측값은 이전  $\delta$ 개의 프레임에서 예측한 값들의 평균으로 사용할 수 있습니다. 

 

예측한 bounding box와 실제 box 간의 유사도는 Intersection over Union ― IoU 값으로 측정합니다. IoU는 예측 box와 실제box가 겹친 부분의 면적을 두 box의 합집합 면적으로 나눈 값입니다. 즉, 정확히 겹쳤을 경우 IoU = 1 이고, 아예 안 겹쳤을 경우 IoU = 0 이 됩니다. 따라서 두 box가 겹쳐진 부분이 더 많을수록, IoU 값은 더 높아집니다.

 

IoU의 개념, IoU의 값은 0과 1 사이의 실수이다.

 


따라서 시간 $t$ 이전의 $\delta$ 개의 예측값의 평균과 실제 값 간의 손실함수는 다음과 같이 정의됩니다. 다음과 같이 계산할 경우, $IoU \in [0, 1]$ 이기 때문에 그에 대한 평균값으로 계산된 손실함수값 또한 $L_{bbox} \in [0, 1]$ 값을 가집니다. 다만, IoU 값은 높을수록 정확한 예측임을 나타내지만, $L_{bbox}$ 는 1에서 IoU 값을 뺐으므로 그 값이 작을수록 정확한 예측이 됩니다.

 

 

2) Predicted Box Mask : Accuracy

심각한 사고가 났을 때에는 객체들의 형상이 크게 꺾이거나 왜곡되기 때문에 부정확한 탐지가 일어납니다. 심지어, 강한 충격 등에 의해 ego-motion이 크게 변화할 때에도 영상 화면이 급격하게 변화하므로 False alarm이 일어날 가능성이 커집니다. 따라서 이러한 한계점을 극복하기 위해 사용한 방법은 바로 영상 화면을 Bounding box와 Background 두 가지로 나누어 0과 1로 masking 하고, masking 된 이미지로 IoU를 계산한 값을 또다른 손실함수에 이용하는 것입니다.

 

구체적으로 살펴보면 다음 그림과 같습니다. 다음 그림은 전체 영상 이미지를 Bounding box 내부와 외부로 나누어 Bounding box 내부의 pixel 값은 1을, 그 외의 pixel 값은 0을 준 모습입니다. 

 

 

이를 수식으로 나타내면 다음과 같습니다.

 

 

이렇게 이미지를 masking 된 이미지로 변환한 후, 예측값과 실제값 간의 IoU를 계산합니다.

 

 

이 경우 또한 위에서와 같이 $IoU \in [0, 1]$ 이기 때문에, 손실함수 값 또한 $L_{mask} \in [0, 1]$ 이며, $L_{mask}$ 값이 낮을수록 정확한 예측임을 나타내게 됩니다. 

 

이렇게 계산된 $L_{mask}$ 는 전체 객체에 대한 bounding box를 한꺼번에 평가하는 것이라고 할 수 있습니다. 이는 각 객체에 대한 세부적인 정확도뿐만 아니라, 전체적인 화면에 대해서도 정확도를 끌어올릴 수 있도록 합니다. 

 

 

3) Predicted Bounding Boxes - Consistency

마지막은 Consistency를 이용한 평가입니다. 위의 두 가지 방법은 정확도만을 이용해서 평가를 진행했지만, 사실 주행 영상에서의 Anomaly Detection은 항상 정확하지 않을 수 있습니다. 이는 여러 객체가 서로를 가리는 등에 대한 상황이 발생하기 때문입니다. 따라서 이를 극복하기 위한 장치로, "Anomaly가 발생한다면, 이는 단 한 순간에 머무르지 않고 일정 기간에 걸쳐 쭉 현저하게 Anomalous 한 양상을 보인다" 라는 한 가지의 가정을 더 사용했습니다. 즉, 일관성 ― Consistency 라는 척도를 추가한 것입니다.

 

앞서 언급한 바와 같이, 우리의 모델은 특정 순간으로부터 $\delta$ 개의 미래를 예측합니다. 따라서 우리는 $\hat Y_t$ 와 $\hat Y_{t-j}$ 를 비교하며, ${c^x, c^y, w, h}$ 중 가장 큰 차이를 보이는 값을 선택한 후, 모든 객체에 대한 평균값을 구합니다. ${c^x, c^y, w, h}$ 값들 중 어떤 값이 가장 큰 차이를 보일지 모르기 때문에, 네 값에 대한 STD(편차) 값을 모두 구한 후, 그 중 가장 큰 값을 선택하는 방식을 취했습니다.

 

 

 

 

4. Experiments

기존에 있던 데이터셋을 포함하여, A3D 데이터셋을 추가해 다양한 실험을 진행했습니다. A3D 데이터셋은 총 1500개로 East Asia에서 촬영된 블랙박스 주행 영상이며, YouTube에 영상을 업로드해서 사용하였습니다. 각 영상은 Anomalous 상황이 발생하는 지점의 Start와 End 지점을 총 세 명의 사람의 동의를 거쳐 라벨링 되었습니다. Start 지점은 "accident가 불가피하다고 판단된 시점"으로 잡았으며, End 지점은 "모든 움직임이 정상화 되거나 완전히 멈춘 시점"으로 설정하였습니다. 

 

실험에 사용한 데이터셋 ― *: 감시카메라(정지된 카메라) / **: 1인칭 시점 카메라

 

A3D 데이터셋은 기존에 있던 데이터셋보다 훨씬 다양한 객체 차, 트럭, 자전거, 보행자, 동물 등을 담고 있으며 다양한 날씨 조건 하에 촬영되었습니다. 

 

실험의 세부 사항과 데이터를 다루는 데 사용된 모델 등은 다음과 같습니다. 

  • 라이브러리 : PyTorch
  • GPU : Nvidia Titam Xp Pascal GPU
  • Ego Odometry Calculation : ORB-SLAM 2.0
  • Optical Flow : FlowNet 2.0
  • Camera Intrinsic Matrix : HEV-I 의 matrix를 A3D와 SA 데이터셋에도 활용
  • Feature count : 12,000
  • RoIPool operator : 5 x 5
  • Final flattened feature : $O_t \in \mathbb {R}^{50}$
  • RNN cell : GRU
  • GRU hidden size for future object localization : 512
  • GRU hidden size for ego-motion prediction : 128
  • Optimizer : RMSprop
  • learning rate : $10^{-4}$
  • no weight decay
  • 100 epochs & batch size 32

 

FOL 실험은 K-NN, Conv-AE 등 다양한 Baseline과 비교되었는데, 기존의 SOTA 값이었던 46~50 대의 수치를 훨씬 뛰어넘는 55~60 대의 결과가 나타났습니다. (!) 

 

실험 결과(AUC값): 기존의 SOTA를 훨씬 뛰어넘는 수치를 보인다

 

실제 이상치 탐지 결과는 다음과 같습니다.

 

우리의 모델 중 best 인 FOL-MaxSTD과 SOTA의 결과 비교 (A3D dataset)

 

우리의 모델 중 best 인 FOL-MaxSTD과 SOTA의 결과 비교 (SA dataset)

 

A3D 데이터셋과 SA 데이터셋 모두에서 기존 SOTA 보다 확연히 뛰어난 결과를 보입니다.

 

 

마지막의 결과는 실패 사례로,  맨 왼쪽의 차량이 나무에 가려지면서 사고를 탐지하지 못한 케이스입니다. 이는 모델이 더 중요한 객체에 집중하지 않고 모든 객체를 동등하게 바라보았기 때문이라고 할 수 있습니다. 이와 같이 사고가 나는 객체가 완전히 가려지거나, 특정 개체가 사고가 났음에도 불구하고 정상적인 형태의 움직임을 보일 때는 False negative 가 일어날 수 있음을 나타냅니다. 

 

 

실패 사례 ― False alarm 및 False negative

 

 

 

 


이렇게 논문이 실험한 내용까지 살펴보았습니다.

아직 실제 자율주행에 당장 사용되어도 될 정도의 성능은 아니지만,

움직이는 차량에서 찍은 영상을 End-to-End 방식으로 이상탐지 해낼 수 있다는 점이 주목할 만한 논문이었던 것 같습니다.