About online action processing in video (Part.2 – Online Temporal Action Localization)

Part.1에서는 streaming video에서의 Online Action Detection (OAD) task의 한 방법론에 대해 알아보았었습니다. 본 글은 이번 주차 X-Review의 두 번째 Part로, Online Temporal Action Localization (OnTAL)의 한 방법론에 대해 알아보겠습니다.

리뷰의 길이도 길이지만, 두 개의 task와 각 방법론을 하나의 글에서 자연스럽게 연결시키기 애매할 것 같아 두 Part로 나눠 작성한 것이니 양해해주시면 감사하겠습니다.

OnTAL task 자체가 본 논문에서 최초로 제안되었고, 이전에 살펴봤었던 OAD와 가장 크게 다른 점은 단순히 프레임의 action을 예측하는 것이 아닌 예측된 프레임들을 모아 하나의 action instance 구간으로 만들어낸다는 것입니다. Action의 시작과 끝 지점을 어떻게 만들어내는지가 관건일 것입니다.

1. Introduction

비디오에 대한 연구는 예전부터 활발하게 이어지고 있었습니다. 물론 근 몇년 간, 하드웨어의 발전이나 비디오 서비스 활성화로 인해 학계에서도 더욱 가속이 붙은 것 또한 사실입니다. 다들 아시다시피 비디오에서의 대표적인 task로는 Image classification과 유사한 ‘Action recognition’, 텍스트 쿼리에 대한 답을 비디오에서 찾아내는 ‘Video question and answering’, ‘Video summarization’, ‘Temporal action localization’ 등이 포함됩니다. 이러한 task들을 연구할 때 학계에서는 공통적으로 offline 상황을 가정합니다. 다시 말해, inference 시 모델이 한 비디오의 전체 구간에 접근 가능하다는 뜻입니다. 여러 task 중 본 논문에서는 OnTAL task를 다룬다는 것은 알고 계실 것입니다.

물론 offline 상황을 가정하는 것이 학계에서 통용되고 있다는 것은 사전에 각 분야의 연구자들이 충분히 합리적이라고 판단하였기에 계속 이어져 내려오는 것이겠죠. 실제로 저희가 접하는 유튜브 동영상들도 offline 환경 하에 연구에 사용된다고 볼 수 있을 것입니다. 그럼에도 불구하고, 최근에는 실시간 온라인 강의를 듣거나 비디오를 통한 회의도 전세계적으로 많이 이루어지고 있습니다. 또 라이브 스트리밍 서비스도 늘어나고 있고 그에 대한 수요도 그만큼 꾸준히 증가하고 있다고 합니다.

위와 같은 상황 속에서, 비디오에 대해 online 환경을 고려하여 task를 수행하는 것도 아직 주류 분야는 아니지만 꽤나 효용적일 것이라고 생각합니다. 특히 제가 이번 task를 살펴보는 목적인 감시카메라의 경우도, 실시간성이 중시된다면 기존의 녹화본만을 저장하던 것과는 또 다른 역할을 수행해줄 수 있을 것이라고 생각합니다. 이렇게 비디오의 실시간적인 성격도 함께 고려하며 기존에 학계에서 연구되던 task들을 발전시켜 나간다면 좀 더 적용범위를 넓힐 수 있다는 이점이 생길 것으로 보입니다.

제가 앞서 본 논문이 OnTAL task 자체를 처음으로 제안하는 논문이라고 하였는데, 이전 연구 중 그나마 비슷한 결의 OAD를 다시 한 번 살펴보고 넘어가겠습니다.

그림 1

OAD는 그림 1에서처럼 온라인으로 비디오가 주어지고, ‘아이가 교통사고를 당할 확률’을 프레임 별 0~1 사이의 확률값으로 예측하는 상황을 예시로 들 수 있습니다. 이렇게 프레임 별로 특정 사건의 확률을 연산하는 OAD task도 있었고, 각 프레임이 특정 사건의 시작점일 확률을 예측하는 Online Detection of Action Start(ODAS) task도 존재하였습니다. 각 프레임 단위로 예측을 수행하는 이전 방법론들과 다르게, 본 논문에서는 특정 클래스의 action instance에 대한 “구간”을 예측해내는 좀 더 복합적인 task인 OnTAL을 제안한 것입니다.

