본문 바로가기
AIML 분야/Video Classification & Detection

논문 읽기: Action Transformer Survey (2)

by 포숑은 맛있어 2021. 1. 14.
반응형

"Late Temporal Modeling in 3D CNN Architectures with BERT for Action Recognition" (ECCV 20)

 

이것도 회사동료가 추천해준 논문. 

https://arxiv.org/pdf/2008.01232.pdf

github.com/artest08/LateTemporalModeling3DCNN.git

 

artest08/LateTemporalModeling3DCNN

Contribute to artest08/LateTemporalModeling3DCNN development by creating an account on GitHub.

github.com

 

오오.

BERT를 사용했다고?

 

앞에서 Survey (1)에서 생각한 것 처럼 CNN 다음에 transformer 인코더를 사용한 후 맨 끝에 classification head를 붙인 구조일까?

Late Temporal Modeling은 뭘까?

제목만 읽으면 잘 모르겠다. 이제 논문을 읽어봐야지.

 


Task

- Action Recognition

 

Idea

- Action recognition에 BERT를 사용하였음

- Temporal Modeling에 대해 2가지를 언급하는데, 3D conv와 late temporal modeling이라는 것을 논문의 주제로 가져간다.

 

Introduction.

3D Conv

다들 알다시피 conv 연산중에 temporal relation을 반영할 수 있다.

대부분 3D Conv를 쓰면 마지막에는 temporal global average pooling (TGAP)를 사용하는데, 말그래도 temporal축으로 다 합쳐버리는 것.

그런데 이렇게 하면 정보가 많이 함축되어버린다. 어떤 시각의 feature가 더 중요한지 알 수 없기 때문. 논문에서는 이 문제를 지적한다.

 

late temporal modeling?

주로 2D CNN에서 사용한다고 한다.

일반적으로 2D CNN을 통해 feature를 frame별로 뽑은 후, 이걸 recurrent model에 넣는식으로 temporal 정보를 보도록 하는 방법을 말한다. temporal에 대한 고려는 구조적으로 보면 아키텍쳐의 뒷부분에서 이루어질테니까 이런 이름을 붙인 것 같다. Conv LSTM 등이 예시이다.

 

 

 

논문에서는 위의 3D Conv를 사용할때 주로 TGAP을 사용한다는 문제를 지적하면서, TGAP 대신에 BERT를 사용하고자한다. BERT를 사용하면 self-attention을 통해서 어느 부분이 중요한지가 하이라이트 되기 때문.

 

 

 


 

Method.

 

앗. 그림을 보니 앞에서 말한거랑 비슷하다.

살펴보자.

 

 

 

 

 

기본적인 연산을 이렇게 한다.

 

Input : K개의 frames

  1. feature extraction : TGAP 사용하지 않고 3D CNN 적용.
  2. (learned) position encoding를 feature에 더한다.
    BERT에서도 그랬다.
  3. 이걸 input X로 두고 BERT에 classification head를 붙인다.

 

 

classification이면 Xi 대신에 X_cls로만 써있는데, transformer 구조 설명은 이게 끝이다.

 

query : theta(xi) = xi의 정보 = 앞에서 3DCNN으로 뽑은 output에서 i번째 시간의 feature를 말한다.

key : pi(xj) = xj의 정보 = 3DCNN으로 뽑은 output에서 특정 시간의 feature.

하지만 앞에 sum이 붙어있으니 결국 모든 시간에 대해 pair로 계산하겠다는 의미이다. 시간축에 어텐션을 부여하겠다는 의미로 해석할 수 있을 것 같다.

value : g(xj) = xj의 정보 = 위와 같음

 

여기서 g, theta, pi는 transformer 구조 (BERT)처럼 matrix 연산으로 feature vector를 뽑는 형태인가?

=> 그렇다. linear projection이라고 써있다.

 

transformer를 안다면 연산 방식은 동일하다고 이해하면 될 것이다.

이 뒤에 PFFN(x) 연산을 한 것이 결과. Feed-forward NN에다가 activation function 사용한 것.

 

 

 

Feature Reduction

 

BERT를 쓴다고? 배보다 배꼽이 더 커질 판국이다.

그래서 이 논문에서는 feature reduction을 위해 아래와 같이 새롭게 block을 제안하였다. 약간의 modification.

 

이건 3D CNN backbone 뒷부분을 대체하는 용도이다.

ResNeXt-101 기반이며, 총 두가지이다.

 

 

 

SlowFast + Proposed Method

 

Slowfast처럼 two-stream으로 하는 방법은 없나? 그러면 spatiotemporal한 정보를 다 잘 볼 수 있을 것이다.

그래서 early fusion, late fusion 두가지 방법을 제안하였다.

여기까지만 읽어도 이 논문 실험할 게 굉장히 많겠구나 싶다...

 

 

Experiment

Dataset.

UCF101, HMDB51, Kinetics400, IG65M을 사용했다고 한다. 마지막거는 처음들어본다.

IG65M은 kinetics400의 클래스 이름만 가지고 인스타그램에서 해시태그를 검색해 얻은 영상이라고 한다. 따라서 weakly-supervised.

65M개의 영상을 사용했는데, 이 데이터셋은 공개되지 않았다.

(대신 저자는 이 데이터셋으로 pretrain한 모델을 제공한다고 했다.)

 

 

 

이 논문에 테이블이 너무 많아 이것만 가져왔다.

 

multihead 개수에 대한 ablation 등 여러 실험이 있으니 참고하면 좋을 것 같다.

별다른 visualization은 없었다.

 

 

 

additional parameter에 대한 효과인건지 정말 효과가 있어서인지는 모르겠다. 그냥 GAP 쓰면 연산이 훨씬 가벼우니까.

 

아무튼 이렇게 뒷부분에 transformer 인코더를 사용한 논문이 나왔었다고 한다.

segmentation에서도 나오고 object detection에서도 나오더니 곳곳에서 유행인가보다.

 

끝.

반응형

댓글