본문 바로가기

Paper review/Vision

[논문 리뷰] Learning Spatiotemporal Features with 3D Convolutional Networks

반응형

Submit : Tran, Du. ICCV (2015)

Paper : https://arxiv.org/pdf/1412.0767.pdf

 


아직 정제되지 않은 글입니다.

 

 

0. Abstract

  • deep한 3차원의 conv network를 사용해 시공간적인 특징을 학습
  • 3가지 특징
    • 시공간적인 특징을 학습하기에 2D conv에 비해 3D conv가 더 적합
    • 3D conv에서 3_3_3 conv kernel이 가장 좋은 성능을 보였다
    • C3D가 4개의 다른 벤치마크 중에서 가장 뛰어난 성능을 보였다
  • 특징이 명확
    • 단지 10차원에서 UCF101에서 52.8%의 정확도를 보였다. 빠른 conv 추론덕에 계산하기 효율이 좋다. 개념적으로 아주 심플하고 학습시키지 쉽다

 

1. Introduction

video를 이해하는 것에서는, 검색/추천/랭킹 등 여러 목적을 가지고 다양한 접근방법을 가지고 해결해왔다. 그러나 대규모 비디오 task를 같게 해결하려는 generic video descriptor의 필요성이 존재한다

(1) video descriptor에 4가지 특성을 가져야 한다

  • generic : 구분할 때 다른 종류의 비디오를 나타낼 수 있도록 일반적이어야 한다
    • 다양한 비디오 종류: 지형, 자연, 스포츠, 티비쇼, 영화, 음식, 애완동물..
  • compact : compact descriptor는 진행, 저장, 일처리를 더 큰 범위에서 수행 가능해야 한다
  • efficient : 수천 개의 비디오가 매 분마다 리얼 시스템에서 동작 가능해야 한다
  • simple : 좋은 descriptor는 더 간단한 모델에서 잘 동작해야 한다

 

  • 지난 몇년간 이미지 영역에서 feature 학습에 많은 발전이 있었음에 따라 이미지 feature 추출을 위한 conv model을 사용할 수 있게 됐다.
  • 그러나 이러한 image 베이스 deep features는 video에 적합하지 않다 : motion modeling이 부족하기 때문 (section 4,5,6에서 다룸)
  • 여기에서, 우리는 3d convNet을 이용해 시공간적 feature를 학습
    • 간단한 선형 분류로 학습한 feature만으로도 다양한 비디오 분석 테스크에 좋은 결과를 보여준다
    • 최초로 3d convNet을 제시한 것은 아님. 그러나 다양한 유형의 비디오 분석 테스크에서 제일 좋은 성능 가짐

 

(2) 요약

  • 3d conv deep network는 모델과 모션을 동시에 모델링하는 우수한 학습 네트워크인 것을 보여줌
  • 한정된 아키텍쳐에서 3x3x3 conv kernel이 제일 좋다는 것을 발견
  • 4개의 다른 테스크와 6개의 다른 벤치마크에서 가장 우수했거나 근접.
  • 작고 효율적

 

 

2. Related works

 

3. Method

3d convNet작동 설명, large-scale dataset에서 feature 학습을 위해 어떻게 학습시켜야 하는지 설명할 예정

(1) 3d conv

3d ConvNet은 3d convolution과 3d pooling 덕에 temporal information을 더 잘 모델링 할 수 있다

  • 3d conv에서 conv, pooling은 시공간적으로 작동 가능. 2d conv는 오직 공간적으로만
    • (a) 이미지에 2d적용: 아웃풋은 image
    • (b) 복수의 이미지에 2d적용(다른 channel로 적용해서): 아웃풋은 image
      • 또한 2d conv는 매번 conv작동될 때마다 시간적 정보를 잃는다
      • 오직 3d conv만이 시간적 정보를 보존한다
    • (c) 그 결과 3d conv에서만 아웃풋이 volume형태

$\int_0^{2\pi} \sin x~dx$

 

