Skip to content
This repository has been archived by the owner on Oct 1, 2019. It is now read-only.

c3d_finetuning test error #25

Closed
Michael-Guo opened this issue Jul 30, 2015 · 13 comments
Closed

c3d_finetuning test error #25

Michael-Guo opened this issue Jul 30, 2015 · 13 comments

Comments

@Michael-Guo
Copy link

I run ucf101_testing.sh, when going to batch 29, there is an error : Check failed: read status Testing must not miss any example. Before that, I have successfully trained the network on UCF101 with your trainlist. It's ok. From batch 1to 29, I can get the accuracy normally. But going to Batch 30, the error appears. I am confused. So I seek help here, thank you! @dutran

@dutran
Copy link
Contributor

dutran commented Jul 30, 2015

@Michael-Guo Some of the clips in your testing set is failed to read. And the clip that was failed to read is belong to batch 30. However, because we shuffled the list, so we don't know which clips are wrong. Simple way is to change shuffle: false and track down clips that you missed, you an trace it out by adding some message show that which clips are missing, then either correct the frames/videos or remove those clips from the list file.

@dutran dutran closed this as completed Jul 31, 2015
@ycjlin
Copy link

ycjlin commented Aug 3, 2015

@Michael-Guo Did you solve the problem? How did you solve it?
I met the same problem when executing batch 1.
Thank you.

@ycjlin
Copy link

ycjlin commented Aug 3, 2015

@dutran @Michael-Guo I found the error is due to an inconsistent typo in "test_01.lst":
/Hand"s"tandPushups/v_HandStandPushups_g01_c01/ should be modified as
/Hand"S"tandPushups/v_HandStandPushups_g01_c01/ to make it more consistent with the other directories' naming rule
Thank for your help. :D

@Michael-Guo
Copy link
Author

@ycjlin I check my test_01.lst. Mine is correct. How did you find your error in your test_01.lst

@dutran
Copy link
Contributor

dutran commented Aug 4, 2015

@ycjlin @Michael-Guo there are several variants of UCF101 (the authors of UCF101 corrected the file names, action names a couple times: e.g. Pullup vs. PullUp, or HandStandPushups vs. HandstandPushups), thus there some inconsistency in the list.

@ycjlin
Copy link

ycjlin commented Aug 4, 2015

@Michael-Guo I set shuffle as false in c3d_ucf101_finetuning_test.prototxt. Then I gradually removed some files in test_01.lst until there are no errors. Using the concept of "divide and conquer" to find the error files.
@dutran Thank for your detailed explanation. It helps a lot.

@Michael-Guo
Copy link
Author

@dutran Is there some way to modify the source codes, so the program can show which file cannot be read. I set shuffle as false. I find the batch 9 which make errors. But all the paths are correct. I delete the bath 9. However, after several batches, the error occur again. I am very confused.

@Michael-Guo
Copy link
Author

@ycjlin Could you please send you test file for me, there are one more errors in my file. I want to look your test file as a reference. Thank you! My e-mail address is kjgwc@126.com. Thanks a lot!

@Michael-Guo
Copy link
Author

@dutran @dutran I set shuffle as false in c3d_ucf101_finetuning_test.prototxt. Then I manually find two terms leading to the error in test file.
They are
/ApplyLipstick/v_ApplyLipstick_g02_c01 113 1
BabyCrawling/v_BabyCrawling_g04_c01 113 3.
But I find the path in list is consistent with database's path. If I remove the two terms, the program can go down, but the same error will occur in the following batch.
Thus, I guess that frames in a clip are less than 16 may be the reason. The frames in the two clips are both less than 16.

@dutran
Copy link
Contributor

dutran commented Aug 5, 2015

@Michael-Guo you can un-comment line 127 (//LOG(ERROR) << "cannot read " << layer->file_list_[id];) in https://github.com/facebook/C3D/blob/master/src/caffe/layers/video_data_layer.cpp, to have the message out which clips are missing.

Yes, it needs 16 frames (by design of C3D architecture), but if you train you own architecture, this can be set differently.

@Michael-Guo
Copy link
Author

@dutran If a clip has less than 16 frames, how can we deal with this situtation in train or test. Just remove the clip?

@olivernina
Copy link

If the number of frames is not multiple of 16 might also be the cause of the problem, depending how you are extracting the features

@kasparov92
Copy link

kasparov92 commented Jun 7, 2017

I wrote the following piece of code to get a validated test file. Briefly, it checks whether the last block used in each clip of the dataset has the 16 frames. It also prints the clips that have issues.
validate_dataset.py.zip

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants