Follow these steps to train C3D on UCF-101.
- Download UCF-101 dataset from UCF-101 website.
- Unzip the dataset: e.g.
unrar x UCF101.rar
- (Optional) video reader works more stably with extracted frames than directly with video files. Extract frames from UCF-101 videos by revising and running a helper script,
${video-caffe-root}/examples/c3d_ucf101/extract_UCF-101_frames.sh
. - Change
${video-caffe-root}/examples/c3d_ucf101/c3d_ucf101_{train,test}_split1.txt
to correctly point to UCF-101 videos or directories that contain extracted frames. - Modify
${video-caffe-root}/examples/c3d_ucf101/c3d_ucf101_train_test.prototxt
to your taste or HW specification. Especiallybatch_size
may need to be adjusted for the GPU memory. - Run training script: e.g.
cd ${video-caffe-root} && examples/c3d_ucf101/train_ucf101.sh
- After ~7 epochs of training, check if you have about 45% clip accuracy. (See original paper Figure 2 -- ~45% clip accuracy around 6th epoch.)
A typical training will yield the following loss and top-1 accuracy:
train_ucf101.sh
: a main script to run for training C3D on UCF-101 datac3d_ucf101_solver.prototxt
: a solver specifications -- SGD parameters, testing parametesr, etcc3d_ucf101_test_split1.txt
,c3d_ucf101_train_split1.txt
: lists of testing/training video clips in ("video directory", "starting frame num", "label") formatc3d_ucf101_train_test.prototxt
: training/testing network modelucf101_train_mean.binaryproto
: a mean cube calculated from UCF101 training setc3d_ucf101_train_loss_accuracy.png
: a sample plot of training iteration vs loss and accuracy