Search
Duplicate

시각적 이해를 위한 머신러닝/ Video Classification I

Video는 Image의 Sequence
Video Classfication 과제
object와 action을 모두 인식해야 함
쿼리에 맞는 비디오 검색 과제
비디오 추천 과제
비디오와 자막을 넣어서 무엇을 하고 있는지를 맞추는 과제
Video의 다음을 예측해서 생성하는 과제
Video 압축 과제
Video 학습의 어려운 점
저장 용량이 큼
때문에 inference 하는데 오래 걸림
Dataset 만드는 비용이 큼
저작권 문제도 있음
정보 복잡도가 높음
시간 정보도 포함 됨
우리가 세상을 보는 것은 비디오로 보기 때문에 결국 비디오 인식을 해야 함
동영상을 분류하는 첫 번째 시도 이미지 한 장 뽑아서 CNN 돌려보자
여러 장을 각각 CNN 돌려서 결과를 뽑자
개별 이미지의 점수를 따로 뽑아서 합치거나, 개별 이미지의 feature를 합쳐서 하나의 결과를 뽑자
합치는 방법 예
Max, Average, Concatenation 등
유튜브는 Average를 쓴다. 다른 방법들 시도해 봤는데 계산량은 늘어나는데 딱히 개선이 안 되기 때문
Concatenation + 1x1 Conv는 시간 차원을 하나로 합치는 역할을 함
Late Fusion은 마지막에 합치는 것
이미지 인식을 먼저 하고 마지막에 그 결과만 합침
Early Fusion은 시작할 때 합치는 것
Early Fusion 할 때는 픽셀을 아예 합치는 건데, 이때 그냥 픽셀의 평균이나 max를 쓰면 이상하므로, 차원을 1개 더 늘려서 사용함
합치는 단계를 여러개 두어서 사용하는 Slow Fusion 방식도 있음
비디오 Action 인식 모델 발전 흐름
Two-stream 모델은 공간 정보와 시간 정보를 따로 학습해서 합치는 방식
spatial 정보는 1장면만 뽑아서 학습
temporal 정보는 시간에 따라 변화하는 정보를 따라 감. 이걸 optical flow라고 함
Optical Flow란 픽셀 단위로 움직임을 추적하는 것
이전 프레임에서 다음 프레임으로 어떻게 움직이는지를 본다.
Optical Flow의 예
Optical Flow의 몇가지 가정
모든 점은 색깔이 바뀌면 안 된다. —점 자체의 색이 바뀌면 추적이 안 됨
물체가 너무 빨리 움직이면 안 됨.
공간적으로 가까이 있는 점들은 같은 오브젝트라서 비슷하게 움직인다
이때 사용하는 알고리즘은 Lukas-Kanade 알고리즘을 사용함
Optical Flow 코드 예
gooFeaturesToTrack은 이미지에서 모서리점을 찾음
그렇게 찾은 모서리점을 이용해서 어떻게 움직이는가를 찾음 —calcOpticalFlowPyrLK
공간 정보는 이미지 1장 뽑아서 사용, 시간 정보는 Optical Flow Stacking, Trajectory Stacking을 이용해서 사용
그렇게 따로 돌린 결과를 하나로 합침
이 방식의 문제는
Long range temporal 정보 처리가 안 됨.
1장만 뽑다보니 Label을 제대로 적용하기 어려움. 멀리 뛰기에서 달리는 부분을 뽑으면 잘못된 label이 됨
optical flow를 사용하는거 자체가 비용이 큼
Two Stream을 따로 학습해야 해서 end-to-end 학습이 안 됨
같은 저자가 이전 버전을 개선한 버전을 발표
공간-시간 정보를 fusion 한 후에 레이어를 더 넣음
그냥 이것저것 해 봤다는 정도
앞에서 fusion 했더니 학습 파라미터가 줄어서 학습이 빨라졌더라
Two Stream 모델을 개선한 다른 버전
Two Stream이 긴 영상에 취약해서, 영상을 10초 단위로 짜르고, 각 10초마다 Two Stream과 같이 하고, 마지막에 그것들을 다 합치는 방식
Optical Flow를 Warped Optical Flow를 적용. 기존 Optical Flow는 카메라가 고정되어있어야 한다는 가정이 필요함.
추가로 pre-training, drop-out, batch norm 등의 최신 딥러닝 기법을 적용해서 성능을 높임
방식은 기존 것과 유사 함
Hidden Two-Stream은 Optical Flow는 계산해 놓고 사용하지 않고 Neural Network 안에서 하자는 아이디어