(2) 시간적 정보 잃기?

  • [36]논문에 의하면, 시간적 stream network는 복수의 프레임을 인풋으로 가져도 / 2d conv때문에 처음 conv layer후에 시간적 정보가 완벽하게 소실된다.
  • 비슷하게 [18]논문에서도 2d conv썼지만, 대부분의 네트워크가 인풋의 시간적 신호를 첫 conv layer이후 잃어버렸다. 그러나 'slow fusion'이라는 모델에서는 3d conv를 썼는데, (우리는) 그게 가장 좋은 결과를 보인 이유라고 본다. 그러나 이 역시 나중에 3번째 conv 레이어 지난 후 시간적 정보 잃는다
  • 여기선, 3d convNet을 위한 좋은 구조를 밝히려한다.
    • 중간규모의 UCF101로 먼저 실험.
    • [37]에 따르면 2d보다 3*3의 conv kernel이 가장 좋은 결과를 보임. 그래서 여기에서 깊이만 3d conv kernel로 수정함

 

(3) 2d conv vs 3d conv 수식 비교

([15] 3D Convolutional Neural Networks for Human Action Recognition 논문)

a. 2d convolution

  • x,y,z : feature map/volume의 좌표
  • v : feature map/ volume의 좌표
  • p, q : kernel의 spatial dimension index
  • r : temporal dimension index
  • j/m : feature map/volume
  • i : convolution 의 i번째 layer
  • bij : feature map/volume의 bias
  • tanh(.) : activation function이 hyperbolic tangent라는 것을 가정 (변경 가능)
  • w^(pq)ijk : k번째 feature map의 커널 (p,q)에서의 값
  • P, Q: 높이, 폭

 

b. 3d convolution

  • x,y,z : feature map/volume의 좌표

기존의 2d conv

