happynear / FaceVerification

An Experimental Implementation of Face Verification, 96.8% on LFW.
447 stars 234 forks source link

confuse on CASIA_train_test.prototxt training loss #2

Closed vzvzx closed 9 years ago

vzvzx commented 9 years ago

I use the CASIA_train_test.prototxt with my dataset(2000person and 50 image for each total 10W+). I want to training deepid network using CASIA_train_test.prototxt. Only change the "ip1" layer output num from 10575 to 2000. but it cannot make the soft loss reduce, and the test accuracy is very small.

In the right case, what's the accuracy will be achieved? and what about the loss?

my alignment data like this. aaron_eckhart_001 aaron_eckhart_002

happynear commented 9 years ago

This is a very difficult problem, which has confused deep learning researchers for years. All I can do is to give you some suggestions.

  1. Reduce the original lr, e.g. set lr=0.001 at first.
  2. Have you used the 'msra' weight filler? In my experience, it works well for initiate the weights.
  3. Use smaller network first.
vzvzx commented 9 years ago

1.yes, I try set the lr from 0.1 to 0.0001, but it do not work fine. 2.yes I used the 'msra' weight filler and try the 'xavier' weight filler too 3.in small dataset (20 persons) it can achieve the accuracy to 80%. but not work on whole dataset 4.I try the mnist network can achieve 50% accuracy, but not good enough.

can you share a trained model to me, then I can see some detail, or I think I can do some finetune work.

happynear commented 9 years ago

Why not train a model using CASIA-Webface by yourself?

vzvzx commented 9 years ago

Yes, I'm training the model. But it's very useful to have some information from your success models. In new process I have made the loss reduce. :) and the test accuracy have achieved 70%(whole dataset).

In your success model, what test accuracy will be achieved?

untitled

happynear commented 9 years ago

I did not set a test set. I used all the CASIA-webface as training set, and copy them to be the test set.

The final accuracy on training set is about 89.5%~91.5%. As I remembered, after training with lr=0.01, the accuracy is about 80%.

vzvzx commented 9 years ago

thanks, this is very useful information. with lr=0.01 my accuracy is 82.81% in training datasets, but 66.08% in test datasets.

Is that mean I can do Verification based on this models? untitled

happynear commented 9 years ago

You should at least continue training with lr=0.001 for about 150,000 iteration.

vzvzx commented 9 years ago

after lr=0.001 my training accuracy achieve ~100%, and test accuracy achieve ~77% but the verification on lfw with this model, can only achieve ~60% using VerificationDemo.m.

this very strange, there is something wrong with my job.

here is some diff from your process. by your alignment code, the output data will link this . aaron_eckhart_003_1 but my crop the face to full the image, is this right? aaron_eckhart_003

happynear commented 9 years ago

I just follow the CASIA-Webface for setting the parameter. You should alignment the face as what you have done with your training data.