Search
Duplicate

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

(review 생략)
RNN을 이용해서 video를 처리하는 방법을 배워보자
LRCN 모델은 CNN을 통해 feature를 뽑고 그걸 RNN에 넣어서 돌리는 모델.
CNN은 CaffeNet을 쓰고, RNN은 LSTM을 씀.
최종적으로 classifier를 달아서 label을 예측 함.
Beyond Short Snippets은 2014년 이전 모델들은 16 frame 정도만 가지고 했었기 때문에, 최대 5분까지 처리할 수 있는 video 처리를 함
대신 1초에 1장씩 뽑아서 처리.
추가로 optical flow feature도 사용함
Conv로 feature를 뽑아서, Conv pooling, Late pooling, Slow pooling, local pooling, Time-Domain Conv 등을 해 봄.
결과적으로는 별 차이 없었지만 Conv Pooling을 제일 나았다.
multi layer로 LSTM도 써 봄. 이것 저것 방법을 시도 함.
pooling 보다는 LSTM이 조금 더 낫더라는 결론
FC-LSTM은 cell state의 정보를 fc에 추가해 주는 것을 해 봄. long term memory도 활용하자는 것.
FC에 넣더라도 역전파할 때는 fc를 거치지 않기 때문에 long term 메모리를 유지할 수 있다.
ConvLSTM은 input과 hidden을 vector가 아니라 matrix로 사용하고 weight에 대해 convolution 연산을 수행함
기존의 FC-LSTM의 식에서 convolution 연산을 사용함.
LSTM을 여러 층 쌓는 것처럼 ConvLSTM을 여러 층으로 쌓음.
seq2seq 구조로도 적용 가능.
ConvLSTM을 이용해서 허리케인 추적과 날씨 예측을 한 예
ConvGRU는 LSTM 대신 GRU를 적용
Multilayer인 경우 같은 layer의 이전 state와, 하위 layer의 state를 받는데, ConvGRU에는 input도 추가해서 3개를 받도록 함.
RNN은 마지막 state에서 모든 정보를 다 기억해야 하기 때문에 문제가 됨. 오래전 정보는 잊어버리게 됨.
그래서 아예 input의 모든 state를 아예 output에서 참조할 수 있게 하자는게 attention main idea
Attention 함수는 Query, Key, Value를 받아서 Attention Value를 출력하는 함수.
query는 현재 주어진 context이고, key-value는 참고할 것.
attention 함수의 출력은 value들의 weighted average가 나옴. 이때 query와 key가 관계가 있으면 score가 높게 나옴.
query와 key는 계산 가능해야 하고, value와 attention value는 같은 dimension이어야 함. 대부분은 그냥 다 같은 크기를 사용 함.
Attention score 계산 흐름
1.
decoder의 hidden state를 Query로 삼고 encoder의 모든 hidden state를 Key로 삼아서 그 둘을 dot-produt를 함
2.
그 결과에 대해 softmax를 씌우면 0-1사이의 확률 분포가 되는데 이게 Attention coefficient
3.
그 다음 다시 encoder의 모든 hidden state를 value로 삼아서 방금 구한 attention coefficient와 weighted sum을 해서 attention value를 구함.
4.
그 결과를 최초 decoder의 hidden state에 concatenate 한 후 원래 사이즈로 되돌리기 위해 fully-connected와 tanh를 통과 시킴.
5.
그렇게 업데이트된 hidden state로 decoder의 다음 단계를 진행하고 그 다음 state에서 1번으로 돌아감.
attention 개념 요약
Q, K에 대해 dot product가 아닌 다른 것도 사용 가능하지만, dot product가 가장 심플하고 성능이 좋아서 그냥 대부분 dot product를 사용 함.
LRNC에 대해 Attention을 적용한 것이 MultiLSTM
LSTM에서 hidden state를 업데이트 할 때 기존 frame들을 보고 attention해서 업데이트 함.
Spatial attention을 이용한 것이 Visual Attention
MultLSTM이 어느 시간을 볼 것이냐인 반면, 이번에는 어느 공간에 attention 할 것이냐를 봄.
Spatial attention을 하면 해석 가능성이 높다.
이 이미지를 판단하는데, 어느 부위에 주의를 주고 있는지를 시각화 할 수 있음.
심지어 실패한 경우에도 어디를 보고 실패했는지를 확인할 수 있음
YouTube 8M 프로젝트 사례 소개
(이하 생략)