조금 더 이해를 돕기 위해 task 간의 차이점을 예시를 들어 설명해겠습니다. 전체 구간에 걸쳐 3번의 ‘Jump’가 일어나는 총 30프레임 짜리 비디오가 있다고 가정해보겠습니다. 저희는 본능적으로 3번의 ‘Jump’라는 것이 지면에서 올라갔다가 다시 착지하는 동작이 3번 일어나는 상황을 떠올리게 됩니다. 하지만 OAD에서는 오직 프레임 단위로만 해당 action의 발생 여부를 따지기 때문에 단지 30번의 ‘Jump’가 존재한다고 예측해낼 뿐이지 우리가 알고있다시피 3번의 ‘Jump’가 발생했다고는 알아차릴 수 없는 것입니다. 이와 다르게 OnTAL은 ‘Jump’라는 action의 instance를 잡아내기 때문에 모델이 제대로 동작한 경우, 3번의 ‘Jump’가 일어났고 그 구간이 어디인지까지 알아낼 수 있게 되는 것이죠.

다시 TAL로 넘어와서, OnTAL을 수행하기 위해 고려해야 할 TAL과의 차이점은 무엇일까요? 지금까지 제가 작성하였던 WTAL 관련 X-Review들을 잘 보시면, 마지막 inference를 수행할 때 마치 Object detection에서와 유사하게 여러 proposal을 만들어낸 뒤 NMS를 적용하는 과정이 들어가 있었습니다. 이것은 이전 시간 축에 대해 생성해 낸 모든 proposal에 접근 가능할 때 tIoU와 confidence score를 고려해야 수행할 수 있는데요, online 상황에서는 그렇지 못하기 때문에 조금은 다른 접근 방식이 필요할 것입니다. 자세한 내용은 방법론에서 함께 설명드리겠습니다.

그림 2

위 그림 2를 통해 실시간으로 비디오 프레임들을 입력받아 즉시 proposal과 label을 붙여내는 모습을 볼 수 있습니다. 중간에 표시된 ‘Temporal Tolerance’는 들어오는 프레임과 예측 시점 사이의 delay에 해당합니다. 해당 tolerance가 0이면 현재 시점까지만을 보고 예측하는 hard online 상황이라고 볼 수 있고, 어느정도 tolerance를 주어 그만큼의 미래까지 본 뒤 예측하는 상황으로 더 많은 데이터를 갖고 예측하는 만큼 성능이 소폭 상승할 것입니다. 수행하는 downstream application에 따라, 성능과 속도 간의 trade-off를 잘 고려하여 선택할 수 있겠죠.

우선 논문의 contribution부터 정리하겠습니다.

  1. We introduce a new task of understanding human activity in videos names Online Temporal Action Localization(OnTAL), which aims to detect instance-level actions instantly from the streaming videos.
  2. We propose a 2-pass action instance detection method that finds temporal boundaries of an action instance by detecting the end of an action in the forward pass followed by detecting the start of action in the backward pass.
  3. We propose a two-stage action end detection which consists of multi-head detectors and its refinement module.
  4. Extensive experiments on THUMOS14 and ActivityNet v1.3 show effectiveness and robustness of our model, and give an inspiration to tackle with the new video understanding task.

Contribution 중 2, 3은 방법론 관련 내용인데, task를 제안하는 논문인만큼 방법론이나 아이디어가 그리 복잡하지 않습니다. 아래에서 하나씩 알아보도록 하겠습니다.

2. Approach

2.1 Problem definition

실시간으로 스트리밍되고 있는 비디오 V_{0:t} = \{I_{0}, I_{1}, \cdots{}, I_{t}\}는 시점 0에서 시작하여 현재 시점 t까지 진행되고 있고, 각 시점마다의 프레임은 I \in{} \mathbb{R}^{W \times{} H \times{} 3}이라고 칭하겠습니다.

