반응형
Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset
Submit : Shi, Baoguang, Xiang Bai, and Cong Yao.CVPR(2017)
Paper : https://arxiv.org/abs/1507.05717
Code : https://github.com/deepmind/kinetics-i3d
1. introduction
- imagenet으로 이미지 분류를 하면서 알게된게 굉장히 큰 데이터셋으로 프리트레이닝하면 다른 도메인의 문제로도 확대 적용하는데 굉장히 많은 도움 된다
- 네트워크 구조 바뀌어도 도움된다
- 큰 비디오 데이터셋이 있다면 → 프리트레이닝으로 퍼포먼스 높일 수 있지 않을까
- kinetics라는 큰 비디오 데이터셋 만듦
- SOTA 아키텍쳐 다시 구현
- HMDB-51, UCF-101인 작은 데이터셋으로 프리트레이닝하고 하니 소타
- I3D 모델 제안
action recognition에서 유명했던 모델들
(e) : 여기서 제안한 I3D
그전까지의 architecture들은 선두주자는 없었다.
- 2d할지 3d할지의 차이뿐. RGB만 넣어서 처리할지
- optical flow를 새로운 feature로 집어넣어서 활용할 것인지
- 2d로 frame by frame할지 어떻게 aggregation할지
2. Related works
- 2D conv + LSTM
- 2d conv으로 frame by frame. 장당 conv에 넣음
- 그 결과를 aggregation해서 (풀링) average/sum/max pooling해서 하나로 aggregation해서 판정
- pooling대신 아웃풋을 LSTM연결 temporal modeling
- 시간축 다르게 모델링 → 성능이 그렇게 좋지는 않았다
- RNN은 시퀀셜하게 해야하기때문에 연산이 어려웠다
- C3D
- 비디오를 이해하기위한 3d사용
- 3d: time축으로도 dimension연장
- parameter 많아져서 training 어려워진다
- 3차원에서 상하좌우앞뒤 움직이며 3conv 네트워크 모델링
- 8개의 conv layer, 5 max pooling, 2 fc layer했음에도 불구하고 많은 연산량
- Sports1M 데이터셋 사용. 트레이닝: 한달 걸림
- 2d conv는 resnet, inception과 같은 효율적인거 사용 그러나 3d는 그게 없음
- 가장 기본적으로 하면 연산량 굉장히 많음, 좋은 결과 나오진 않음
- optical flow 적용한 two-stream network (c)
- 3d보다 (c3d) 훨씬 좋은 결과
- 2d image (RGB비트맵) + optical flow
- 두 conv의 architecture는 똑같음
- optical flow?
- 화면 안에서 어떤 픽셀이 이동했을 때 얼마만큼 움직였는지 보여주는 벡터
- motion vectore라는 개념과 유사. (블락단위의 하나 벡터) optical flow는 픽셀단위. 계산하기 어려움
- 3d motion → 2d 에 대해 pixel의 움직임을 vector로 모델링
- 이게 pixel 자체의 움직임도 고려 해야하지만 시청자(카메라의 시점 움직임)를 고려해야 해서 어렵다
- optical flow + rgb 같이 적용하면 아주 좋다
- 문제점은 optical flow가 계산하기 굉장히 어렵다 . 오늘 말하는 I3D 연구자들은 optical flow는 계산이 많기 때문에 end-to-end어렵고 precomputation해서 다른데서 계산해오면 그 후에 처리하겠다
- 이미지 한 장에 대해서 비디오에서 이미지 몇장을 추출해서 2stream network에 통한 결과를 가지고 다시 pooling을해서 평균값으로 판정
- 하나하나 이미지에 대해서는 inception V1사용. optical flow는 10개 프레임에서 나온 걸 사용
- conv에 넣어서 나온 결과값을 평균취하거나 또는 SVM에 classifier로 넣어서 하나의 액션을 판정
- single frame image에 대해 conv 결과와 / optical flow를 거쳐서 하나의 액션을 정함
- 연산량 적고 정확도 굉장히 높음
- two-stream network (d)
- c와 다른건 3d를 한번 더 붙임 (뒤에)
- feature extract를 위한게 아니고 양쪽 conv에서 나온 loss function의 joint loss를 minimize를 하기 위한 방법을 잘 모르겠으니3d conv 필터가 학습해서 joint한걸 minimize하겠지 하는 마음
- 계산 굉장히 복잡
- 결과는 c와 수치적으로 큰 차이는 나지 않음
3. Method
(1) I3D (오늘의 것)
- 3d conv활용. (앞에서 나온 3d는 네트워크를 새롭게 정의)
- 여기서는 이미 잘 연구 잘돼있었던 3d네트워크 구조 그대로 가져오겠다
- inceptionV1사용
- 효율적인 네트워크의 구조도 있지만 이미지넷에서 프리트레이닝한 웨이트를 가져올 수 있기 때문
- 성능을 많이 올리겠다
- 2d → 3d how? inflation이라는 단어 사용
- conv filter를 타임축으로 확정 (웨이트를 똑같이 복사)
- 필터의 경우 타임축으로 n번 복제하면 이걸 나중에 1/n해서 스케일링 → 타임축으로 복제를 해주자
- nxn을 타임축으로 n배 해주자 → 말이 안된다.
- 가로세로축은 픽셀단위인데 시간축은 프레임단위. 이건 말이 안됨
- 그래서 inceptionV1으로 아키텍쳐 만들었을 때 7x7 → 7x7x7 , 1x1 → 1x1x1이 기본 정의
- 그래서! 앞에있는 맥스풀링 두개는 시간축으로 맥스풀링 하지 않는다
(2) architecture 요약
- 3d썼지만 2d를 확장했기 때문에 imagenet에서 pretrained된 weight를 그대로 가져와 쓸 수 있고 3d는 그게 불가.
- 가지고 온 3d conv구조가 효율적이라 image resolution도 그대로
- time축도 64개까지 볼 수 있음
(3) Kinetics dataset
a. 설명
- 400개 클래스 대해서 최소 400개, 10초 비디오 클립이 있는 dataset (30만개)
- 당시 dataset에 비해 100배 이상 많은 데이터셋
- 실제로 sports1M이 있기 떄문에 용량은 더 큼 (스포츠에 대해서만)
- kinetics는 범용 카테고리를 가지고 있음.
- 지금도 딥마인드 웹페이지 가면 키네틱스는 지속적으로 확장. 올해 700개 클래스로 발전(65만개)
b. 만든 방법
- 만들고싶은 action class 정의
- 유투브에 대해 구글 이미지 검색으로 액션들을 query 날림
- mechanical turk사용해서 하나의 비디오에 대해 5사람한테 대해서 비디오
- 5명으로부터 최소 3표이상 얻은 데이터만 라벨링 작업
4. Experiment
(1) 전체
- 3가지 데이터 사용
- 5가지의 액션 architecture 사용
- I3D가 가장 높은 결과를 보여줌 (셋 다)
- optical flow를 쓰는 3가지 (c,d,e)가 성능 좋았다는걸 알 수 있다
(1) kinetics에서 실험
- ImageNet으로 pretraining 한 것이 과연 도움이 되었는가? 실험
- 아주 많이는 아니지만 조금씩, 대략 2~3정도 상승
- 3d conv같은 경우 이미지에 대한 pretraining 가져올 순 없었지만 다른건 가능
a. kinetics로 프리트레이닝했을 때 과연 효과가 있었을까?
(3) transfer learning (크게 두가지 방법)
- Fixed
- 큰 dataset으로 pretraining 한 후에 weight를 fix하고 마지막에 classfier layer만 새로 트레이닝
- Full-FT
- 모든 layer에 대해 새로운 타겟 dataset으로 다 업데이트 해주는 fine tuning
- UCF101, HMDB-51사용
- pretraining 안했을 때보다 했을 때 성능 좋음
- Fixed < Full-FT
- 데이터가 두개씩 있는데
/는 imageNet pretraining 값 가지고 갈까말까 : 큰차이는 안나더라
- SOTA 알고리즘 비교했을 때, I3D가 가장 높은 성능을 보임
- 그 전까지는 ST-ResNet + IDT 가 SOTA
- 2스트림 네트워크 사용했는데 기본적으로 ResNet 사용. 두개의 ResNet을 서로 왔다갔다 하는 연결
5. Conclusion
- kinetics처럼 큰 dataset을 사용했더니 pretraining하는 효과가 있었다
- 최적이라고 생각하는 architecture 제안
- 2017년에 나옴
- 올해는 facebook에서는 slow fast (optical flow사용하지 않는 network)가 좋음
- 다른 task에 적용했을 때도 이런 방법이 효과가 있을지는 모르겠으니 한번 해봐라~
6. reference
반응형
'Paper review > Vision' 카테고리의 다른 글
[논문 리뷰] ObamaNet: Photo realistic lip sync from text (0) | 2020.06.14 |
---|---|
[논문 리뷰] Everybody Dance Now (0) | 2020.06.14 |
[논문 리뷰] Adversarial Examples Are Not Bugs, They Are Features (0) | 2020.06.14 |
[논문 리뷰] A Closer Look at Few shot Classification (0) | 2020.06.14 |
[논문 리뷰] Fast R-CNN (0) | 2020.05.24 |