2. Artificial Intelligence/Seoul National Univ. Computer Vision

[Seoul National Univ: Computer Vision] Lecture 10. Video Classification 1

뉴하늘 2025. 6. 4. 19:54
728x90

본 포스팅은 서울대학교 이준석 교수님의 M3224.000100 Machine Learning for Visual Understanding을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.

 

https://www.youtube.com/watch?v=dm2MCZ1QNH0&list=PL0E_1UqNACXBhqjwBzFQ88YXWotXrKRG-&index=10

 

1. Video Understanding

 Video classification은 입력으로 주어진 video clip에 대해 그 내용이 무엇인지 label을 예측하는 컴퓨터 비전 task를 말한다. image classification과는 다르게 여러 pixel들에 담겨있는 action을 바탕으로 label을 분류한다.

  query가 입력으로 주어지면 이 query와 비슷한 video top-N개를 출력한다거나, query를 설명하는 text를 출력한다거나, 혹은 query와 관련된 user를 출력하는 등의 task가 있다.

Video Prediction & Generation

 Video Prediction & Generation은 주어진 영상의 일부 정보를 바탕으로 미래의 프레임을 예측하거나 새로운 영상을 생성하는 딥러닝 기술이다. 이는 비디오 시계열 데이터의 구조를 이해하고, 시간적 패턴을 기반으로 새 장면을 예측하는 데 사용된다.

Video Compression & Learning from Compressed Videos

 Video 분야에서는 상의 저장/전송 효율성과 모델 학습의 효율성을 동시에 추구한다. video 원본의 용량이 아주 큰 값이기 때문에 공간 효율성을 위해 원본과의 차이를 최소화하면서 video를 압축한다.

 

 최근에는 큰 계산량과 공간비용을 최소화하기 위해 압축된 표현을 직접적으로 사용해보는 연구도 진행되고 있다.

2. Challenges with Videos

 

Hige Storage & Computational Cost / Difficulty of Creating Standard Benchmark

 비디오 데이터는 정적 이미지보다 훨씬 더 복잡한 문제를 갖고 있다.

  • 데이터 용량이 크다.
  • 연산량이 많다.
  • 라벨링하는 비용이 매우 높다
  • 저작권 문제

Video Research

 비디오 관련 문제들은 아직 이미지 문제보다 발전이 많이 되지 않았지만, 나중에는 비디오 기반 모델이 이미지 기반 모델보다 이미지 분류 문제에서 더 높은 성능을 가질수도 있다. (블루오션)

3. First Ideas in Action Recognition

 

First Ideas: Single Frame

  초기 아이디어는 비디오도 여러개의 픽셀로 이루어진 데이터이므로 frame 단위로 작업 해보는 것이였다. Single frame은 비디오의 frame들 중 하나의 frame을 대상으로 CNN을 진행해 classification을 하는 단순한 방법이다.

First Ideas: Multiple Frames

 Multiple frames는 Single frame과는 달리 여러개의 frame을 대상으로 CNN을 진행하고 이들로부터 얻은 output으로 classification을 진행한다.

Temporal Pooling

 Multiple frame을 진행하여 얻은 output을 어떻게 결합하느냐에 따라 Score fusion, Feature fusion으로 구분할 수 있다.

 

1. Score Fusion

 각 frame을 입력으로 받은 후 CNN을 거쳐 나온 class score을 결합하여 최종 예측을 만든다. 이때 score을 결합하는 방법으로는 Average, Max Voting 등이 있다.

 

2. Feature Fusion

 Feature fusion은 출력된 feature 벡터들을 합쳐 하나의 feature로 만들고, 그 후 classifier를 사용하여 classification하는 방법이다. 

 

1. Max Fusion(Element-wise Maximum)

 각 스트림에서 동일한 위치의 값들 중 최댓값만을 취한다.

2. Average Fusion(Element-wise Mean)

 같은 위치의 feature 값을 평균하여 결합한다.

