이 저장소에는 Joao Carreira와 Andrew Zisserman의 "Quo Vadis, Action Recognition? 새로운 모델 및 동역학 데이터 세트"에보 고 된 훈련 된 모델이 포함되어 있습니다. 이 논문은 2017 년 5 월 ARXIV에 게시되었으며 CVPR 2017 컨퍼런스 논문으로 출판 될 예정입니다.
"Quo Vadis"는 비디오 분류, 팽창 된 3D Convnet 또는 I3D를위한 새로운 아키텍처를 소개했습니다. 여기서 우리는 Kinetics 데이터 세트 교육 분할에 대한 훈련 된 Inception-v1 i3d 모델을 출시합니다.
우리 논문에서, 우리는 UCF101 및 HMDB51 데이터 세트에 대한 최첨단 결과를 보고이 모델을 미세 조정하는 것으로보고했습니다. 동역학에 미리 훈련 된 I3D 모델은 CVPR 2017 Charades Challenge에서 1 위를 차지했습니다.
이 저장소에는 이제 RGB 입력을 사용한 미리 훈련 된 체크 포인트가 포함되어 있으며 동역학 -600에서 처음부터 훈련됩니다.
새로운 : 우리가 사용한 비디오 전처리는 이제 Google에 의해 개방적입니다. 설정하려면 Google의 미디어 파이프 리포지토리 에서이 지침을 확인하십시오.
면책 조항 : 이것은 공식적인 Google 제품이 아닙니다.
먼저 소네트 설치 지침을 따르십시오.
그런 다음이 저장소를 사용하여 복제하십시오
$ git clone https://github.com/deepmind/kinetics-i3d
예제 코드를 사용하여 실행하십시오
$ python evaluate_sample.py
기본 플래그를 사용하면 i3d 2 스트림 모델을 구축하고 미리 훈련 된 i3d 검사 점을 Tensorflow 세션에로드 한 다음 모델을 통해 예제 비디오를 전달합니다. 예제 비디오는 RGB 및 Flow Numpy Array가 제공된 전처리되었습니다 (아래 자세한 내용 참조).
스크립트는 Logits 텐서의 표준과 확률 및 로이트 값을 가진 모델에 의해 예측 된 상위 20 개의 동역학 클래스를 출력합니다. 기본 플래그를 사용하여 출력은 다음과 비슷해야합니다.
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
테스트 파일을 사용하여 실행할 수 있습니다
$ python i3d_test.py
이를 통해 모델이 올바르게 구축 될 수 있고 올바른 모양을 생성 할 수 있습니다.
기본 모델은 ImageNet 및 동역학에서 미리 훈련되었습니다. 다른 플래그를 사용하면 동역학에서만 미리 훈련 된 모델을로드하고 RGB 또는 흐름 흐름 만 선택할 수 있습니다. Script multi_evaluate.sh
이러한 모든 조합을 실행하는 방법을 보여 주어 out/
Directory에서 샘플 출력을 생성합니다.
디렉토리 data/checkpoints
에는 훈련 된 4 개의 체크 포인트가 포함되어 있습니다. 동역학에 대해 방금 훈련 된 것들은 기본 소네트 / 텐서 플로 초기화를 사용하여 초기화되는 반면, Imagenet에서 미리 훈련 된 것은 용지에 설명 된 바와 같이 2D Inception-V1 모델에서 필터를 3D로 부트 스트랩하여 초기화됩니다. 중요하게도, RGB 및 흐름 스트림은 각각 SoftMax 분류 손실로 별도로 훈련됩니다. 테스트 시간 동안 evalute_sample.py
Code와 같이 로그를 동일한 가중치로 추가하여 두 스트림을 결합합니다.
우리는 tf.train.SyncReplicasOptimizer
사용하여 동기 SGD를 사용하여 훈련합니다. 각각의 RGB 및 유량 스트림에 대해, 우리는 4 개의 백업 복제본을 갖춘 64 개의 복제품을 통한 집계를 집계합니다. 훈련하는 동안, 우리는 0.5 드롭 아웃을 사용하고 미니 배치 크기가 6 인 Batchnorm을 적용합니다. 사용 된 최적화는 운동량 값이 0.9 인 SGD이며 1e-7 무게 붕괴를 사용합니다. RGB 및 흐름 모델은 다음 학습 속도 일정과 함께 각각 115k 및 155k 단계로 훈련됩니다.
RGB :
흐름:
이는 유량 모델이 115k 단계의 초기 실행 후 더 많은 훈련이 필요한 것으로 결정 되었기 때문입니다.
모델은 운동학의 훈련 분할을 사용하여 훈련됩니다. 동역학 테스트 세트에서 우리는 다음과 같은 상위 1 / 상위 5 가지 정확도를 얻습니다.
모델 | imagenet + 동역학 | 동력학 |
---|---|---|
RGB-I3D | 71.1 / 89.3 | 68.4 / 88.0 |
흐름 -i3d | 63.4 / 84.9 | 61.5 / 83.4 |
2 스트림 i3d | 74.2 / 91.3 | 71.6 / 90.0 |
DeepMind Kinetics 데이터 세트의 릴리스에는 YouTube ID와 클립의 시작 및 종료 시간 만 포함되었습니다. 여기 샘플 데이터의 경우 모든 비디오가 전체적으로 제공되는 UCF101 데이터 세트의 비디오를 사용합니다. 사용 된 비디오는 v_CricketShot_g04_c01.mp4
이며 UCF101 웹 사이트에서 다운로드 할 수 있습니다.
당사의 전처리는 내부 라이브러리를 사용하며, 이제는 개방형 소스 점검 Google MediaPipe Repo입니다. 다음은 다음과 같습니다. 두 스트림 모두 프레임을 초당 25 프레임으로 샘플합니다. Kinetics의 경우 제공된 시작 및 종료 시간에 비디오를 추가로 클립합니다.
RGB의 경우 비디오는 측면 비율을 보존하여 크기가 조정되어 가장 작은 치수가 256 픽셀이며 이중선 보간이 있습니다. 그런 다음 픽셀 값을 -1에서 1 사이에서 저조합니다. 훈련 중에 224x224 이미지 작물을 무작위로 선택하고 테스트 중에는 비디오에서 센터 224x224 이미지 작물을 선택합니다. 제공된 .npy
파일은 RGB의 경우 (1, num_frames, 224, 224, 3)
을 갖고, 배치 크기 1에 해당합니다.
플로우 스트림의 경우 초당 25 프레임으로 비디오를 샘플링 한 후 비디오를 GrayScale로 변환합니다. OpenCV 의이 코드와 유사한 TV-L1 광학 흐름 알고리즘을 적용합니다. 픽셀 값은 [-20, 20] 범위로 잘린 다음 -1과 1 사이에서 저조합니다. 우리는 처음 두 출력 치수 만 사용하고 RGB와 동일한 자르기를 적용합니다. 제공된 .npy
파일은 하류에 대한 모양 (1, num_frames, 224, 224, 2)
을 갖는다.
다음은 제공된 .npy
파일을 보여주는 GIF입니다. RGB 데이터로부터 1을 추가 한 다음 0과 1 사이의 재생산으로 1을 추가 한 다음 2로 나뉘 었습니다. 흐름 데이터의 경우 모두 0의 세 번째 채널을 추가 한 다음 전체 배열에 0.5를 추가하여 결과가 0과 사이에 있습니다. 1.
전처리에 대한 자세한 내용은이 확인을 확인하거나 논문을 참조하거나 저자에게 문의하십시오.
Brian Zhang, Joao Carreira, Viorica Patraucean, Diego de Las Casas, Chloe Hillier 및 Andrew Zisserman 이이 초기 릴리스를 준비하는 데 도움을주었습니다. 또한 Kinetics 데이터 세트 뒤에있는 팀 과이 아키텍처 및 코드가 기반을 둔 원래 Inception 용지에 감사드립니다.
이 저장소에 기여하려면 먼저 Contributing.md 파일에 제공된 Google 기고자 라이센스 계약 (CLA)에 서명해야합니다. 그런 다음 현재 다른 훈련 된 모델로 확장하려는 것을 목표로하지는 않지만 풀 요청을 수락 할 수 있습니다.
궁금한 점이 있으면 "Quo Vadis"논문의 저자에게 연락 할 수 있습니다.