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

Action Recognition보다 디테일한 Video 인식분야 조사

by 포숑은 맛있어 2021. 4. 23.
반응형

서론

이미지 인식에서 가장 흔하고 일반적인 task라고 하면 image classification이다.

비디오로 넘어오면 video classification? action recognition이라고 부르는 분야가 있다.

주어진 클립의 class를 인식하는 분야이다.

image에서는 segmentation, detection 등으로 확장시켰는데, 마찬가지로 비디오에서도 더 디테일한 인식 분야가 없을까?

이에 대한 서베이 내용이다.

 

몇가지 살펴본 키워드는 다음과 같다.

 

1. Action Localization (Action Detection이라고 부름) 알아보기
AVA-Action Dataset
openaccess.thecvf.com/content_cvpr_2018/papers/Gu_AVA_A_Video_CVPR_2018_paper.pdf 

 

3. Action Triplet 알아보기

CholecT50 arxiv.org/pdf/2007.05405.pdf  

 

우선은 Action Localization을 전혀 모르기 때문에 유투브 영상 몇개를 가볍게 보고왔다.

AVA 이름으로 몇개의 데이터셋이 더 나왔다고 하는데 다 다른거라고 하신다.

 

링크: AVA 데이터셋 시리즈.

AVA Action.

https://research.google.com/ava/ 다른 AVA 데이터도 다운받을 수 있다.

 

AVA: A Video Dataset of Atomic Visual Action

AVA is a project that provides audiovisual annotations of video for improving our understanding of human activity. Each of the video clips has been exhaustively annotated by human annotators, and together they represent a rich variety of scenes, recording

research.google.com

 

여담

ActivityNet 챌린지가 매년 열린다.

그런데 AVA Action의 경우, 2020년에 마지막으로 열린 이후 다시 개최된 적이 없다.

혹시나 싶어 2022년도 것을 찾아봤는데 올해도 없었음. 2021년도에 본 것과 2022년도와 별 차이가 없어보인다.

http://activity-net.org/challenges/2022/challenge.html

 

그렇다면 요즘에는 비디오 인식을 어떤걸 하고있나? ActivityNet Challenge를 살펴보자.

1. event dense-captioning

 

2. AVA-Kinetics 

Kinetics (700) Dataset과 AVA-Action (v2.2)의 크로스오버라고 한다.

AVA는 영화에서 뽑은거라 상대적으로 클립이 길지만, Kinetics-700은 유투브의 짧은 클립을 활용한다.

원래 Kinetics-700은 action recognition 데이터셋인데, AVA Action처럼 action detection 어노테이션을 추가했다고 한다!

다만, 클립 하나 당 한 프레임만 어노테이션 했다고함.

 

3. Active Speakers

visible face가 speaking 하는지를 탐지하는 것. 딱히 내가 하려는거랑 관련 없어서 패스

 

4. Homage

챌린지 페이지: https://homeactiongenome.org/

Atomic Action들을 탐지하고 scene graph를 만든다. Actor, Verb, Target이 다 들어가있다.

어떻게 보면 지금 내가 해야하는 것과 가장 유사하면서도, 가장 어려운 태스크가 아닐까 싶다.

https://www.youtube.com/watch?v=bXvyszS89_k 

 

 

-

이 글은 작년 (2021년)에 action recognition 논문을 끝내고 다음 방향을 서베이하려는 목적으로 작성했었다.

현재 (2022년 8월) temporal action localization 논문을 냈고, 이제 action detection을 다시 시작하는 겸 기존 글을 수정하고 있다.

 

어쩌다보니 Action Recognition -> Temporal Action Localization -> Action Detection (Action Localization) & Triplet 순서로 프로젝트를 진행하고 있음.


AVA-Action Dataset (Atomic Visual Action)

Action Recognition을 위한 데이터셋이지만 난이도가 좀 높은 데이터셋이다.

Action Localization은 spatial-temporal 각각 localization한다.

temporal boundary or segment를 찾고, 또 action 주체의 spatial localization도 같이 수행한다.

 

데이터셋 설명은 다음과 같다.

아래 그림을 참고하자.

  • 모든 사람들에 대해 bbox annotation 있음
  • 그리고 각 actor가 어떤 행동을 하고 있는지에 대해서도 label이 존재.
    그 label이 'Action'이다. 하나의 bbox에 action은 여러개일 수 있음
  • 하나의 Action
    • Pose: action당 1개씩 할당되어있음
    • Additional Actions (있을수도, 없을수도): object와 interaction or 다른 사람 interaction 두가지로 나뉨

