Home

Awesome

C3D-tensorflow

This is a repository trying to implement C3D-caffe on tensorflow,useing models directly converted from original C3D-caffe.
Be aware that there are about 5% video-level accuracy margin on UCF101 split1 between our implement in tensorflow and the original C3D-caffe.

Requirements:

  1. Have installed the tensorflow >= 1.2 version
  2. You must have installed the following two python libs: a) tensorflow b) Pillow
  3. You must have downloaded the UCF101 (Action Recognition Data Set)
  4. Each single avi file is decoded with 5FPS (it's depend your decision) in a single directory.
    • you can use the ./list/convert_video_to_images.sh script to decode the ucf101 video files
    • run ./list/convert_video_to_images.sh .../UCF101 5
  5. Generate {train,test}.list files in list directory. Each line corresponds to "image directory" and a class (zero-based). For example:
    • you can use the ./list/convert_images_to_list.sh script to generate the {train,test}.list for the dataset
    • run ./list/convert_images_to_list.sh .../dataset_images 4, this will generate test.list and train.list files by a factor 4 inside the root folder
database/ucf101/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g01_c01 0
database/ucf101/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g01_c02 0
database/ucf101/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g01_c03 0
database/ucf101/train/ApplyLipstick/v_ApplyLipstick_g01_c01 1
database/ucf101/train/ApplyLipstick/v_ApplyLipstick_g01_c02 1
database/ucf101/train/ApplyLipstick/v_ApplyLipstick_g01_c03 1
database/ucf101/train/Archery/v_Archery_g01_c01 2
database/ucf101/train/Archery/v_Archery_g01_c02 2
database/ucf101/train/Archery/v_Archery_g01_c03 2
database/ucf101/train/Archery/v_Archery_g01_c04 2
database/ucf101/train/BabyCrawling/v_BabyCrawling_g01_c01 3
database/ucf101/train/BabyCrawling/v_BabyCrawling_g01_c02 3
database/ucf101/train/BabyCrawling/v_BabyCrawling_g01_c03 3
database/ucf101/train/BabyCrawling/v_BabyCrawling_g01_c04 3
database/ucf101/train/BalanceBeam/v_BalanceBeam_g01_c01 4
database/ucf101/train/BalanceBeam/v_BalanceBeam_g01_c02 4
database/ucf101/train/BalanceBeam/v_BalanceBeam_g01_c03 4
database/ucf101/train/BalanceBeam/v_BalanceBeam_g01_c04 4
...

Usage

  1. python train_c3d_ucf101.py will train C3D model. The trained model will saved in models directory.
  2. python predict_c3d_ucf101.py will test C3D model on a validation data set.
  3. cd ./C3D-tensorflow-1.0 &&python Random_clip_valid.py will get the random-clip accuracy on UCF101 test set with provided sports1m_finetuning_ucf101.model.
  4. C3D-tensorflow-1.0/Random_clip_valid.py code is compatible with tensorflow 1.0+ , with a little bit different with the old repository
  5. IMPORTANT NOTE: when you load the sports1m_finetuning_ucf101.model,you should use the tranpose operation like: pool5 = tf.transpose(pool5, perm=[0,1,4,2,3]),or in Random_clip_valid.py looks like:["transpose", [0, 1, 4, 2, 3]], but if you load conv3d_deepnetA_sport1m_iter_1900000_TF.model or c3d_ucf101_finetune_whole_iter_20000_TF.model,you don't need tranpose operation,just comment that line code.

Experiment result:

platformfeature extractor modelfc6+SVMfc6+SVM+L2 norm
caffeconv3d_deepnetA_sport1m_iter_1900000.caffemodel81.99%83.39%
tensorflowconv3d_deepnetA_sport1m_iter_1900000_TF.model79.38%81.44%
tensorflowc3d_ucf101_finetune_whole_iter_20000_TF.model79.67%81.33%
tensorflowsports1m_finetuning_ucf101.model82.73%85.35%
platformpre-trained modeltrain-strategyvideo-accuracyclip-accuracyrandom-clip
caffec3d_ucf101_finetune_whole_iter_20000.caffemodeldirectly test-79.87%-
tensorflowc3d_ucf101_finetune_whole_iter_20000_TF.modeldirectly test78.35%72.77%57.15%
tensorflow-Aconv3d_deepnetA_sport1m_iter_1900000_TF.caffemodelwhole finetuning76.0%71%69.8%
tensorflow-Bsports1m_finetuning_ucf101.modelfreeze conv,only finetune fc layers79.93%74.65%76.6%

Trained models:

ModelDescriptionCloudsDownload
C3D sports1M TFC3D sports1M converted from caffe C3DDropboxC3D sports1M
C3D UCF101 TFC3D UCF101 trained model converted from caffe C3DDropboxC3D UCF101
C3D UCF101 TF trainfinetuning on UCF101 split1 use C3D sports1M model by @ hx173149DropboxC3D UCF101 split1
split1 meanfile TFUCF101 split1 meanfile converted from caffe C3DDropboxUCF101 split1 meanfile
everything aboveall four files abovebaiduyunbaiduyun

Other verions

References: