Open Victoria2333 opened 6 years ago
Hi Vic,
I had this question too.
There is answer in previous issue discussions: github.com/davidsandberg/facenet/issues/139
The above issue#139 covers how to restore. Then how to specify which layer to fine tune : (ps.1)
see "train_softmax.py" , there is a line : "train_op = facenet.train(", and this is where you put in whatever layers you want to fine tune
next, to specify whatever layers you want to fine tune : for example : ftune_vlist = [v for v in all_vars if v.name.startswith('InceptionResnetV1/Block8')]
pass ftune_vlist to facenet.train
for more details : David's wiki : https://github.com/davidsandberg/facenet/wiki/Classifier-training-of-inception-resnet-v1
ps.1 : maybe you need to see tensorboard or some source code to see names for different layers
BR, JimmyYS
@speculaas, Hi , speculaas, I've been working on the influence of finetune for face recognition. Here is my code: all_vars = tf.trainable_variables() set_A_vars = [v for v in all_vars if v.name.startswith('InceptionResnetV1/Block8')] saver_set_A = tf.train.Saver(set_A_vars, max_to_keep=3) saver_set_A_and_B = tf.train.Saver(all_vars, max_to_keep=3)
Then I do the transfer learning by restoring the variables in set A: saver_set_A.restore(sess, pretrained_model)
And save trained model completely: save_variables_and_metagraph(sess, saver_set_A_and_B, summary_writer, model_dir, subdir, epoch)
I want to test if the finetune of higher layers may do good to accuracy, but my accuracy on small dataset is very low , about o.318, so I want to know about your progress about this??? Did you find the progress of finetuning higher layers??
see "train_softmax.py" , find codes like below:
train_op = facenet.train(total_loss, global_step, args.optimizer,
learning_rate, args.moving_average_decay, tf.global_variables(), args.log_histograms)
#Create a saver
saver = tf.train.Saver(tf.trainable_variables(), max_to_keep=3)
replace it by below:
all_vars = tf.trainable_variables()
ftune_vlist = [v for v in all_vars if v.name.startswith('InceptionResnetV1/Block8')]
train_op = facenet.train(total_loss, global_step, args.optimizer,
learning_rate, args.moving_average_decay, ftune_vlist, args.log_histograms)
#Create a saver
saver = tf.train.Saver(ftune_vlist, max_to_keep=3)
and then u will just tune the layer in ftun_vlist's values.
fine_turn ftune_vlist variables after training performance is better ?
i use the
- see "train_softmax.py" , find codes like below:
Build a Graph that trains the model with one batch of examples and updates the model parameters
train_op = facenet.train(total_loss, global_step, args.optimizer, learning_rate, args.moving_average_decay, tf.global_variables(), args.log_histograms)
Create a saver
saver = tf.train.Saver(tf.trainable_variables(), max_to_keep=3)
- replace it by below:
fine_turn ftune_vlist variables
all_vars = tf.trainable_variables() ftune_vlist = [v for v in all_vars if v.name.startswith('InceptionResnetV1/Block8')] train_op = facenet.train(total_loss, global_step, args.optimizer, learning_rate, args.moving_average_decay, ftune_vlist, args.log_histograms)
Create a saver
saver = tf.train.Saver(ftune_vlist, max_to_keep=3)
- and then u will just tune the layer in ftun_vlist's values.
i use code find Similar to the previous program
- see "train_softmax.py" , find codes like below:
Build a Graph that trains the model with one batch of examples and updates the model parameters
train_op = facenet.train(total_loss, global_step, args.optimizer, learning_rate, args.moving_average_decay, tf.global_variables(), args.log_histograms)
Create a saver
saver = tf.train.Saver(tf.trainable_variables(), max_to_keep=3)
- replace it by below:
fine_turn ftune_vlist variables
all_vars = tf.trainable_variables() ftune_vlist = [v for v in all_vars if v.name.startswith('InceptionResnetV1/Block8')] train_op = facenet.train(total_loss, global_step, args.optimizer, learning_rate, args.moving_average_decay, ftune_vlist, args.log_histograms)
Create a saver
saver = tf.train.Saver(ftune_vlist, max_to_keep=3)
- and then u will just tune the layer in ftun_vlist's values.
How do I restore the model for validation in this case?
@davidsandberg I have been recently using this pretrained model to train my few-shot dataset of 43 persons, but i always got the error of classes not matching. maybe because my dataset size is 43 while MS-Celeb size is 10575. I'm not familiar with the saving and restoring models in TF, I want to restore part of the parameters and to finetune on my small dataset. So would you please give me some instructions about your finetune step?? Thank you~~~