현 시점까지의 비디오 V_{0:t}가 주어졌을 때 방법론의 목적은 좋은 action instance detector f를 학습시키는 것이고, 그 출력값 f(V_{0:t}) = (t_{s}, t_{e}, c, p)로 각각 action instance의 시작, 끝, 클래스, confidence score를 의미합니다. 시점이 존재한다는 것만 제외하고 목적은 TAL과 동일합니다.

앞서 언급하였던 temporal tolerance T를 고려한다면, f_{T}(V_{0:t}, V_{t+1:t+T}) = (t_{s}, t_{e}, c, p)로 표현할 수 있고 이는 0:t 구간의 예측을 t+T 시점의 프레임까지 보고 하겠다는 의미입니다. 만약 T=0이면 hard online setting, T=\infty{}면 offline setting의 기존 TAL과 동일한 상황을 의미합니다.

2.2 Algorithm overview

전반적인 방법론에 대해 간략히 알아보겠습니다.

그림 3

그림 3에서 일단 크게 파란색 화살표인 forward pass, 주황색 화살표인 backward pass로 나뉘어 있는 것을 볼 수 있고 각각에서 end detection, start detection을 수행합니다. 각 detection module은 결국 현재 보고 있는 프레임이 끝 지점 또는 시작 지점일 확률을 내뱉는 것이 목적이며 레이어는 LSTM, FC가 전부인 것을 확인하실 수 있습니다.

먼저 프레임을 입력 받으면 pretrained feature extractor를 통과시켜 feature vector x_{t} \in{} \mathbb{R}^{d}로 만들어줍니다. 이후 저자의 아이디어가 드러나는 부분인데, 다짜고짜 action의 시작 지점을 잡아내는 것이 아니라 끝일 확률을 먼저 계산해줍니다. 그림 3에서 파란색 점선 박스 내 Action End Detection은 multi-head detector로 구성되어 있고 이후 End Detection Refinement(EDR) 과정을 거쳐주는 것을 볼 수 있습니다.

Multi-head detector는 현재 시점의 프레임이 action의 끝일 확률을 예측하는 Action End Head(AEH)와 시작, 끝과 관계 없이 action일 확률을 예측하는 Action Detection Head(ADH)로 구성되어 있습니다. AEH는 현재 프레임에서 action이 끝났을 확률인 p_{t}^{e} \in{} [0, 1]^{(C+1)}을 출력으로 내뱉고, ADH는 현재 프레임이 action일 확률 p_{t}^{a} \in{} [0, 1]^{(C+1)}을 내뱉습니다. 각각이 (C+1)차원이라는 것은 클래스 별로 확률값을 예측해준다는 것이겠죠.

이후 EDR 모듈에서는 현 시점으로부터 l_{r}개 과거 프레임들의 p_{t}^{a}, p_{t}^{e}, 즉 p_{t-l_{r}:t}^{a}, p_{t-l_{r}:t}^{e}를 활용하여 p_{t}^{e}를 refine하고 이를 p_{t}^{r}이라 칭하여 사용합니다.

매 프레임에 대해 p_{t}^{r}을 계산하다가 특정 threshold를 넘어가는 순간이 오면, 현재를 end라고 가정한 뒤 다시 feature를 역순으로 살펴가며 start 지점을 찾게됩니다. 이 부분이 그림 3에서 주황색 부분에 해당하는 것입니다. 이를 위해 시작부터 현재 시점 t까지의 feature X = \{x_{i}\}_{i=0}^{t}를 역순으로 뒤집은 reversed feature X' = \{x_{i}\}_{i=t}^{0}을 얻고 Action Start Detector 모듈에 입력으로 넣어주게 됩니다.

