/c3d

C3D for Keras (only Tensorflow backend at the moment) with easy preprocessing and automatic downloading of TF format sports1M weights

Primary LanguagePython

Easy C3D for Keras

C3D for Keras 2.0 (only Tensorflow backend at the moment) with easy preprocessing and automatic downloading of TF format sports1M weights

DISLAIMER: These converted weights have not been fully tested and may differ somewhat from the original Caffe weights released by the C3D authors. Use at your own risk.

Requirements

  • Python 2 or 3
  • Keras 2.0+ (TensorFlow backend)
  • skvideo
    • ffmpeg
  • scipy
  • numpy

Examples

Classify videos

import skvideo.io
from c3d import C3D
from sports1M_utils import preprocess_input, decode_predictions

model = C3D(weights='sports1M')

vid_path = 'homerun.mp4'
vid = skvideo.io.vread(vid_path)
# Select 16 frames from video
vid = vid[40:56]
x = preprocess_input(vid)

preds = model.predict(x)
print('Predicted:', decode_predictions(preds))
#Predicted: [('baseball', 0.91488838)]

Extract features from videos

import skvideo.io
from c3d import C3D
from keras.models import Model
from sports1M_utils import preprocess_input, decode_predictions

base_model = C3D(weights='sports1M')
model = Model(inputs=base_model.input, outputs=base_model.get_layer('fc6').output)

vid_path = 'homerun.mp4'
vid = skvideo.io.vread(vid_path)
# Select 16 frames from video
vid = vid[40:56]
x = preprocess_input(vid)

features = model.predict(x)

References

Acknowledgements

Thanks to albertomontesg for C3D Sports1M theano weights and Keras code. Thanks to titu1994 for Theano to Tensorflow weight conversion code.