Junu's Lab
LAB ONLINE Focus Computer Vision / ML / Animal Behavior
Lab Note

[Reading Note] Two-Stream Convolutional Networks for Action Recognition in Videos

정지 프레임의 외형 정보를 학습하는 공간 스트림과 다중 프레임 optical flow의 움직임 정보를 학습하는 시간 스트림을 분리한 뒤, 두 예측을 후기 융합하여 비디오 행동을 인식하는 Two-Stream ConvNet을 제안한다.

Completed
Type
paper-review
Date
Jul 23, 2026
Domain
Action Recognition, Video Understanding, Computer Vision
Methods
Two-Stream ConvNet, Spatial Stream, Temporal Stream, Dense Optical Flow
읽은 일시 : 2026.07.18.-2026.07.23.

Paper Information

Title: Two-Stream Convolutional Networks for Action Recognition in Videos Authors: Karen Simonyan, Andrew Zisserman Affiliation: Visual Geometry Group, University of Oxford arXiv ID: 1406.2199 Topic: Video Action Recognition, Two-Stream ConvNet, Optical Flow, Spatial-Temporal Modeling, Video Understanding Venue: Advances in Neural Information Processing Systems 27, NIPS 2014 Pages: 568–576

1. One-line Summary

정지 프레임의 외형 정보를 학습하는 공간 스트림과 다중 프레임 optical flow의 움직임 정보를 학습하는 시간 스트림을 분리한 뒤, 두 예측을 후기 융합하여 비디오 행동을 인식하는 Two-Stream ConvNet을 제안한다.

2. Problem

영상에는 정지 프레임의 appearance와 프레임 사이의 motion이라는 서로 다른 정보가 존재하며, 이를 효과적으로 포착하고 결합하는 것이 어렵다. → 정적 이미지 분류와 비교했을때 영상의 시간정보는 인식에 추가적이고 중요한 실마리를 제공하는데, 많은 동작의 경우 움직임 (motion) 정보에 의해 신뢰도 있게 인식되었기 때문. + 개별 비디오 프레임을 분류할 때 사용 가능한 자연스러운 데이터 증강 효과를 제공한다
Additionally, video provides natural data augmentation ( jittering ) for single image (video frame) classification
  • jittering 은 프레임마다 나타나는 작은 자연적 변동

3. Method & Background Concept

Source: author's Notion note
Source: author’s Notion note

3.1. Discriminative와 generative의 차이

  1. Discriminative model : 입력 x가 주어졌을 때 클래스 y를 예측하는 데 집중 P(yx)P(y∣x)

    예: 이 영상이 주어졌을 때 행동이 달리기일 확률 은 얼마인가?
  2. Generative model : 각 클래스의 데이터가 어떻게 생성되는지까지 모델링 P(xy)P(x∣y) 또는 P(x,y)P(x,y)

    예: 달리기 영상은 일반적으로 어떤 모습과 움직임 을 가지는가?

3.2. Optical Flow란? (광류)

실제 물체의 운동 그 자체가 아니라, 영상 평면에서 관찰되는 겉보기 운동의 추정치 → 각 픽셀이 어느 방향으로 얼마나 이동했는지를 추정한 2차원 벡터장
still frame 은 비디오에서 뽑아낸 한 장의 정지된 이미지 프레임
  • Still image : 일반적인 정지 이미지
  • Still frame : 비디오에서 특정 시점의 프레임 한 장을 정지 이미지처럼 사용한 것
  • Video clip : 여러 연속 프레임으로 이루어진 짧은 영상 구간

3.3. late fusion이란? (후기 융합, 후단 융합)

공간 스트림과 시간 스트림이 각각 독립적으로 행동을 예측한 뒤, 네트워크의 마지막 출력 단계에서 두 예측 결과를 결합하는 방식

각 네트워크는 마지막 softmax 층에서 행동별 점수를 독립적으로 출력한다. (sxs_x) 그 후 이 점수들을 합쳐 최종 행동을 결정.

예를 들어 행동 클래스가 “달리기, 수영, 테니스” 세 개라고 설정할때,

공간 스트림의 출력: sspatial=[0.2,  0.1,  0.7]s_{\text{spatial}}=[0.2,\;0.1,\;0.7]

공간 스트림은 라켓과 코트 같은 외형을 보고 테니스 일 가능성을 높게 판단

