人脸识别代码参考davidsandberg/facenet
人脸对齐
python ~/src/align/align_dataset_mtcnn.py \
~/lfw \
~/lfw_mtcnn_160 \
--image_size 160 \
--margin 32 \
--random_order
人脸识别模型训练
python src/train_softmax.py \
--log_base_dir ~/logs/facenet/ \
--models_base_dir ~/models/facenet/ \
--data_dir ~/datasets/casia/casia_maxpy_mtcnnpy_182 \
--image_size 160 \
--model_def modes.inception_resnet_v1 \
--lfw_dir ~/datasets/lfw/lfw_mtcnnpy_160 \
--optimizer RMSPROP \
--learning_rate -1 \
--max_nrof_epochs 80 \
--keep_probability 0.8 \
--random_crop \
--random_flip \
--learning_rate_schedule_file ~/data/learning_rate_schedule_classifier_casiz.txt \
--weight_decay 5e-5 \
--center_loss_factor 1e-2 \
--center_loss_alfa 0.9
-
--log_base_dir ~/logs/facenet/ 将会把训练日志保存到~/logs/facenet/,可以使用TensorBoard查看这些信息。
-
--models_base_dir ~/models/facenet/ 最终训练好的模型就保存在~/models/facenet/ 目录下。
-
--data_dir ~/datasets/casia/casia_maxpy_mtcnnpy_182 训练数据的位置。这里使用之前已经对齐好的CASIA-WebFace数据。
-
--image_size 160 输入网络的图片尺寸是160x160像素。
-
--model_def modes.inception_resnet_v1 比较关键的一个参数,它指定了训练的CNN的结构为inception_resnet_v1。项目支持的所有CNN结构在src/models目录下。共支持inception_resnet_v1、inception_resnet_v2、squeezenet三个模型,其中前两个模型较大,最后一个模型较小。如果使用--model_def modes.inception_resnet_v1后,出现内存或显存消耗光的情况,可以将其替换为--model_def modes.squeezenet,来训练一个较小的模型。
-
--lfw_dir ~/datasets/lfw/lfw_mtcnnpy_160 指定LFW数据集的位置。如果输入这个参数,每次执行完一个epoch,就会在LFW数据集上执行一次测试,并将测试后的正确率写到日志文件中。
-
--optimizer RMSPROP 指定使用的优化方法。
-
--learning_rate -1 原意指定学习率,但这里指定率负数,在程序中将忽略这个参数,而使用后面的--learning_rate_schedule_file参数规划学习率。
-
--max_nrof_epochs 80 表示最多跑80个epoch。
-
--keep_probability 0.8 在全连接层中,加入了dropout,这个参数表示dropout中连接被保持的概率。
-
--random_crop --random_flip 这两个参数表示在数据增强时,会进行随机的裁剪和翻转。
-
--learning_rate_schedule_file ~/data/learning_rate_schedule_classifier_casiz.txt 指定学习率参数文件。
-
--weight_decay 5e-5 所有变量的正则化系数。
-
--center_loss_factor 1e-2 中心损失和SoftMax损失的平衡参数。
-
--center_loss_alfa 0.9 中心损失的内部参数。
网友评论