![image](https://user-images.githubusercontent.com/13168096/73604811-0f4b4680-45da-11ea-8632-f4c845b8008d.png)

3d conv

2D 컨볼루션 개념 + 인접한 프레임과의 컨볼루션 연산이 결합된 구조 / 를 제안

기존의 2D 컨볼루션 방법에서 Feature map을 만들 때, 각 Feature map을 만들 때 사용되는 커널 weight가 공유 되지 않듯이, 본 논문에서의 제안하는 3D CNN 모델에서도 아래 그림과 같이 weight가 공유되지 않는 형태로 Feature map이 생성됨

[https://page-box.tistory.com/9](https://page-box.tistory.com/9) 

![image](https://user-images.githubusercontent.com/13168096/73604816-1a05db80-45da-11ea-80c8-123a5f8e298c.png)

---

- 3d convolution
    - x,y,z : feature map/volume의 좌표
    - 2d conv 테스트 통해 3*3 커널 사이즈를 가진 deeper architecture가 가장 좋은 결과 나옴
        - -> 그대로 3d conv에 사용 : 3*3*3
    - video clip은 c*l*h*w 사이즈 (channel수 / frame길이 / frame의 높이 / 너비)
    - pooling kernel size는 d*k*k (temporal depth / k: spatial size)

 

(4) 모델 설명

  • input dimension: 3x16x128x171
  • conv layer: 5개 (뒤에 pooling layer따라옴)
  • pooling layer: 5개
  • fully connected layer: 2개
  • softmax loss layer: 2개
  • 각 conv layer의 필터 수: 64, 128, 256, 512, 512개
  • 모든 conv kernel은 d사이즈를 가짐 (d: kernel temporal depth. d의 값은 나중에 찾을 것)
  • conv stride 1: conv layer의 input과 output크기 달라지지 않는다
  • pooling layer: max pooling, kernel size: 2x2x2 (첫번째 레이어 제외), stride 1
    • -> output 8배 감소
    • 첫번째 pooling layer kernel size: 1x2x2
      • 이유: 너무 일찍 시간적 신호를 합치지 않기 위해서. clip길이 16프레임 만족시키려고
  • 두개의 fc layer는 2048 output가짐

 

(5) 이 논문의 주요 관심사: temporal information.

  • kernel temporal depth d를 주로 변경했다

a. 실험

  • homogeneous temporal depth : 모든 conv layer가 같은 kernel temporal depth를 가짐
    • d : 1,3,5,7 실험 (depth-d로 명명)
      • depth-1는 각 프레임에 2d conv 적용한 것과 똑같다
  • varying temporal depth : layer에 따라 달라진다
    • 증가: 3-3-5-5-7
    • 감소: 7-5-5-3-3
    • 이 모두 마지막 pooling layer에서 아웃풋 크기 똑같아서 fc에 대한 파라미터 수 같음
    • conv layer에서만 kernel temporal depth가 달라서 파라미터가 다를 뿐

    - 2d conv가 가장 worst였고 UCF101에서 3x3x3가 가장 좋은 성능을 내었다
    - UCF101은 중간규모였으니 이제 대규모에서 테스트

 

(6) 조건

  • conv layer: 8개
  • pooling layer: 5개
  • 2개의 fc layer, softmax layer

  • 모든 3d conv filter: 3x3x3, stride: 1x1x1
  • 3d pooling layer: 2x2x2, stride: 2x2x2 (pool1제이. kernel size 1x2x2, stride 1x2x2. 초반에 시간적 정보 보존 위해)
  • fully connected layer는 4096개의 아웃풋

 

4. experiment

  • Sports-1M: UCF101에 비해 클래서 5배, 데이터 100배
  • 모델은 Deepvideo(이전에 3d적용했던 모델)과 비교
  • 비디오일 경우, 비디오에서 무작위로 추출된 10개의 클립의 평균을 비교.
  • (비교대상 주의) deepVideo, c3d는 짧은 클립을 사용하는 반면 conv pooling은 긴 클립 사용.
  • C3D 둘 다 DeepVideo보다 성능 좋음. conv pooling보다는 낮음. 근데 저건 긴 클립 쓰니까 직접 비교 불가. conv pooling은 120프레임으로 사용하기 때문에 clip hit, video hit 차이 작음

(1) C3D는 무엇을 배우는가?

  • C3D는 첫 몇 프레임에서 외관에 초점을 맞추다가 두드러지는 움직임을 추적함
  • 그림은 두가지 conv5의 feature map을 시각화한다
    • 1) 전체 사람(배경포함)에 초점 맞춘 후 나중엔 이 폴 보트라는 사람에게 초점
    • 2) 먼저 눈에 초점 맞춘 후 화장시 주위에 일어나는 동작을 초점
    • 따라서 C3D는 움직임과 외관 모두를 선택적으로 초점본다는 점에서 2d convNet과 다름

 

(2) 실험

C3D갖고 video clip에서 시도할 수 있는 3가지 성능평가에서 비교

a. action recognition

 

- C3D와 SVM을 함꼐 사용. action recognition에서 좋은 결과

b. action similarity labeling

ASLAN dataset

  • 전에 한번도 본 적 없는 video에 대해 측정

c. scene and object recognition

  • Maryland, YUPENN벤치마크

- [4]
- [41]
- [8]
- [9]
- imagenet과 비교했을때 약간의 성능 상승

 

5. Conclusion

  • 비디오 분석에서 3d conv가 시공간적 피쳐를 학습하는 것이 가능하다는 것을 보임
  • 3d conv에 가장 가장 최적인 termporal kernel length를 찾으려 함
  • c3d가 외관과 움직임 정보를 동시에 모델링할 수 있으며, 다양한 비디오 분석 작업에서 2D ConvNet를 능가함을 보임
  • 선형 classifier도입함으로써 최신 방법에 아주 가까운 성능에 가까워질 수 있음을 보임
  • 다른 비디오 분석 밴치마크에서 좋은 성능을 보임
  • c3d feature는 효율적이고 compact하며 아주 심플
반응형