시간 스트림의 출력: stemporal=[0.1,  0.2,  0.7]s_{\text{temporal}} =[0.1,\;0.2,\;0.7]

시간 스트림도 팔과 라켓의 움직임을 보고 테니스 라고 판단
평균을 사용하는 late fusion의 예시 :

sfinal=sspatial+stemporal2=[0.15,  0.15,  0.7]s_{\text{final}} = \frac{s_{\text{spatial}}+s_{\text{temporal}}}{2} = [0.15,\;0.15,\;0.7] → 최종적으로 테니스라고 제시

논문에서는 어떻게 사용되었는가?

1. Averaging

: 두 스트림의 클래스별 softmax 점수를 평균. 가장 단순한 방법이며, 두 스트림의 중요도는 동일

sfinal=sspatial+stemporal2s_{\text{final}} = \frac{s_{\text{spatial}}+s_{\text{temporal}}}{2}

2. Linear SVM

두 스트림의 L2-normalised softmax 점수를 연결한 뒤, 이를 특징 벡터로 사용해 별도의 다중 클래스 선형 SVM을 학습 → 평균처럼 고정된 규칙을 쓰는 대신 SVM이 어떤 점수 조합이 어떤 행동에 중요한지 학습

z=[sspatial;  stemporal]z=[s_{\text{spatial}};\;s_{\text{temporal}}]

y^=SVM(z)\hat y=\operatorname{SVM}(z)

→ 논문의 실험에서는 평균 융합보다 SVM 기반 융합이 더 좋은 성능을 냈다. 반대의 개념으로 Early Fusion도 존재한다. 입력이나 낮은 수준의 특징을 초기에 결합해 두 정보 사이의 세밀한 상호작용을 일찍 학습할 수 있지만, 입력 구조와 학습이 복잡해진다. RGB 특징 + Optical-flow 특징 하나의 통합 네트워크 행동 예측

4. Key Idea

이 연구의 목표
정적 이미지에서 SOTA인 ConvNets를 활용해서 영상 데이터 속 행동 인식에 적용한다.
  1. 공간 스트림과 시간 스트림 네트워크로 구성된 Two-Stream ConvNet 아키텍처 제시
    First, we propose a two-stream ConvNet architecture which incorporates spatial and temporal networks.
  2. 여러 프레임에 걸친 밀집 광류를 입력으로 학습 한 ConvNet이 제한된 양의 학습 데이터에도 불구하고 매우 우수한 성능을 낼 수 있음을 보인다.
    Second, we demonstrate that a ConvNet trained on multi-frame dense optical flow is able to achieve very good performance in spite of limited training data.
    • dense optical flow 영상의 일부 특징점만이 아니라, 거의 모든 픽셀 위치에서 이동 벡터를 계산한 광류
    → 데이터가 적을수록, 문제에 적합한 입력 표현이나 inductive bias가 학습을 쉽게 만들 수 있다.
  3. 마지막으로, 서로 다른 두 동작 분류 데이터셋에 멀티태스크 학습 을 적용하면 활용 가능한 학습 데이터의 양을 늘리고 두 데이터셋 모두에서 성능을 향상시킬 수 있음 을 보인다.
    Finally, we show that multitask learning, applied to two different action classification datasets, can be used to increase the amount of training data and improve the performance on both
    → “활용 가능한 학습 데이터의 양을 늘리고”의 의미 : 한 데이터셋의 모델이 다른 데이터셋의 영상도 공통 특징 추출기 학습에 활용할 수 있다.
Source: author's Notion note
Source: author’s Notion note

4.1. Spatial Stream ConvNet

개별 프레임에 대해서 작동하며 정적 이미지로부터 행동 인식에 효과적임
  • 사실 action classification의 경우 still frames 만으로도 경쟁력이 있는 성능이 나온다.

4.2. Optical Flow ConvNet

Source: author's Notion note
Source: author’s Notion note
연속적인 프레임 간의 광류 변위장들을 채널 방향으로 쌓아 만든다(stacking optical flow displacement fields)
  • optical flow 는 영상의 모든 위치에서 픽셀이 얼마나 이동했는지
  • 한 픽셀이 아니라 영상 전체에 계산하므로 변위장(displacement field) → 영상 프레임간 움직임을명시적으로 묘사한다 → 인식에 더 도움이 됨 주어진 움직임 패턴이 어떤 행동을 뜻하는지 에 더 집중