마찬가지로 feature들을 보며 해당 시점의 프레임에서 action이 시작될 확률 p_{t}^{s} \in{} [0, 1]^{(C+1)}를 예측해냅니다. 총 t \times{} (C+1)개의 확률값들 중 p_{m, c}^{s}를 찾아내는데 이 값은 scalar로, 확률값들 중 가장 큰 값에 해당합니다. 이러한 과정을 거쳐 m이 시작 지점, 앞서 p_{t}^{r} 점수를 얻은 곳이 끝 지점이 되는 proposal을 하나 생성할 수 있게 되는 것입니다.

정리하자면 contribution 2번에서 언급한 2-pass detection 중 forward pass(AED, EDR)를 통해 현재 프레임이 action end 지점일 확률을 계속 계산하다가, 특정 threshold를 넘겨 진짜 end라고 판단되면 그 때 backward pass를 진행하며 다시 역순으로 거슬러 올라가 action start 지점을 찾아 하나의 action instance 구간을 만들어내는 방식이라고 할 수 있습니다.

여기까지 이해하셨다면 저자의 전반적인 아이디어를 모두 이해하신 것이고, 이제 이러한 흐름을 바탕으로 한 부분씩 더욱 자세히 알아보겠습니다.

2.3 Action end detection

Action End Head

가장 naive하게 현재 프레임이 action의 끝 지점일 확률을 찾기 위해 위 그림과 같은 AEH 모듈 하나만을 이용할 수도 있을 것입니다. 하지만 저희가 Part.1에서 살펴본 OAD에서도 여러 장치들과 복합적인 architecture를 구성하여 프레임 별 action 확률을 만들어내는데, 이렇게 단순한 head 하나만으로 특정 action의 끝 지점을 제대로 파악할 것으로 기대하는 것은 욕심일 수 있을 것입니다.

그래서 저자는 AEH와 더불어 현재 프레임이 시작, 끝 지점일 확률을 떠나 단순히 action에 속해있을 확률을 추출하는 Action Detection Head(ADH)를 함께 설계하였고 이렇게 AEH, ADH에서 뽑은 두 가지 score를 활용해 end score를 정제하는 End Detection Refinement(EDR) 모듈까지 함께 제안합니다.

Multi-Head Detectors
Multi-head detectors

우선 AEH, ADH의 동작 과정 중 ADH 먼저 수식으로 살펴보겠습니다.

  • h_{t}^{a}, c_{t}^{a} = LSTM(x_{t}, (h_{t-1}^{a}, c_{t-1}^{a}))
  • p_{t}^{a} = softmax(W_{a}^{T}h_{t}^{a} + b)

식에서 x_{t}는 pretrained feature extractor로부터 추출한 현재 frame의 feature에 해당하고, h_{t}^{a}, c_{t}^{a}는 ADH 내 LSTM의 hidden, cell state를 의미합니다. 이후 FC layer, softmax를 거쳐 현재 프레임에서 각 action이 진행중일 확률값 p_{t}^{a} \in{} [0, 1]^{(C+1)}가 만들어집니다.

다음으로 AEH도 동일하게 동작합니다.

  • h_{t}^{e}, c_{t}^{e} = LSTM(x_{t}, (h_{t-1}^{e}, c_{t-1}^{e}))
  • p_{t}^{e} = softmax(W_{e}^{T}h_{t}^{e} + b)

마찬가지로 현재 프레임이 각 action의 끝 지점일 확률 p_{t}^{e} \in{} [0, 1]^{(C+1)}를 얻을 수 있겠죠.

여기까지 추출한 두 가지 score p_{t}^{a}, p_{t}^{e}를 학습시켜줄 GT label g_{t}^{a}, g_{t}^{e} \in \{0, 1\}^{C+1}이 있어야 하는데, 이는 실제 GT \Psi{} = \{\psi{}_{i}|\psi{}_{i}=(t_{s, i}, t_{e, i}, c_{i})\}_{i=0}^{N}을 이용해 아래와 같이 정의해줍니다.

당연히 각 클래스에 따라 gt label을 다르게 정의해주어야 하기 때문에 클래스 별 존재 유무를 0, 1로 지정해주고 있고, 특이한 점으로 수식 (6)에서 g_{t, c_{i}}^{e}의 경우 처리 방식이 조금 다릅니다.