궁금해지는 것 몇가지 & 디테일

  • annotation이 설마 모든 프레임에 있나?
    -> 1 Hz로 되어있다.
  • Action Annotation 기준?
    • +- 1.5초간의 segment를 보고 중간 frame에 annotation한다.
    • 왜냐면 '컵을 내려놓다' 이런 동작은 static frame만 보고는 알 수 없기 때문.
      만약 한 프레임만 보고 판단한다면 inter-annotator disagreement 심할 것.
  • 그러면 그 interaction 대상에 대해서도 annotation이 되어있나?
  • 데이터셋 양?
    • 437개의 영화
    • 각 영화마다 900개의 key frames (1Hz)를 데이터셋으로 사용.
    • 15 혹은 30분 간격에서 추출되었다고함. 이건 무슨 소린지

Action에는 hierarchy가 있다고 한다. 논문의 예시를 보는게 이해가 빠를 것이다. 어쨌거나 이 논문에서는 가장 finest level로 어노테이션.

데이터셋 만들면서 많은 고민을 한 것 같다. 예를들면 굳이 영화를 한 이유가 그러면 real-world에서 발생할 수 있는 다양한 액션을 취득할 수 있다는 것. 일반 short clip 유투브 영상들이면 아무래도 현실과는 액션의 distribution이 많이 다를 수 있고.

 

다른 Datasets

  • Temporal Action Localization: ActivityNet, THUMOS, MultiTHUMOS, Charades
  • Spatial-Temporal Action Localization: CMU, MSR Actions, UCF Sports, JHMDB

하지만 AVA와 다르게 atomic action을 다루지 않는다고 한다. AVA가 데이터셋 규모가 크기도 하고. 다운받으려고 사이트 들어가니까 csv 파일만 40MB다. 굉장해.

 

 

음, 그럼 대충 데이터셋은 알겠는데. 이런류의 task는 도대체 어떻게 풀어야하지?

Evaluation Metric은 어떻게 되며, 모델은 어떻게?

 

=> Related Works "Methods for spatio-temporal action localization" 파트에 소개되어있다.

 

주로 object detection의 아이디어를 활용하는 것 같다.

per-frame 결과들을 DP나 tracking을 통해 합치는 논문이 있다고 한다.

Tube(뭔 개념인지 잘 모름)를 사용하는 것도 있다고 한다. 이게 multi-frame approach.

AVA Action dataset을 릴리즈하는 이 논문에서는 베이스라인 성능을 제시하기 위함인지, 이런 Multi-frame approach기반으로 모델을 디자인 하였다. spatio-temporal tube의 개념을 사용하며, I3D나 Faster RCNN를 활용하였다.

 

몇개 논문

  • 예전 논문: Learning to track for spatio-temporal action localization. In ICCV, 2015.
  • Action tubelet detector for spatio-temporal action localization. In ICCV, 2017
  • Tube convolutional neural network (T-CNN) for action detection in videos. In ICCV, 2017

 

Section 3,4에서는 데이터 취득 과정이나 특징에 대해서 언급한다.

모델이 더 궁금한 관계로 Section5로 먼저 넘어간다.

1.

우선 "Multi-region two-stream R-CNN for action detection." 이 연구를 차용하고, Faster RCNN을 도입했다.

저 논문을 보면 아키텍쳐는 이렇게 생겼다.

프레임은 딱 하나를 보고, 주변 시간의 정보는 flow로써 제공한다. 그리고 detection model처럼 생긴걸 통과해서 두 정보를 합쳐서 bbox regression과 action classification을 같이 하는 모양.

 

하지만 아래 모델처럼만 하면 RGB frame의 temporal 정보가 없다. 그래서 AVA dataset 논문에서의 모델은 I3D를 활용한 것으로 보인다.

그러면 action 맞추는건 뭐지 FC 하나인가...

 

모델 코드가 없어서 코드를 찾던 중 mmaction을 발견했다!

mmdetection을 시작으로 mmsegmentation도 잘 사용중인데 mmaction 페이지가 있었다. 보니까 spatial-temporal action detection이 있다. Faster RCNN을 베이스라인으로 제공한다. 모델이 궁금하면 이걸 돌려봐야겠다.

github.com/open-mmlab/mmaction   

 

 

 

 

나중에 이어서 실험결과나 데이터 관련해서 더 써야지.


CholecT50 Dataset

논문은 T40이다.

뭐 일단 AVA처럼 action을 디테일하게 쓰려고 한 데이터셋이고, triplet annotation이 되어있다.

 

우선, 데이터셋에대한 기본적인 정보 몇가지를 알아보자.

 

이 데이터셋은 Cholec80의 일부 영상에 대해 주어진다. T40의 경우 40개.

Annotation:⟨instrument, verb, target ⟩
Triplets represent the used instrument, the performed action, and the anatomy acted upon, as proposed in existing surgical ontologies.

