Search
Duplicate

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

정지된 이미지를 처리하기 위해 2d conv를 썼던 것처럼, video를 처리하기 위해 3d conv를 사용할 수 있다.
기존의 2d 이미지에 더해 시간 단위로 이미지를 여러 장 묶어서 conv를 돌린다.
padding을 추가하면 input-output의 크기를 같게 맞출 수 있음
추가로 채널이 추가되기 때문에 최종적으로 3d conv의 filter는 총 4개의 차원을 갖는다. (seq, height, width, channel) 순서는 정하는 곳마다 다름.
3d conv 크기 계산 예
padding을 정수를 주면 시간, 공간에 모두 같은 값이 적용되고, (1, 0, 0) 처럼 주면 시간에만 1을 주는 식으로 설정된다.
3D CNN 모델 아키텍쳐
알렉스 넷이 등장하기 전에 했던 시도. 당시 컴퓨팅 파워의 한계로 주목 못 받고 잊혀짐
C3D (Convolutional 3D) 아키텍쳐
알렉스넷과 비슷한 구조로 만듦.
짧은 액션만 가능하고 긴 영상은 처리가 어려움.
3개 frame 씩 conv를 돌리면 그 상위 layer는 5개, 그 상위 레이어는 7개 frame을 볼 수 있는데, 30fps 영상만 되더라도 1초에 30개의 이미지가 있기 때문에 layer를 어지간히 쌓지 않고서는 특징을 찾기 어려움.
계산량이 많음.
이번에는 Resnet을 이용한 R3D 모델이 나옴
R3D를 개선한 R(2+1)D 모델이 나옴.
Inception의 방식을 차용
R3D 보다 R(2+1)D가 좀 더 성능이 좋았다.
3D DenseNet을 차용해서 만든 T3D 모델
필요한 학습 데이터셋은 Video가 더 많이 필요한데, 실제 데이터는 이미지 데이터가 많음.
그래서 2D 이미지에서 배워 놓은 것과 loss가 같아지도록 학습 시킴.
I3D는 Two-stream과 C3D를 결합하여 만들어진 모델. 성능이 좋아서 이후에 많이 쓰임.
Two-stream 구조를 가져가는데, 공간정보를 3D ConvNet을 쓰고, Optical Flow에도 3D Conv Net을 씀.
Backbone에 Inception을 3차원으로 확장해서 씀.
I3D 아키텍쳐
오리지널 GoogLeNet에 대해 변경된 부분.
3D Conv만으로는 Optical Flow 보다 성능이 안나와서 Optical Flow를 써야 성능이 좋아짐.
아마도 optical flow에서 recurrent 한 특성을 배우기 때문인 것 같다는 추측을 함.
그런데 그 후에 나온 모델은 optical flow 없이 좋은 성능을 내서 optical flow는 이 논문 이후로 안 쓰임
I3D랑 비슷한데 Inception에 Conv 부분을 변경한 S3D 모델이 나옴.
Conv 3x3x3을 Conv3x1x1과 Conv1x3x3으로 분리
I3D에 대해 모델이 가벼워지고 속도도 빨라지고 성능도 더 좋아짐. 그래서 이후에 I3D 대체 함.
그래서 I3D를 대체함.
Optical Flow를 없애고 비슷한 효과를 내는 것을 목표로 함.
Slow Pathway, Fast Pathway를 나눠서 처리
Slow Pathway는 stride를 적용해서 frame을 띄엄 띄엄 가져와서 공간적인 부분에만 초점을 맞춤.
Fast Pathway는 2장에 한 장씩 뽑아서 action 정보를 추출하는데 초점을 맞춤. 대신 채널의 개수를 줄여서 slow pathway와 계산량이 비슷해지도록 맞춤
모델 상세
slow pathway, fast pathway가 각각 학습한 피처를 다른 path에서도 사용할 수 있게 Lateral connection을 추가함.
feature를 합치려면 dimension이 같아야 하기 때문에 크기를 맞춰 줌.
공간적으로는 크기를 맞출 수 있는데, 시간적으로는 channel을 맞출 수 없어서, stack해서 넣거나 sampling만 하거나 하는 방법을 사용 함.
그런데 fast에서 slow로 가는 것만 도움이 되고 반대는 별 도움 안 되었다고 함.
모델 아키텍쳐만 설계하고 적절한 하이퍼파라미터를 찾는 노가다를 함.
X-Fast, X-Temporal, X-Spatial, X-Depth, X-Width, X-Bottleneck 총 6개의 파라미터에 대한 적당한 값을 실험으로 찾음.
파라미터를 아주 작은 값에서 시작해서 조금씩 늘려가며서 좋은 성능을 찾아냄. 이걸 Auto ML이라고 함.
그전까지는 CNN 기반으로 모델이 발달해 왔는데, 2021년에 Transformer를 이용한 ViT가 나오면서 Transformer가 주류가 됨.