Python 如何提高FaceNet的准确性

Python 如何提高FaceNet的准确性,python,tensorflow,deep-learning,conv-neural-network,tensorboard,Python,Tensorflow,Deep Learning,Conv Neural Network,Tensorboard,我目前正在写论文,我将比较面部识别技术Eigenface、Fisherface和CNN在准确性和速度方面的差异。我目前正试图用电脑为CNN训练我自己的模特 我的问题是,我似乎无法将模型的准确度提高到71%以上,而我为分类器管理的最大准确度是80%。我使用的是LFW数据集的一小部分,它包含10个类,每个类有40个图像用于训练,每个类有4个图像用于测试 我尝试了以下参数,使用分类器获得77.5%的准确率,在模型向前传递时获得约71%的准确率: /* * Alignment */ python3

我目前正在写论文,我将比较面部识别技术Eigenface、Fisherface和CNN在准确性和速度方面的差异。我目前正试图用电脑为CNN训练我自己的模特

我的问题是,我似乎无法将模型的准确度提高到71%以上,而我为分类器管理的最大准确度是80%。我使用的是LFW数据集的一小部分,它包含10个类,每个类有40个图像用于训练,每个类有4个图像用于测试

我尝试了以下参数,使用分类器获得77.5%的准确率,在模型向前传递时获得约71%的准确率:

/*
 * Alignment
 */
python3 src/align/align_dataset_mtcnn.py ~/datasets/custom2/raw/training/ ~/datasets/custom2/aligned_182/training --image_size 182 --margin 44

python3 src/align/align_dataset_mtcnn.py ~/datasets/custom2/raw/testing/ ~/datasets/custom2/aligned_182/testing --image_size 182 --margin 44

/*
 * Training
 */
python3 src/train_softmax.py \
--logs_base_dir ~/logs/facenet/ \
--models_base_dir ~/models/facenet/ \
--data_dir ~/datasets/custom2/aligned_182/training/ \
--image_size 160 \
--model_def models.inception_resnet_v1 \
--lfw_dir ~/datasets/lfw/lfw_aligned_160/ \
--optimizer ADAM \
--learning_rate -1 \
--max_nrof_epochs 150 \
--keep_probability 0.8 \
--random_crop \
--random_flip \
--use_fixed_image_standardization \
--learning_rate_schedule_file data/learning_rate_schedule_classifier_casia.txt \
--weight_decay 5e-4 \
--embedding_size 512 \
--lfw_distance_metric 1 \
--lfw_use_flipped_images \
--lfw_subtract_mean \
--validation_set_split_ratio 0.05 \
--validate_every_n_epochs 5 \
--prelogits_norm_loss_factor 5e-4

python3 src/freeze_graph.py ~/models/facenet/20190402-225816/ ~/models/facenet/20190402-225816/model.pb

python3 src/classifier.py TRAIN ~/datasets/custom2/aligned_182/training/ ~/models/facenet/20190402-225816/model.pb ~/models/facenet/20190402-225816/classifier.pkl --batch_size 1000

/*
 * Test verification
 */
python3 src/classifier.py CLASSIFY ~/datasets/custom2/aligned_182/testing/ ~/models/facenet/20190402-225816/model.pb ~/models/facenet/20190402-225816/classifier.pkl --batch_size 1000
/*
 * Alignment
 */
for N in {1..4}; do python3 src/align/align_dataset_mtcnn.py ~/datasets/custom2/raw/training ~/datasets/custom2/aligned_160/training --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.2 & done

/*
 * Training
 */
python3 src/train_softmax.py \
--logs_base_dir ~/logs/facenet/ \
--models_base_dir ~/models/facenet/ \
--data_dir ~/datasets/custom2/aligned_160/training \
--image_size 160 \
--model_def models.inception_resnet_v1 \
--lfw_dir ~/datasets/lfw/lfw_aligned_160 \
--optimizer RMSPROP \
--learning_rate 0.01 \
--weight_decay 1e-4 \
--max_nrof_epochs 100 \
--gpu_memory_fraction 0.95

python3 src/freeze_graph.py ~/models/facenet/20190401-114728/ ~/models/facenet/20190401-114728/model.pb

python3 src/classifier.py TRAIN ~/datasets/custom2/aligned_160/training/ ~/models/facenet/20190401-114728/model.pb ~/models/facenet/20190401-114728/classifier.pkl --batch_size 1000