Action이 끝나는 지점이 실제 주어지는 GT label에서는 한 프레임에 해당하겠지만 진짜 한 프레임만 학습시켜주게 되면 boundary, non-boundary 클래스 간 큰 imbalance 문제가 발생하게 되기 때문에 실제 GT의 end label 앞뒤로 구간 범위를 만들어 해당 구간을 end label로서 사용하게 됩니다. 수식 (6)에서 l_{i} = t_{e, i} - t_{s, i}, 즉 GT action instance의 구간 길이를 의미하고 \mu{}는 이러한 augmentation을 조절할 boundary augmentation ratio에 해당합니다.

이제 예측값과 GT label이 완성되었고, ADH, AEH 각각 아래와 같은 CrossEntropyLoss로 학습하게 됩니다.

Action end refinement

이제 Multi-head detector에 속한 AEH, ADH의 학습이 완료되었으면 둘을 활용해 End Detection Refinement 과정을 거치게 됩니다. 본 모듈이 필요한 이유는 앞서 말씀드렸듯 AEH의 단순한 LSTM과 FC layer만으로는 충분한 표현력을 학습하기 힘들기 때문입니다.

EDR 모듈의 목적은 앞서 학습한 ADH, AEH로부터 얻은 l_{r}개의 과거부터 현재까지의 score p_{t-l_{r}:t}^{a} = \{p_{i}^{a}\}_{i=t-l_{r}}^{t}, p_{t-l_{r}:t}^{e} = \{p_{i}^{e}\}_{i=t-l_{r}}^{t}을 입력으로 받아 정제된 end score p_{t}^{r}을 만들어내는 것입니다. 참고로 l_{r}=5로 지정하였다고 하고, AER의 과정은 아래와 같습니다.

  • p = concat(p_{t-l_{r}:t}^{a}, p_{t-l_{r}:t}^{e})
  • p_{t}^{r} = softmax(W_{r}^{T}p + b)

수식을 보면 둘을 단순 concat 후 FC layer, softmax를 태워주는 것을 볼 수 있습니다. 이렇게 정제된 end score p_{t}^{r}을 학습시켜줘야 하는데요, 여기서도 앞서 g_{t}^{e}를 만들어줄 때와 마찬가지로 \mu{}를 활용해 구간 범위를 augment 하여 g_{t, c_{i}}^{r}을 만들어줍니다.

학습은 마찬가지로 CrossEntropy Loss를 사용합니다.

Inference 시에는 threshold \theta{}_{e}보다 p_{t}^{r}이 큰 경우 end 지점이라고 판단하여 Action start 지점을 찾는 모듈로 넘어가게 됩니다. 만약 Temporal tolerance T \neq{} 0인 경우 (t, t+T) 구간도 추가적으로 위 과정에 고려되는 것입니다.

2.4 Action start detection

2.3절의 과정을 통해 현재 지점이 action end 인지 아닌지 판별할 수 있게 되었습니다. OnTAL은 결국 action instance의 구간을 예측해내야 하므로, 이제 찾아낸 end 지점을 기준으로 그 action이 어디서부터 시작된 것인지 알아내야겠죠.

Online setting에서 미래 프레임에 접근하는 것은 불가능하지만, 과거에 본 프레임으로의 접근은 가능합니다. 시작 지점을 찾기 위해 과거부터 현재까지 모든 프레임들의 feature X = \{x_{i}\}_{i=0}^{t}를 역순으로 뒤집어 X' = \{x_{i}\}_{i=t}^{0}를 만들 수 있습니다. 이후 Action Start Detection 모듈을 통해 각 프레임의 시작 확률 p_{t:0}^{s}를 얻는 것이 목적이고, 과정은 아래와 같습니다.

  • h_{t}^{s}, c_{t}^{s} = LSTM(x_{t}, (h_{t+1}^{s}, c_{t+1}^{s}))
  • p_{t}^{s} = softmax(W_{s}^{T}h_{t}^{s} + b)

