facenet 人脸识别源码的使用方法(一)
https://blog.csdn.net/u012505617/article/details/88038733
疯狂的小萝卜头
facenet 人脸识别(一)
https://www.cnblogs.com/gmhappy/p/9472388.html
pip install --upgrade --ignore-installed --default-timeout=65000 tensorflow-gpu==1.14
安装
1、anaconda 下新建 环境 face ,python版本选择 3.6
2、升级 pip到最新版 ,python升级到 3.6最新版
3、安装 requirements.txt 文件里的包
4、卸载 scipy1.4.1 安装 scipy1.2.1 再卸载 numpy=1.18.1 安装 numpy=1.16.2
5、将 facenet文件夹复制到anaconda对应环境文件夹下
6、将align.dataset_mtcnn.py 文件中 修改
import facenet.src.facenet as facenet
import facenet.src.align.detect_face as detect_face
两处 align.detect_修改为 detect_face
7、将 lfw数据解压到 facenet\data 下,为 facenet\data\lfw\name\name_xxxx.jpg 格式
8、在data目录新建一个空文件夹,命名为 lfw_160
9、切换目录至facenet下 python src\align\align_dataset_mtcnn.py --help 测试是否能够正常显示help信息
10、执行转换 python src/align/align_dataset_mtcnn.py data/lfw data/lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25
../data/lfw ../data/lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25
ValueError: Object arrays cannot be loaded when allow_pickle=False
修改 detect_face.py 里的
data_dict = np.load(data_path, encoding='latin1').item()
为
data_dict = np.load(data_path, encoding='latin1',allow_pickle=True).item()
11、预估准确率
python src/validate_on_lfw.py data/lfw_160 models/20180408-102900
Accuracy 0.97833+-0.00489
Validation rate 0.83967+-0.03686 FAR 0.00133
Area Under Curve 0.997
Equal Error Rate 0.025
python src/validate_on_lfw.py data/lfw_160 models/20180402-114759
Accuracy 0.98467+-0.00407
Validation rate 0.90567+-0.01995 FAR 0.00067
Area Under Curve 0.998
Equal Error Rate 0.015
12、搜集人脸
检测对齐人脸
python src\align\align_dataset_mtcnn.py data/stars data/stars_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25
人脸训练
python src\classifier.py TRAIN data/stars_160 models/20180408-102900/ models/classifier.pkl
数据集测试
python src\classifier.py CLASSIFY data/stars_160 models/20180408-102900/ models/classifier.pkl
图片测试
python contributed\predict.py data/test/test1.jpeg models/20180408-102900/ models/classifier.pkl
匹配人脸
https://blog.csdn.net/hongbin_xu/article/details/80253684?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
训练数据集
for N in {1..4}; do \
python src/align/align_dataset_mtcnn.py \
datasets/casia/CASIA-maxpy-clean/ \
datasets/casia/casia_maxpy_mtcnnpy_182 \
--image_size 182 \
--margin 44 \
--random_order \
--gpu_memory_fraction 0.25 \
& done
python src/align/align_dataset_mtcnn.py datasets/casia/CASIA-maxpy-clean/ datasets/casia/casia_maxpy_mtcnnpy_182 --image_size 182 --margin 44 --random_order --gpu_memory_fraction 0.25
python src/train_softmax.py \
--logs_base_dir logs/facenet/ \
--models_base_dir models/facenet/ \
--data_dir datasets/casia/casia_maxpy_mtcnnpy_182/ \
--image_size 182 ^
--model_def models.inception_resnet_v1 \
--lfw_dir data/lfw_160/ \
--optimizer ADAM \
--learning_rate -1 \
--max_nrof_epochs 2 \
--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
facenet pyhton3.5 训练 train_softmax.py 时报错AttributeError: 'dict' object has no attribute 'iteritems'
https://www.cnblogs.com/liuwenhua/p/11516678.html
由于我的python时3.5的,Python3.5中:iteritems变为items
https://blog.csdn.net/u012505617/article/details/88038733
KeyError: "The name 'decode_image/cond_jpeg/is_png' refers to an Operation not in the graph."
解决
在facenet.py代码中找到create_input_pipeline 再添加一行语句 with tf.name_scope("tempscope"): 就可以完美解决(貌似Tensorflow 1.10及以上版本才修复这个bug)。
python src/train_tripletloss.py --models_base_dir models/facenet --model_def models.inception_resnet_v1 --data_dir datasets/casia/casia_maxpy_mtcnnpy_182 --image_size 160 --optimizer RMSPROP --learning_rate -1 --max_nrof_epochs 20 --keep_probability 0.8 --random_crop --random_flip --learning_rate_schedule_file data\learning_rate_schedule_classifier_casia.txt --weight_decay 5e-5 --alpha 0.1 --gpu_memory_fraction 0.9
python src/train_tripletloss.py --models_base_dir models/facenet/ --model_def models.inception_resnet_v1 --data_dir datasets/casia/casia_maxpy_mtcnnpy_182 --image_size 160 --optimizer RMSPROP --learning_rate -1 --max_nrof_epochs 20 --keep_probability 0.8 --random_crop --random_flip --learning_rate_schedule_file data\learning_rate_schedule_classifier_casia.txt --weight_decay 5e-5 --alpha 0.1 --gpu_memory_fraction 0.9