/*
 * Verification
 */
python3 src/classifier.py CLASSIFY ~/datasets/custom2/aligned_160/testing/ ~/models/facenet/20190401-114728/model.pb ~/models/facenet/20190401-114728/classifier.pkl --batch_size 1000
但在此之前,我尝试了以下方法,分类器的准确率为80%,向前传球的准确率为68%:

/*
 * Alignment
 */
python3 src/align/align_dataset_mtcnn.py ~/datasets/custom2/raw/training/ ~/datasets/custom2/aligned_182/training --image_size 182 --margin 44

python3 src/align/align_dataset_mtcnn.py ~/datasets/custom2/raw/testing/ ~/datasets/custom2/aligned_182/testing --image_size 182 --margin 44

/*
 * Training
 */
python3 src/train_softmax.py \
--logs_base_dir ~/logs/facenet/ \
--models_base_dir ~/models/facenet/ \
--data_dir ~/datasets/custom2/aligned_182/training/ \
--image_size 160 \
--model_def models.inception_resnet_v1 \
--lfw_dir ~/datasets/lfw/lfw_aligned_160/ \
--optimizer ADAM \
--learning_rate -1 \
--max_nrof_epochs 150 \
--keep_probability 0.8 \
--random_crop \
--random_flip \
--use_fixed_image_standardization \
--learning_rate_schedule_file data/learning_rate_schedule_classifier_casia.txt \
--weight_decay 5e-4 \
--embedding_size 512 \
--lfw_distance_metric 1 \
--lfw_use_flipped_images \
--lfw_subtract_mean \
--validation_set_split_ratio 0.05 \
--validate_every_n_epochs 5 \
--prelogits_norm_loss_factor 5e-4

python3 src/freeze_graph.py ~/models/facenet/20190402-225816/ ~/models/facenet/20190402-225816/model.pb

python3 src/classifier.py TRAIN ~/datasets/custom2/aligned_182/training/ ~/models/facenet/20190402-225816/model.pb ~/models/facenet/20190402-225816/classifier.pkl --batch_size 1000

/*
 * Test verification
 */
python3 src/classifier.py CLASSIFY ~/datasets/custom2/aligned_182/testing/ ~/models/facenet/20190402-225816/model.pb ~/models/facenet/20190402-225816/classifier.pkl --batch_size 1000
/*
 * Alignment
 */
for N in {1..4}; do python3 src/align/align_dataset_mtcnn.py ~/datasets/custom2/raw/training ~/datasets/custom2/aligned_160/training --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.2 & done

/*
 * Training
 */
python3 src/train_softmax.py \
--logs_base_dir ~/logs/facenet/ \
--models_base_dir ~/models/facenet/ \
--data_dir ~/datasets/custom2/aligned_160/training \
--image_size 160 \
--model_def models.inception_resnet_v1 \
--lfw_dir ~/datasets/lfw/lfw_aligned_160 \
--optimizer RMSPROP \
--learning_rate 0.01 \
--weight_decay 1e-4 \
--max_nrof_epochs 100 \
--gpu_memory_fraction 0.95

python3 src/freeze_graph.py ~/models/facenet/20190401-114728/ ~/models/facenet/20190401-114728/model.pb

python3 src/classifier.py TRAIN ~/datasets/custom2/aligned_160/training/ ~/models/facenet/20190401-114728/model.pb ~/models/facenet/20190401-114728/classifier.pkl --batch_size 1000

/*
 * Verification
 */
python3 src/classifier.py CLASSIFY ~/datasets/custom2/aligned_160/testing/ ~/models/facenet/20190401-114728/model.pb ~/models/facenet/20190401-114728/classifier.pkl --batch_size 1000
模型本身在LFW正向过程中的精度在第一个过程中更好,精度为~71%,而不是~68%,但使用分类器时,精度为77.5%,而不是80%。我的问题是我应该怎么做才能达到更高的准确度。 如果可能的话,我想超过90%。我从tensorboard收集的图表上可以看到,在训练期间,模型到处都是。这些图表来自模型,精确度约为71%:

这些数据来自第一个模型,精确度约为68%:

如果可能的话,我希望使用我自己的模型达到90%以上的准确率,因为我将把它与其他技术进行比较

如果需要更多信息来帮助我,请告诉我!这里有人知道我应该尝试什么才能达到90%以上的准确率吗

提前谢谢