3. Concatenation(Channel Dimesion Concat)

 스트림의 feature map들을 채널 차원에서 그대로 이어붙인다. 

4. Stacking + 1x1 Conv

 여러 feature map을 채널로 stack한 뒤, 1x1 convolution을 적용해 dimension reduction을 수행하면서 하나의 map으로 통합시킨다.

Early Fusion, Late Fusion, Slow Fusion은 멀티스트림에서 정보 결합 시점에 따른 세 가지 대표적인 융합 전략(fusion strategies)이다.

 

1. Late Fusion

 각각의 스트림을 독립적으로 처리한 뒤, 결과를 결합한다.

2. Early Fusion

 입력 단계에서 서로 다른 스트림을 바로 결합하여 하나의 입력으로 사용한다. 보통 입력 데이터를 채널이나 시퀀스 차원에서 연결하고, 하나의 모델에 통합 입력한다.

 

3. Slow Fusion

 각각의 스트림을 부분적으로 따로 처리하다가, 중간 layer에서부터 점진적으로 통합시키는 방법이다. 즉, Early Fusion과 Late Fusion의 중간 형태이다.

4. RNN-basesd Spatio-Temporal Modeling

 

FC-LSTM

 FC-LSTM은 일반적인 LSTM 구조에서 cell state를 게이트 연산에 직접 연결한 확장된 형태이다. cell state를 게이트 연산에 추가해도 여전히 다음 cell state를 계산할 때는 가중치를 곱하지 않기 때문에 장기 기억력에 큰 문제가 있지는 않다.(약간의 영향은 있음)

ConvLSTM(2015)

 ConvLSTM (Convolutional Long Short-Term Memory)는 시계열 데이터 중에서도 특히 공간 정보를 가진 입력(예: 비디오, 날씨 위성 이미지)을 처리하기 위해 설계된 공간-시간 순환 신경망이다. 이는 기존 LSTM의 fully connected 연산을 convolution 연산으로 바꾼 구조이다. 크게 달라진 점은 아래와 같다.

 

1) ConvLSTM은 CNN을 사용하므로 input과 hidden/cell states는 vector가 아닌 matrix 형태로 확정된다.

2) Weight 행렬은 이제 Fully Connected 연산이 아니라 Convolution 연산으로 진행된다.(*)

3) 공간 구조를 보존하기 위해 오직 Convolution 연산을 사용한다.

 ConvLSTM에서 cell state는 Convolution 연산이 아니라 Element-wise Multiplication을 수행한다.

 ConvLSTM은 Multi-layer로 쌓아 더 복잡한 시공간 패턴을 학습할 수 있다. 이때 seq2seq 구조인 Encoder-Decoder 방식으로 입력 시퀀스를 인코딩한 후 미래 frame을 decoding 할 수 있다.

ConvLSTM: Hurricane Tracking & Forecasting

 이 Stacked ConvLSTM 방식은 기상 예측에 주로 사용되는 네트워크 설계 방식이다.

ConvGRU

 ConvGRU는 ConvLSTM처럼 GRU의 FC 연산을 Convolution 연산으로 바꾼 구조이다. GRU 특성상 ConvGRU는 ConvLSTM보다 구조가 단순하고 계산량이 적다.

Stacking ConvGRU의 각 layer는 입력 시퀀스(x), 이전 step의 hidden state, 아래 layer의 hidden state 세 가지를 입력으로 받는다. 따라서 아래 layer의 hidden state에 대한 가중치가 있고, 마찬가지로 Convolution 연산을 수행해주어야 한다.

Action Recognition Models Overview

Two-stream Approach

 Two-stream approach는 비디오 이해(video understanding), 특히 action recognition에서 널리 사용되는 대표적인 딥러닝 구조로, 비디오의 정보를 공간(spatial)시간(temporal)으로 나누어 두 개의 독립된 네트워크로 학습하고, 마지막에 이를 결합(fusion)하여 예측하는 방식이다.

 