과거 중 현재와 가까운 시점부터 시작하여 먼 시점으로, 즉 역순으로 LSTM layer와 FC layer, softmax를 거치며 score값들을 만들어냅니다. 학습 때에는 가지고 있는 라벨로 untrimmed video를 trimmed video로 잘라내 사용했다고 하는데, 아마도 untrimmed video를 그대로 사용했을 때 잘못 만들어지는 end 지점에 대한 start 지점이 없을 수도 있기 때문에 이에 대응하기 위한 것으로 생각됩니다. 시작 지점도 마찬가지로 imbalance 문제를 최소화하기 위해 augmented label g_{t, c_{i}}^{s}를 만들어 사용하고 아래와 같이 CrossEntropy Loss로 학습됩니다.

Inference 시 EDR은 만들어 낸 p_{t}^{s}\theta{}_{s}로 thresholding하여 남아있는 score들 중 현재(end)와 가장 가까운 peak 지점을 시작 지점으로 예측한다고 합니다.

2.5 Algorithm at inference time

Inference 할 때의 pseudo code는 위와 같습니다. 각 과정 속 실질적인 조건들이 궁금하신 분들은 참고하시면 좋을 것 같습니다. 프레임을 입력받아 AED, ADH, EDR, ASD를 모두 거쳐 하나의 구간을 만들어졌다면, 이 구간을 최종 proposal에 담을지 결정해야 합니다.

보통 offline setting의 TAL에서는 Object detection에서처럼 굉장히 많은 proposal을 만들어 낸 뒤 proposal score와 예측된 class를 이용해 NMS를 수행하는데, online setting에서는 미래의 다른 proposal을 고려할 수 없기 때문에 저자는 조금은 다른 최종 proposal 생성 방식을 설계합니다.

결국 redundant proposal을 제거하겠다는 컨셉은 동일합니다. 먼저 만들어 낸 구간의 p_{0:t+T}^{r}\theta{}_{e}보다 크면서 가장 큰 값을 p_{n, c}^{r}, p_{t+T:0}^{s}\theta{}_{s}보다 크면서 가장 현재 지점에 가까운 프레임의 score가 p_{m, c}^{s}로 지정됩니다. 그렇다면 proposal \phi{} = (t_{s}, t_{e}, c, p)에서 t_{s}, t_{e}는 각각 p_{n, c}^{r}, p_{m, c}^{s}의 timestamp에 해당하고 \phi{}에 대한 confidence score p = p_{n, c}^{r} \times{} p_{m, c}^{s}으로 계산됩니다.

이렇게 만들어진 구간이 최종 proposal로 들어가기 위해 하나의 검토를 더 진행합니다. 이전에 만들어져 있는 최종 proposal \Phi{} 중 현재 만들어진 \phi{}와의 IoU가 \theta{}_{p} 이상인 경우에는 redundant 하다고 판단하여 \phi{}를 최종 proposal \Phi{}로 추가하지 않게 됩니다.

이제 학습, inference 과정을 모두 알아보았으니 실험 부분으로 넘어가겠습니다.

3. Experiments

저자가 제안하는 OnTAL 방법론 2PESNet은 기존 Fully-supervised Temporal Action Localization 방법론들과 동일하게 평가되었습니다. 데이터셋은 THUMOS14와 ActivityNet v1.3을 사용하였고 평가지표는 mAP입니다.

3.1 Comparing with offline TAL

표 4, 5

본 2PESNet 논문은 22년도 PR 저널에 게재되었는데, 우선 표 4, 5에서의 벤치마크 방법론들 중 G-TAD, PBRNet은 2020년도 방법론입니다. THUMOS 데이터셋의 경우 17년도 방법론인 CDC보다는 더 높은 성능을 보여주고 있네요. Online setting에서의 TAL을 처음 제안하다보니 동일 조건에서 비교할 수 있는 타 방법론이 없는 상황입니다.

또한 Temporal tolerance가 0인 hard offline setting에 비해 2개 또는 20개의 프레임까지 더 본 뒤 구간을 예측해내는 경우 각 데이터셋에서 꽤나 향상된 성능을 보이는 것을 알 수 있었습니다.

