Search
Duplicate

시각적 이해를 위한 머신러닝/ RNN-based Video Models

RNN에 대해서 이전에 들었던 것에 더 상세한 부분이 있음. 아래 페이지 참조
RNN을 Video 분류 문제에 사용하는 방법
Video는 Sequence가 있으므로 RNN이 적합한 것으로 보인다.
LRCN은 LSTM과 CNN을 결합한 모델
Sequence가 넘어가면서 CNN의 결과를 LSTM이 업데이트를 반복함
최종적으로 그 결과를 평균 냄
이 모델은 image/video captioning에서도 사용 됨
Beyond Short Snippets 모델. 이전까지 16프레임으로 동영상 처리를 했는데, 이 모델에서 300 프레임으로 처리 함
초당 1장씩 뽑아서 5분짜리 영상을 처리 함
Beyond Short Snippets의 Pooling
Beyond Short Snippets의 LSTM
LSTM을 Multi-layer로 시도 해 봄
이것저것 해봤는데 결과는 다 비슷비슷 했음
LSTM을 약한 변화를 줄 수 있음
원래 구조에서 Cell State를 기존 값에 더해 줌
위와 같이 이전 Cell State를 더해줘도 Cell State가 소실되지는 않음. 기존 값에 더해주는 것일 뿐이고 Cell State는 결국 더하기 되어서 업데이트 되기 때문
FC-LSTM을 이용한 ConvLSTM 모델
LSTM과 달리 Fully-Connected를 하지 않고 Convolution만 함
ConvLSTM 흐름 이미지와 계산식
LSTM을 썼기 때문에 끝까지 가도 공간적인 정보가 남아 있게 함
공간적인 정보를 활용해서 다음 예측을 생성할 때도 사용할 수 있음
다음 예측에 사용한 예
ConvLSTM으로 학습하고, 그 위에 다시 ConvLSTM을 쌓아서 예측 모델을 만듦
ConvLSTM처럼 GRU를 적용한 ConvGRU가 나옴
이전 Layer와 이전 State, 현재 input 3개를 받아서 처리 함
Encoder와 Decoder로 구성된 RNN 예
Sequence가 길면 한참 앞의 State를 잊을 수 있음
이전 State를 모두 참조 하고 그 중에 어디에 집중해야할지 결정하도록 함
Attention function은 Query, Key, Value로 구성 됨
모델 별로 정의되는 Query, Key, Value가 달라짐
Value들의 대표자가 Key가 되고, Key를 Query랑 계산해서 Value가 Query가 얼마나 비슷한지(Similar) 계산함
그런데 대부분 Key와 Value는 같은 것을 쓰는 경우가 많음
Attention 계산 흐름
1.
decoder의 현재 state를 query로 사용하고 encoder의 state를 key로 써서 query와 유사도를 계산함
2.
그 결과들을 합해서 attention score를 만듦
3.
그 후에 attention score에 softmax를 씌워서 attention coefficients를 만듦
4.
그 후 attention coefficients들을 weighted sum해서 attention value를 만듦
5.
그렇게 만들어진 attention value를 decoder의 state(S0S_{0})에 concatenate 함
6.
그렇게 만들어진 state로 input을 처리해서 output을 만들고 새로운 state를 만듦
7.
새로운 state에 대해 1-6 반복
앞선 예에서의 query, key, value, attention value
Attention에 사용할 수 있는 다른 방법들이 있는데 Dot-product가 간단하므로 대부분 Dot-product를 한다.
MultiLSTM은 Input과 Output이 Multiple
Input에서는 LSTM에 넣을 때 이전 단계 frame들을 넣어서 Attention 메커니즘이 동작하도록 함
Query는 현재 이전 hidden state
Key, Value는 N개의 최근 Frame Features
Attention Value는 최근 N개의 Frame Features의 Weighted Sum
Output에서는 Attention과는 관계 없음
LSTM이 output을 낼 때 N개의 가장 최근의 output을 냄
Visual Attention은 Attention을 공간적으로 사용한 예
MultiLSTM에서 Attention은 이전 몇 개의 Frame에 Attention을 적용한 반면, 여기서는 Convolution에서 들어오는 Feature들에 대해 Attention을 적용함.
그 feature에 대해 유사도를 구하고 weighted sum을 수행 함
Query는 앞서와 마찬가지로 이전 hidden state
공간적으로 어느 위치에 Attention을 해야 현재 이미지를 이해할 수 있느냐에 하는 것
위 예시 이미지에서 흰색으로 표현된 부분이 Attention 된 부분이고, 모델은 그것을 보고 저 활동이 골프인지를 알아 맞출 수 있다.
Video에서 Attention 된 부분을 표시
잘못된 Attention 예시
잘못된 것도 어디를 보고 그렇게 판단했는지를 이해할 수 있음
YouTube Case Study
Video 저작권이 업로더에게 있기 때문에 YouTube에서도 함부로 처리할 수 없음. YouTube 소유가 아님
YouTube 데이터셋을 이용한 Challenge
우승팀 사례
다른 부분은 기존 방식과 비슷하지만 Context Gating이라는 방법이 특별함
Label 간의 Dependency를 따져서 처리함.
Tree는 크리스마스에는 중요하지만, 스키장에서는 중요하지 않다.
Visual과 Audio를 Bidirectional LSTM을 이용해서 처리함
홀수층과 짝수층의 방향을 다르게 함
맨 마지막 층에는 Attention을 걸어서 처리 함
Alternating Bidirectional LSTM에 Residual Connection을 사용한 팀
Bidirectional LSTM 적용
대회 내용
처음 대회에서는 일단 왕창 기능 때려 박아서 성능을 좋게 함. 그런데 그런 heavy한 것은 실용적이지 않음
그래서 다음 대회에서 모델 크기 제한을 걸었더니 사람들이 일단 모델을 크게 만들고 그걸 경량화하는 모델을 만듦