1. Spatial Stream

 

  • 입력: RGB 프레임 (주로 중심 프레임)
  • 역할: 객체, 배경, 정적인 정보 학습
  • 네트워크: 일반 이미지 분류용 CNN (e.g., VGG, ResNet)

 

2. Temporal Stream

 

  • 입력: Optical Flow (보통 연속된 10~20개 프레임 간)
  • 역할: 움직임 정보(동작, 방향 등) 학습
  • 네트워크: CNN 구조지만 입력은 Flow stack (흑백의 벡터 이미지 형태)

 

Optical Flow

 Optical Flow란 두 연속된 이미지(프레임) 사이에서, 같은 물체가 어떻게 이동했는지를 각 픽셀마다 표현한 벡터 필드이다. 이 벡터 필드는 보통 X방향 움직임, Y방향 움직임 총 2채널 Gray Scale 이미지로 표현한다.

Computing Optical Flow

 Optical Flow를 계산하려면 물체가 어느정도 이동했는지를 계산해야한다. 이 게산을 위해 Optical Flow는 세 가지 가정을 한다.

 

1. Brightness constancy(밝기 불변 가정): 객체의 같은 지점은 다음 프레임에도 비슷한 색을 유지한다.

2. Temporal persistence(시간적 연속성): 객체는 프레임 간 매우 큰 이동 없이 가까운 위치로 이동한다.

3. Spatial coherence(공간적 연속성): 하나의 객채 안의 인접한 픽셀들은 비슷한 방향과 속도로 움직인다.

 

 Lucas-Kanade Algorithm은 픽셀의 같은 지점간의 속도 차이로부터 Optical Flow를 구한다. 

Two-stream Approach: Model Details

 Spatial stream은 하나의 이미지 자체이기 때문에 2D convolution을 진행해도 되지만 Temporal stream은 이미지의 시퀀스이기 때문에 결합을 진행해야한다. 결합 방법으로는 Optical flow stacking, Trajectory stacking으로 구분할 수 있다.

 

1. Optical flow stacking

 연속된 프레임 간 optical flow를 여러 장 계산한 후, 이를 채널 방향으로 쌓아 CNN에 입력하는 방식이다.

 

2. Trajectory stacking

 단순히 optical flow vector를 쌓는것이 아니라 특정 점을 추적(trajectory tracking)하면서 해당 지점 주변 patch를 시점마다 추출해서 쌓는 방식이다.

Two-stream Approach: Limitations

 Two-stream Approach 역시 길이가 긴 비디오는 다루지 못한다는 한계가 있다. 하지만 가장 심각한 문제로 오답이 심하다. 하나의 이미지 frame 단위로 학습을 하게 되면 전체 비디오의 정확한 action이 무엇인지 판단할 수 없다. 그리고 end-to-end 학습이 불가능하여 Optical flow를 사전에 계산해야 한다.

Convolutional Two-stream Network Fusion

 Convolutional Two-stream Network Fusion은 전통적인 Two-stream CNN 구조를 단순히 score, average 등으로 fusion하는 방식에서 벗어나, 두 stream의 feature map을 convolutional 방식으로 결합한다. 기존에는 두 stream이 거의 독립적으로 처리되어 시공간의 상호작용이 부족했지만, 이를 어느정도 보완해준다.

 

 fusion을 하기 위해서는 두 stream의 크기를 동일하게 유지시켜야한다. 따라서 결합 전까지의 layer들이 동일한 편이다. 두 stream의 feature를 중간 계층에서 병합하고, 그 위에 convolution layer를 추가하여 학습한다.

Hidden Two-stream(2017)

 Hidden Two-stream Networks는 Optical Flow를 명시적으로 계산하지 않고, 대신 딥러닝 모델이 flow와 유사한 motion 정보를 내부적으로 추정하도록 학습시키는 end-to-end 비디오 인식 모델이다. 

 

  MotionNet으로부터 Optical Flow를 추정하고, 이를 사용해 Temporal Stream을 진행한다. 그후 Spatial Stream과 Fusion하여 Video를 Classification한다.

728x90