3.2 Exploration study

표 1

먼저 표 1은 2PESNet의 모듈 별 ablation 실험입니다. 사실 제가 Part.1, 2로 나눠가면서까지 OAD와 OnTAL을 나눠서 살펴본 이유는 OAD에서 프레임 단위로 예측을 수행한 뒤 연속되는 프레임들을 묶어 구간을 만드는 방식과 OnTAL이 어떤 차이가 있는지 파악하기 위해서였습니다.

표 1의 첫번째 행인 OAD clustering의 경우가 바로 이에 해당됩니다. 2PESNet은 end 지점을 찾기 전까지 각 프레임에 대한 어떠한 예측도 내놓지 않기 때문에 OAD 방법론들과의 직접적인 성능 비교가 불가능합니다. 그래서 반대로 OAD로부터 얻은 프레임 별 예측값 중 0.1 이상인 프레임들을 묶어 구간으로 만들고, 이를 2PESNet과 비교한 것입니다.

그림 4

그림 4와 함께 둘을 비교해보겠습니다. 위쪽 비디오에서는 10초 간 4번의 TennisSwing action이 일어납니다. 제가 Introduction에서 OAD는 Jump의 instance를 만들어내지 못한다고 설명드렸듯, grouping 하는 경우 TennisSwing에 대해 비디오의 전 구간을 proposal로 만들어내게 됩니다.

아래쪽 비디오에서는 높이뛰기 동작이 일어나고 있습니다. 비디오의 중간 부분에 대한 예측값을 보시면, OAD cluster 방식의 예측값은 요동치며 계속해서 끊기는 모습을 볼 수 있습니다. 저자의 분석에 따르면, 높이뛰기라는 action 클래스는 도움닫기, 실제 점프, 착지 등의 sub-action으로 나뉩니다. 2PESNet의 경우 이러한 일련의 과정을 모두 높이 뛰기 클래스라고 학습한 반면 OAD는 action의 전체적인 구성을 제대로 파악하고 있지 못하기 때문에 이러한 현상이 발생한다고 이야기합니다.

아무튼 표 1에 따르면 구간을 찾아내야 하는 상황에서는 OAD clustering 보다는 2PESNet이 압도적인 성능을 보이는 것을 알 수 있었습니다. 또한 1-pass detection은 현재처럼 end를 먼저 찾은 뒤 다시 돌아가며 start를 찾는 방식이 아니라 처음부터 start만을 찾다가 start 지점을 찾으면 이후 순방향으로 흘러가며 end를 찾는 방식에 해당합니다. 아무래도 시작 지점을 바로 찾아낸다는 것이 모델 입장에서는 쉽지 않은 것으로 보입니다. 이는 이어서 설명드릴 실험에서도 확인할 수 있습니다.

표 2

다음 실험은 2PESNet의 forward, backward 별 start, end detection에 대한 성능입니다. 2PESNet에서도 현재 프레임이 각 클래스에 대한 시작, 끝 지점이냐 아니냐에 대한 예측을 만들어내기 때문에, OAD에서 현재 프레임이 각 클래스에 해당하냐 아니냐와 같은 방식으로 mAP를 측정할 수 있습니다.

표 2는 그에 대한 성능입니다. Forward Start Detection은 순방향으로 시간 축이 흘러가며 바로 시작 지점을 예측하는 경우, 실제 해당 클래스의 시작인지 아닌지 여부를 통해 성능을 측정한 것입니다. 현재 2PESNet 모델은 Forward End -> Backward Start 순서로 수행되는데, 확실히 end 지점이라는 것이 말 그대로 action이 진행되다가 끝나는 부분이기 때문에 LSTM이 그러한 action의 순차적인 정보를 잘 파악하고 있다가 end 지점을 더욱 높은 성능으로 찾아내는 것 같습니다. 반대로 start 지점은 다양한 background만 등장하다가 action이 시작되므로 순방향으로 흐르던 중 바로 start를 잡아내기는 어렵겠죠.