1. The triplets belong to 128 action triplet classes, composed of 6 instruments, 8 verbs, and 19 target classes.
그러니까 모든 combination을 한건 아니다. 128개의 가능한 triplet에 ID를 할당하고, 이 ID를 classification하는 형태라고 한다. 
그리고 이 어노테이션은 1fps로 제공.

2. triplets are 'instrument-centric'. 다른말로, 도구가 있을때만 action이 취해진다.
그래서 class activation guide (CAG)라는 모듈을 고안했다고.

3. weak localization을 사용하여, 이 정보를 통해 verb와 target을 잘 맞추도록 도움준다고 한다. weak이라는건 bbox GT annotation이 존재하지 않음을 의미.

4. split은 아래와 같다.
train (25 videos, 50.6K frames, 82.4K triplets)
validation (5 videos, 10.2K frames, 15.9K triplets)
testing (10 videos, 22.5K frames, 37.1K triplets)

 

다른 논문에서도 triplet information을 Phase 인식을 위해 사용했던 경우*가 있었으나, 아예 비디오로부터 triplet information을 뽑으려는 것은 이 논문이 최초라고 한다.

 

*: "Lapontospm: an ontology for laparoscopic surgeries and its application to surgical phase recognition." International journal of computer assisted radiology and surgery 10(9), 1427–1434 (2015)

 

클래스별 데이터 개수는 다음과 같다. 만약 target, verb가 둘다 Null이라면 도구가 유휴상태임을 의미한다.

 

아래는 pair별 빈도수이다. 발생할 수 없는 조합은 제외한 모양이다.

Multitask Learning (MTL Network)

딥러닝에서 멀티태스크를 하는 이유? 서로 관련있는 태스크를 같이 하면서 feature를 공유하면 성능이 오를 수 있기 때문.

여기서도 task가 3개이니 이용하지 않을 이유가 없다.

 

  • instrument subnet (The instrument branch): 2레이어 CNNs for instrument classification.
    global max pooling (GMP)을 통해 class activation maps (CAM)을 배워서 weak localization 정보를 알도록 한다. 이건 다른 논문에도 있는 기법.
  • verb-target subnet (the verb and the target branches): 2레이어 CNNs에, 뒤에 FC가 붙어있는 형태. 각각 verb and target classification함.
  • 이 3개의 브랜치는 모두 같은 ResNet-18 backbone을 통해 feature extraction을 함.

CAG

MTL과 ID만 부여한건 그냥 나이브한 베이스라인이고, 실제 모델은 아래와 같다. MTL에서 변형한 것.

 

일단 instrument의 현재 Pose를 아는 게 verb, target을 아는데에 아주아주 중요함. 하지만 bbox가 없음.

그래서 CAM 정보를 가지고 weak localization 정보로 사용하겠다는 내용.

CAM에 대한건 kangbk0120.github.io/articles/2018-02/cam 를 보고 공부했다.

 

3D Interaction Space

아무튼 3개의 네트워크 아웃풋(3 logits)을 얻을 수 있다. 이걸 가지고 outer product을 통해서, 위에 c와 같은 공간을 형성한다는듯.

그런데 이건 어차피 3가지를 합쳐야하니 당연한거 아닌가 싶다. 각각 hyperparam으로 가중치를 주고 곱한 후 발생할 수 없는 combination (128개 안에 포함 안되는)은 제외하고 가장 스코어가 높은걸 고르지 않았을까.

 

 

최종적으로 모델은?

Baseline으로 두가지를 뒀다.

첫번째로는 완전 나이브한 방법. ResNet18 -> 2개의 CNNs -> FC (N=128)

두번째로는 아까 MTL 네트워크라고 소개한, 3개의 2CNNs 사용한것.

논문에서 제안한 모델은 tripnet이라 적혀있으며, MTL과 비슷하지만 거기에 CAM을 사용하여 브랜치를 나눈 방식이다. Figure의 모델이다.

 

 

이게 triplet이다보니까 성능을 어떻게 내느냐가 까다로운데, 기본적으로 Average Precision (AP)를 사용하지만 대상이 다르다.

아래는 AP_I라서 Instrument에 대한 성능이다.

아래 실험결과를 보면, 일단 용도별로 브랜치를 나누는게 중요해보인다.

이건 AP_IC, IT, IVT이다. 각각이 도구, verb, target을 의미한다. 타겟을 맞추는 게 상당히 어려워보인다.

그렇기에 verb, target을 같이 맞출시에는 instrument 정보를 주는게 중요하다는 것을 알 수 있다. 특히, tripnet처럼 CAM 정보를 줌으로써 도구의 위치정보를 줬더니 성능이 크게 좋아지는것을 알 수 있다.

 

 

 

 

뜬금없지만 GNN 공부하고싶다.

Action Recognition에 sota가 이쪽에 있었다는 말을 매우 얼핏 들었는데...

물론 요즘은 transformer가 핫하지만 말이다.

반응형

댓글