그러면 optical flow를 추출했다는 가정 하에 어떻게 이를 입력값으로 모델에 넣는가?

이미 계산된 여러 flow의 x,yx,y성분을 CNN의 2L2L개 채널로 쌓는다. 그럼 flow는 어떻게 읽어오는가?

Source: author's Notion note
Source: author’s Notion note

dt(u,v)d_t(u, v) : displacement vector at the point (u,v)(u, v) in the frame tt

{dt}\{d_t\}: a set of displacement vector fields

dtx,dtyd^x_t, d^y_t : horizontal and vertical components of the vector field

I:Input    u=[1;w],v=[1;h],k=[1;L]I : Input \; \; u = [1; w], v = [1; h], k = [1; L]

  1. Optical Flow Stacking : 여러 시점의 flow field에서 동일한 영상 좌표의 값을 읽는 방식 ( Figure 3 - left )

    Iτ(u,v,2k1)=dτ+k1x(u,v)I_τ(u,v,2k−1)=d_{τ+k−1}^x(u,v)

    Iτ(u,v,2k)=dτ+k1y(u,v)I_\tau(u,v,2k)=d_{\tau+k-1}^{y}(u,v)

    앞서 설정한 displacement vector fields LL개의 optical flow displacement field을 쌓는다

    2L2L개의 Input Channels 달성 (horizontal + vertical)

    → a ConvNet input volume IτRw×h×2LI_τ ∈ R^{w×h×2L}

  2. Trajectory Stacking : 움직이는 점의 이동을 따라간다 (Figure 3 - right) trajectory-based descriptors에 모티브를 얻음

    Iτ(u,v,2k1)=dτ+k1x(pk)I_τ(u,v,2k−1)=d_{τ+k−1}^x(p_k)

    Iτ(u,v,2k)=dτ+k1y(pk)I_\tau(u,v,2k)=d_{\tau+k-1}^{y}(p_k)

    pkp_k : 시작점 (u,v)(u, v)에서 kthk^{th} 점의 위치이고 그다음 위치는 현재 optical flow만큼 이동

    p1=(u,v);pk=pk1+dτ+k2(pk1),k>1.p_1 = (u, v); p_k = p_{k−1} + d_{τ+k−2}(p_{k−1}), k > 1.

이 밖에도 양방향을 모두 고려하는 Bi-directional optical flow,
카메라의 움직임을 고려해 각 dd (displacement field)에서 평균 벡터를 빼서 완화하는 Mean flow subtraction 전략도 존재한다

→ Result에서 언급되겠지만 Mean flow subtraction 전략이 유효했음
Temporal ConvNet은 기존의 수작업 motion feature를 완전히 버린 것이 아니라, 그 특징들을 학습 가능한 ConvNet 안에서 일반화한 모델이다.

4.3. Multi-task learning for Optical Flow (Temporal ConvNet)

Source: author's Notion note
Source: author’s Notion note
등장 배경
temporal ConvNet은 spatial stream ConvNet과 다르게 입력이 multi-frame optical flow이므로, RGB 정지 이미지를 사용하는 ImageNet 사전학습 모델을 이 논문의 설정에서 직접 이용하기 어렵다.더군다나 그 중 영상 Action 분류를 위한 데이터는 더 적다
  • split당 training videos ⇒ UCF-101 : 9.5K , HMDB-51 : 3.7K
→ Overfitting의 위험성 서로 다른 데이터셋을 합쳐 규모를 키워보려해도 클래스 조합의 교집합이 존재하고 이를 어떻게 분류할 것인가 (동일 행동? 유사행동?)가 수작업 판단이 필요하다 → multi-task learning의 등장
  • 데이터셋별 softmax head와 loss는 분리됨
  • 하지만 마지막 fully connected layer 아래의 ConvNet backbone은 공유됨
  • 전체 손실은 두 task loss의 합
  • 공유 backbone 은 양쪽 데이터셋의 gradient를 모두 받아 업데이트됨

5. Result

