결국 이전에 보았던 task들은 전부 2D image 상의 task들이었음.
Video의 경우 time(시간)이라는 새로운 축이 생기고 이 시간을 어떻게 처리해야 할지가 관건.
Video와 관련한 task는 매우 많지만 해당 수업에서 다룬 것의 9할은 특정 시점에 어떤 행동(verb)을 하는지 classify하는 task 였음. (↔ 주로 물체가 무엇(noun)인지 classify하는 Image 와는 구분됨)
Large-scale Video Classification with Convolutional Neural Networks (Karpathy et al.) 에서는 pretrained 2D convnet을 이용해 연속 frame의 시간 정보를 어떤 식으로 녹일지 여러 가지 방법들을 탐색했음:
1. Single Frame
- 굉장히 단순한 아이디어인데 Video에서 Frame을 추출한 후 각각의 Frame에 CNN을 독립적으로 적용하는 방법
- test time 에서는 예측된 값을 평균 내 출력
- Baseline으로 나쁘지 않은 성능을 보인다고 함
2.1. Late Fusion (w/ FC Layers)
- Video에서 Frame을 추출한 후 각각의 Frame에 CNN을 독립적으로 적용한 후의 결과를 전부 Flatten + Concatenate 함 (모든 정보를 모음) 이후에 MLP를 통과시켜 최종 결과를 구함
2.2. Late Fusion (w/ Pooling)
- Video에서 Frame을 추출한 후 각각의 Frame에 CNN을 독립적으로 적용한 후의 결과를 (전부 flatten + Concatenate하는 대신) average pooling을 한 후 mlp로 통과시킴
- 단점: low level motion 을 비교하기 어려움
3. Early Fusion
- Video에서 Frame을 추출한 후 바로 conv layer로 보냄 → 이후에는 2D CNN 으로 보고 계산