Skip to content

Latest commit

 

History

History
111 lines (87 loc) · 3.69 KB

File metadata and controls

111 lines (87 loc) · 3.69 KB

6. 人脸检测和人脸识别

本节的程序来自于项目https://github.com/davidsandberg/facenet

6.4.1 项目环境设置

参考6.4.1小节。

6.4.2 LFW 人脸数据库

在地址http://vis-www.cs.umass.edu/lfw/lfw.tgz 下载lfw数据集,并解压到~/datasets/中:

cd ~/datasets
mkdir -p lfw/raw
tar xvf ~/Downloads/lfw.tgz -C ./lfw/raw --strip-components=1

6.4.3 LFW 数据库上的人脸检测和对齐

对LFW进行人脸检测和对齐:

python src/align/align_dataset_mtcnn.py \
  ~/datasets/lfw/raw \
  ~/datasets/lfw/lfw_mtcnnpy_160 \
  --image_size 160 --margin 32 \
  --random_order

在输出目录~/datasets/lfw/lfw_mtcnnpy_160中可以找到检测、对齐后裁剪好的人脸。

6.4.4 使用已有模型验证LFW 数据库准确率

在百度网盘的chapter_6_data/目录或者地址https://drive.google.com/file/d/0B5MzpY9kBtDVZ2RpVDYwWmxoSUk 下载解压得到4个模型文件夹,将它们拷贝到~/models/facenet/20170512-110547/中。

之后运行代码:

python src/validate_on_lfw.py \
  ~/datasets/lfw/lfw_mtcnnpy_160 \
  ~/models/facenet/20170512-110547/

即可验证该模型在已经裁剪好的lfw数据集上的准确率。

6.4.5 在自己的数据上使用已有模型

计算人脸两两之间的距离:

python src/compare.py \
  ~/models/facenet/20170512-110547/ \
  ./test_imgs/1.jpg ./test_imgs/2.jpg ./test_imgs/3.jpg

6.4.6 重新训练新模型

以CASIA-WebFace数据集为例,读者需自行申请该数据集,申请地址为http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html 。获得CASIA-WebFace 数据集后,将它解压到~/datasets/casia/raw 目录中。此时文件夹~/datasets/casia/raw/中的数据结构应该类似于:

0000045
  001.jpg
  002.jpg
  003.jpg
  ……
0000099
  001.jpg
  002.jpg
  003.jpg
  ……
……

先用MTCNN进行检测和对齐:

python src/align/align_dataset_mtcnn.py \
  ~/datasets/casia/raw/ \
  ~/datasets/casia/casia_maxpy_mtcnnpy_182 \
  --image_size 182 --margin 44

再进行训练:

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 160 \
  --model_def models.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_casia.txt \
  --weight_decay 5e-5 \
  --center_loss_factor 1e-2 \
  --center_loss_alfa 0.9

打开TensorBoard的命令(<开始训练时间>需要进行替换):

tensorboard --logdir ~/logs/facenet/<开始训练时间>/

拓展阅读