표 3

다음은 THUMOS14 데이터셋에서 Temporal tolerance T의 크기에 따른 ablation 성능입니다. End 지점을 찾아내기 위해 현재 시점 이후의 프레임 정보를 더 길게 참조할수록 어느정도 선형적인 성능 향상이 있을 것으로 예상하였는데, 1초 이상에서는 거의 동일한 성능을 보여주고 있습니다.

저자에 따르면 T=\infty{}의 hard-offline setting의 경우 모델이 너무 많은 뒷단의 정보를 보게되며 end 지점에 대한 최적의 위치를 찾는 것에 오히려 혼동을 받아 성능 향상에 방해가 될 수 있다고 합니다. 이것은 어느정도 납득이 가지만 T=1, T=2의 경우 왜 성능 변동이 크게 없는지는 잘 이해가 되지 않습니다.

4. Conclusion

이렇게 Part.2의 OnTAL task까지 모두 알아보았습니다. 결국에는 캡스톤 주제의 베이스라인으로 삼기 위해 두 가지 task의 방법론을 하나씩 살펴본 것이었는데, 물론 OAD Clustering 성능보다는 높긴 하지만 2PESNet이 원복이 되지 않는 문제가 발생하였습니다. 또한 저희 주제에서는 결국 action이 발생하는 순간 바로 알림이 필요하고 임베디드 보드에서 돌릴만한 가볍고 빠른 모델이 필요한 상황이라, 둘 중 어느 task를 베이스로 삼을지 또는 둘 다 활용해야 하는지에 대한 고민이 조금 더 필요할 것 같습니다.

이상으로 리뷰 마치겠습니다.

Author: 김 현우

4 thoughts on “About online action processing in video (Part.2 – Online Temporal Action Localization)

  1. 안녕하세요. 좋은 리뷰 감사합니다.

    사실 online 환경에서의 연구가 왜 필요하지라는 생각을 했는데 (물론 불필요한 연구는 없지만 가장 많이 사용되는 유튜브로 offline이고하니 그렇게 생각했었습니다) 실시간 온라인 강의, 라이브 스트리밍 서비스 등을 예시로 들어서 덕분에 online 상황이 중요하구나를 알게 되었습니다.

    그런데 리뷰를 읽다보니 실시간 라이브 등 이런 상황때문에 online이 중요한 거면 inference time 등 속도도 중요할 것 같은데 논문에서 속도와 관련한 리포팅은 없을까요?

    감사합니다.

    1. 말씀해주신대로 저도 캡스톤에 적용하기 위해 본 논문을 읽어본 것이기 때문에 inference time이 중요하다고 생각합니다. 하지만 원체 TAL task에서 딱히 inference time을 중시하지 않는데, 이 때문인지 본 논문에서도 따로 inference time에 관련된 리포팅은 하고 있지 않습니다.

      예상하기로는 프레임이 들어온 후 feature 추출부터 해야 하기 때문에 이를 포함하여 뒷단까지 모두 수행하는 경우 ‘실시간’이라는 단어를 붙이기는 조금 애매한 수준일 것으로 생각하고 있습니다.

  2. 리뷰 잘 보았습니다.

    제가 작년에 관심을 가졌던 연구 분야가 offline에서 online으로 넘어가야 하는 흐름에 대해서 잘 설명해주셔서 이해하기 편했습니다.

    위의 주연님과 같은 질문이지만 online으로 output을 만들어내는 것은 속도가 중요한 이슈로 작용할 것 같은데 FPS 관련 비교는 없는지 궁금합니다. 그리고 어느정도 hardware에서 실험을 진행했는지도 적혀 있다면 알려주시길 바랍니다.

    1. 저도 inference 속도를 알고싶었는데 논문에 언급되어 있지 않았습니다. GPU 정보의 경우도 논문과 깃허브 어디에서도 찾아볼수가 없었습니다.

      그래도 OAD 방법론은 V100에서 진행되었다고 하여 한 번 원복을 시도해보려 합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다