평가는 UCF-101과 HMDB-51에 대하여 진행되었고 이 두개는 라벨링이 된 영상 데이터셋 중 가장 큰 것 들이다. 101과 51은 각 데이터셋의 행동 클래스 수이다.
  • UCF-101 : 13K videos (180 frames/video on average) UCF-101의 경우 비슷한 배경, 비슷한 뷰포인트처럼 공통적인 특성으로 묶여 25개의 그룹이 존재한다고 한다. 그리고 이 그룹은 동일한 분할에서 테스트/훈련 데이터에 둘 다 존재하지 않는다→ 모델이 행동 자체보다 배경이나 뷰포인트와 같은 것을 학습해 성능이 부풀려질 수 있기 때문
    The videos in 101 action categories are grouped into 25 groups, where each group can consist of 4-7 videos of an action. The videos from the same group may share some common features, such as similar background, similar viewpoint, etc.
  • HMDB-51 : 6.8K videos
Evaluation Protocol
  • 두 데이터셋 모두 학습/테스트 데이터를 3개의 분할으로 나누어서 제공한다
    • UCF-101은 각 분할당 9.5K개의 영상을, HMDB-51은 분할당 3.7K개의 영상을 학습 데이터로 사용한다.
  • 성능은 각각의 분할에서 평가된 분류 정확도(Accuracy)에 대해서 평균을 계산하는 방법으로 측정된다.

5.1. Spatial ConvNets and Temporal ConvNets

Source: author's Notion note
Source: author’s Notion note
(a) Spatial ConvNet
  1. Training from scratch on UCF-101
  2. pre-training on ILSVRC-2012 followed by fine-tuning on UCF-101
  3. keeping the pre-trained network fixed and only training the last (classification) layer on UCF-101
→ ConvNet을 UCF-101에만 학습시키는건 성능이 좋게는 나오지 않았고 대규모 데이터셋인 ILSVRC-2012에 사전 학습을 진행하는 것이 더 효과적이었음 → 또한 fine-tuning을 전체 네트워크에 하는 것과 사전학습 네트워크를 고정하고 마지막 classification layer만 학습하는 것은 큰 차이가 있지 않았음 (b) Temporal ConvNet에서는 아래의 요소를 검증함
공통적으로 dropout은 0.9로 설정해 일반화 능력을 높이고자 하였음 또한 ILSVRC-2012 없이 UCF-101에 대해서만 학습된 상태 (from scratch)
  1. using multiple (L = {5, 10}) stacked optical flows
  2. trajectory stacking
  3. mean displacement subtraction
  4. using the bi-directional optical flow

→ 1. 결과적으로 광류를 쌓았을때 (Stacking Optical Flow, L>1L > 1)가 확실하게 이득인데 이유가 long-term motion information을 저장할 수 있기 때문이라고 하고 이게 frame간의 흐름을 보여주는 것보다 훨씬 구체적인 정보라고 한다.

하지만 L을 늘린다고 해서 반드시 성능 향상이 폭발적으로 늘어나는 것은 아니었고, L이 커질 수록 그 성장 폭은 점점 줄어들었다. (LL이 10 이상으로는 실험이 안된 이유)

→ 2. mean subtraction 방식이 프레임간 전역적 움직임의 효과 (e.g. 카메라 자체의 흔들림)를 억제하는 효과를 보여줘서 성능에 유의미한 향상이 있었음 → 최종적으로 실험 결과에 따르면 Spatial ConvNet보다 Temporal ConvNet이 훨씬 유의미한 성능을 보여주었음
Source: author's Notion note
Source: author’s Notion note
Source: author's Notion note
Source: author’s Notion note

5.2. Multi-task learning of temporal ConvNets

이제 UCF-101을 기준으로 성능을 확인했으니 본격적으로 HMDB-51을 활용하면서 multi-task learning의 데이터 풍부화 효과를 노린다.
→ 하지만 한가지 문제점이 HMDB-51은 UCF-101에 비해 training split이 2.6배정도 더 작다. → 연구자들은 이에 효과적인 training set size를 증가시키기 위해 다양한 전략을 시도해봄
  1. fine-tuning a temporal network pre-trained on UCF-101
  2. adding 78 classes from UCF-101 , which are manually selected so that there is no intersection between these classes and the native HMDB-51 classes ;
  3. using the multi-task formulation to learn a video representation, shared between the UCF-101 and HMDB-51 classification tasks
Source: author's Notion note
Source: author’s Notion note
→ 결과적으로 3번 선택지, multi-task learning formulation을 도입하는 것이 가장 성능이 높았다. (훈련 데이터를 전부 활용할 수 있었기 때문으로 추측됨.)
Source: author's Notion note
Source: author’s Notion note

5.3. Two-stream ConvNets

