[논문리뷰]Lightweight Network Architecture for Real-Time Action Recognition 리뷰

인텔에서 발표한 Action Recognition 에 대한 논문 리뷰입니다.

특징을 요약하면 실시간 (대략 60fps) 실행이 가능하며 sota와 비교시에도 큰 성능 차가 나지 않는 성능을 보여주는  연산량이 적은 Action Recognition 네트워크 입니다.

공식 코드 공개 되어 있으며 링크에서 확인 가능합니다.

논문 또한 arxiv 에서 확인 가능합니다. 

 

Action recognition 이란?

Action recognition 은 video clips 에서각기다른행동을식별하는작업입니다.

왼쪽 그림은 평형 오른쪽 그림은 자유형입니다. 앵글이 바뀌며 문맥이 바뀌는 이 비디오 구간에서 유사점을 찾는 작업을 해야하기 때문에 Action Recogition은 쉬운 문제가 아닙니다.(사진 출처 http://blog.qure.ai/notes/deep-learning-for-videos-action-recognition-review)

또한 Action recogition은 전통적으로 다음과 같은 문제점을 가지고 있습니다.

  • 연산량이 많습니다.
  • 긴 문맥을 감지해야합니다.
  • 시공간적인 정보를 모두 처리할 수 있는 구조를 설계해야합니다.

Motivation

기존의 딥러닝 네트워크은 Alexnet -> VGG 로 발전 하는 것 처럼 성능을 향상시키는 방향으로 발전하여왔지만 최근에는 mobilenet, squeezenet 처럼 성능으로 sota를 찍는 것 보다는 성능에는 적당한 타협을 보며 연산량을 줄이는 방향으로 발전하고 있습니다. 이는 rcnn, SSD 와 이를 경량화한 많은 후속 논문과의 관계에서 확인 할 수 있습니다. 그러나 Action recogiton은 아직 경량화를 하는 방향으로 연구가 진행되기 보다는 성능을 높이는 방향으로 연구가 되고 있습니다. 저자는 적당한 성능을 타협하며 cpu를 사용한 inference에서 실시간 사용이 가능한 네트워크를 만드는 것을 목적으로 하고 있습니다.

Related Work

이전 연구에 대해서는 자세히 다루기 보다는 느낌만 다루도록 하겠습니다. 자세한 것은 논문을 참조하기 바랍니다.

Action recogiton 을 딥러닝으로 구현하는 가장 직관적인 방법입니다. 공간적인 정보를 학습하는 네트워크과 시간적인 특성을 학습하는 네트워크를 각각 만든 다음 이를 학습시키는 방법입니다. 여기서 cnn은 image는 공간적인 특성을 추출 하며 전처리를 통하여 frame에서 추출한 optical flow 를 학습하는 cnn은 시간적인 특성을 추출합니다.

reference : Two-stream convolutional networks for action recognition in videos

그 다음 방법은 3D convolution 을 사용한 방법입니다. 3d convolution을 이용하면 1번의 convolution 연산에서 한개 채널이 아니라 여러 채널이 나오게 됩니다. 이를 통하여 시간과 공간을 한번의 cnn연산에서 전부 처리할 수 있습니다.

reference : A Closer Look at Spatiotemporal Convolutions for Action Recognition
c3d-2d-3d-convolutions-diagram
reference : https://jay.tech.blog/2017/02/02/3d-convolutional-networks/

마지막으로 RNN(LSTM)을 사용한 방법입니다. rnn을 이용하여 시간적인 특성을 학습하는 네트워크입니다.

reference : Beyond Short Snippets: Deep Networks for Video Classification

Contributions

  • A new lightweight CNN architecture for real-time Action Recognition that achieves results comparable to state-of-the-art methods (Transformer)
  • Comparison of modern approaches to Action Recognition.
  • A method for improving the accuracy of an existing model by accommodating information from additional modality without a discernible increase in complexity.

Architecture 소개

Encoder

  • 프레임 임베딩을 위하여 각각의 프레임을 독립적으로 CNN(resnet-34)네트워크를 통과시킨다.
  • convolutional layers의 파라미터를 image classification의  transfer learning 의 효과를 최대로 활용하기 위해 재활용한다.
reference : Lightweight Network Architecture for Real-Time Action Recognition

Decoder

  • 프레임 내부의 시간적인 정보를 fully- attentional feed-forward 를 이용하여 통합한다.
  • 결과로 나오는 logits를 평균내어 classification label를 구한다.
reference : Lightweight Network Architecture for Real-Time Action Recognition

Decoder block detail

  • Convolution => pointwise (1 by 1 convolution)
  • Linear 현재의 clip에 action confidences 를 주기 위한 역할
  • Softmax 는 평균 및 정규화
  • 4 stack 만 으로 충분한 성능을 보임
reference : Lightweight Network Architecture for Real-Time Action Recognition

Multimodal knowledge distillation 

  • New modality 에서도 잘될까?
  • 두가지 문제점이 있다.
  • optical flow 를 감지하는 알고리즘 자체가 복잡하기 때문에 새로운 modality를 계산하는데 큰 연산량이 소모된다.
  • 같은 아키텍쳐를 사용하더라도 modality를 2번 연산하기에 복잡성이 2배가 된다.
reference : Lightweight Network Architecture for Real-Time Action Recognition

위 표의 의미는 다음과 같다.

modality를 2개를 가진 네트워크를 (1번째 행) 이용하여 RGB색차를 입력으로 가지며 modality를 1개 가지는 네트워크를 학습 시킬때 성능이 향상 되는 것을 확인 할 수 있다는 것이다.

  • 1초에 1개의 프레임을 추출해서 교차해서 1개는 train 1개는 test셋에 사용하여 16개의 프레임을 하나의 입력 묶음으로 사용한다.
  • 256×256으로 resize해서 센터를 224 crop한다.
  • Adam with momentum of 0.9 weight decay of 0.0001
  • LR= 1e-4
  • Encoder Resnet-34 그대로 사용(imagenet에서 학습된 weight를 그대로)
  • Decoder 성능을 높이기 위해서 다양한 방법을 시도
  • 1,3,4,5 ,6 blocks 쌓은 4 블록의 결과를 이용하여 디코더를 쌓을지 결정한다.(어떠한 상황일때 멈추는지는 모르겠다.)
  • M =8 dk =dv = d/M  일때 성능이 제일 좋다
  • head에서 concat->linear transform후에 layer normalization 사용했다.(그러나 성능에 큰 차이는 없다고 한다.)

 

Comparison with other methods 

reference : Lightweight Network Architecture for Real-Time Action Recognition

공평한 비교를 위하여 backbone network를 전부 resnet-34로 변경한 후 실험을 진행하였다. model은 related work에 소개된 것들이며 차례대로 3d conv를 사용하는 모델, Optical flow와 rgb 2개의 입력으로 시간적 공간적 특성을 학습하는 모델,rgb 색차와 rgb 2개의 입력으로 시간적 공간적 특성을 학습하는 모델,LSTM을 이용하여 학습하는 모델이다.

일딴 가장좋은 성능을 보여주며 lstm과 연산량이 많은 차이가 나지 않지만 성능에서 차이를 보인다.

Comparison with state-of-the-art 

reference : Lightweight Network Architecture for Real-Time Action Recognition

각종 sota와 비교한 결과이다 backborn을 바꿀시에 역시 성능이 올라가면 rgb색차를 함께 넣을시에 성능이 올라가는 것을 볼 수 있다. (그러나 속도는 느려질 것이다. 옵션으로 사용가능) sota와 비교시에 성능이 크게 뒤지지 않는 것을 볼 수 있다.

Inference speed 

reference : Lightweight Network Architecture for Real-Time Action Recognition

openvino를 사용한 inference time이다. backborn을 적절하게 바꾸어 속도 타협이 가능하다 .

댓글을 남겨주세요~