yinguobing / facial-landmark-detection-hrnet

A TensorFlow implementation of HRNet for facial landmark detection.
GNU General Public License v3.0
157 stars 40 forks source link

Model Training #16

Open cdrose opened 2 years ago

cdrose commented 2 years ago

Hello, thank you so much for sharing your work. Your examples are very helpful for me learning about keypoint detection.

I have a question about training this model, when I train on the WFLW dataset I get increasing validation error after only a few training epochs. Is this from not enough training data, or is there some error in my setup?

For the saved checkpoint you provided, how many epochs was this trained and on which data sets?

image

yinguobing commented 2 years ago

I guess the increasing val loss is a sign of over fitting. HRNet is actually a large model and it may easily get over-fitted on this task. I would use the NME value as another metric to evaluate the model. You can get this value by evaluate.py.

The provided checkpoint files were exported from a model trained with WFLW dataset. The training log was not kept and as far as I remember the training process took no longer than 1 hour (RTX 3090), possibly less than that. So if the training was restored with the checkpoint files, smaller learning rate and less training steps are expected.

cdrose commented 2 years ago

That plot is from random initialisation not from your checkpoint, I might try with slower learning rate and see if it helps.

I see you have some code for ResNet also in your models folder. Have you done any trials with ResNet? I had a look to see if I can make the model work but did not succeed yet.

yinguobing commented 2 years ago

Please avoid using that ResNet, which is a experimental project.

Meanwhile TensorFlow has a mutual implementation here: https://www.tensorflow.org/api_docs/python/tf/keras/applications/resnet?hl=en

cdrose commented 2 years ago

OK thanks for the advice. Have you seen any tutorials that show how to use the Tensorflow ResNet for keypoint detection? I have only found examples of classification.

Perhaps I can work it out from looking at your HRNet implementation.