Source: author's Notion note
Source: author’s Notion note
두개의 스트림을 하나로 결합하는데 있어 가장 먼저 제시되는건 공간 네트워크와 시간 네트워크의 full6 또는 full7 층 위에 공동 fully connected layer들을 쌓아 학습하는 것. → 고차원 특징을 합친 뒤 새로운 fully connected layer들을 추가로 학습하는 방법을 시도했지만 과적합 문제로 인해 활용되지 않았다. → 얌전히 softmax score를 활용하기로 했다. → 문제는 어떻게 softmax score를 합칠 것인가?
  1. averaging softmax score
  2. linear SVM
결론
  1. 애초에 두 스트림은 상호 보완적이었다 (합성시 두 개의 단일 스트림 모델에 대해 모두 성능이 향상되었기 때문) → 융합 모델이 Temporal stream 단독보다 약 6%p , Spatial stream 단독보다 약 14%p 높은 성능을 기록했다.
    Temporal and spatial recognition streams are complementary , as their fusion significantly improves on both (6% over temporal and 14% over spatial nets)
  2. SVM 기반의 softmax score 합성은 단순히 평균을 내는 것보다 좋은 성능을 보인다
    SVM-based fusion of softmax scores outperforms fusion by averaging
  3. 양방향 플로우를 활용하는건 이번 ConvNet 합성 사례에서는 추가 이득이 없었다
    Using bi-directional flow is not beneficial in the case of ConvNet fusion
  4. multi-task learning을 활용하여 학습된 temporal ConvNet의 경우 단일로 사용되나 Spatial Net과 합쳐지나 최고의 성능을 보인다.
    Temporal ConvNet, trained using multi-task learning, performs the best both alone and when fused with a spatial net
Source: author's Notion note
Source: author’s Notion note
UCF-101, HMDB-51 데이터셋에 대한 SOTA 모델들과 성능을 비교해본 결과, 경쟁 가능한 수준을 보여주었다
Source: author's Notion note
Source: author’s Notion note

6. Limitation

6.1. Trajectory-aware pooling의 부재

  • Trajectory stacking은 optical flow를 움직임 궤적을 따라 샘플링한다.
  • 그러나 ConvNet 내부의 spatial pooling은 고정된 공간 영역에서 수행되며, 궤적의 이동을 따라가지 않는다.
  • 따라서 입력 단계에서는 움직이는 점을 추적하지만, 특징을 집계하는 단계에서는 동일한 객체나 신체 부위를 지속적으로 정렬해 처리하지 못한다.
  • 향후에는 궤적 중심의 spatio-temporal tube를 따라 특징을 pooling하는 구조가 필요하다.

6.2. 단순한 카메라 모션 보정

  • Optical flow에는 객체의 움직임과 카메라의 움직임이 함께 포함된다.
  • 본 논문은 각 flow에서 평균 변위 벡터를 빼는 mean displacement subtraction으로 전역 움직임을 완화한다.
  • 그러나 이 방식은 카메라의 평행 이동을 근사적으로 줄일 뿐, 회전·확대·축소·원근 변화와 같은 복잡한 카메라 모션을 명시적으로 모델링하지 못한다.
  • 향후에는 카메라 모션을 별도로 추정하고 제거하는 정교한 보정 방법이 필요하다.
이 논문의 Temporal ConvNet은 trajectory stacking을 통해 궤적을 따라 optical flow를 입력으로 구성하지만, 네트워크 내부의 spatial pooling은 궤적을 고려하지 않는다 는 한계가 있다. 또한 카메라 움직임을 평균 변위 벡터 차감 으로만 단순하게 보정하므로, 복잡한 전역 카메라 모션을 충분히 제거하지 못한다. 따라서 향후에는 trajectory-aligned spatio-temporal pooling과 명시적인 camera motion compensation이 필요하다.

7. Connection to My Research & What I Can Apply

  • BMOD 프로젝트를 진행할때 temporal feature에 대한 고려가 부족했는데 optical flow에 대한 temporal stream ConvNet의 방식을 활용할 수 있겠다 생각
  • 서로 다른 데이터셋을 활용하여 전체 학습 데이터셋의 규모를 키우는 방식 또한 행동 인식, 특히 비인간동물에 대한 학습데이터셋은 제한적인데 이 multi-task learning 전략을 활용해 보는것도 유용할 수 있겠다 생각함.