效果
up主:欣小萌

数据准备
- 可以使用爬虫爬取你需要的人脸图片数据,需要手动剔除没用图片
- 可以使用视频提取图片的方式。我采用bilibili下载视频,然后等时间间隔的切出几十张图片。尽量选择人脸出镜率高的up主。
视频切出图片的代码:/article/2020/3/12/77.html

下载facenet
去github上下载facenet,并且下载作者训练好的模型,如果模型下载不下来,我这有百度网盘地址。
开始训练
首先切换到你的工作环境(工作目录,虚拟环境等)。
目录文件介绍
facenet-master/image_test 该目录为实验目录,用作对比人脸图片之间的欧氏距离,不重要。(1人脸对比.bat)用到了。
facenet-master\src\data\people 该目录为人脸图片数据目录
facenet-master\src\data\people_160 该目录为输出 160x160的头像目录
facenet-master\src\models\20180402-114759 该目录为作者提供的模型目录,需要自己下载并且放在此处
1人脸对比.bat
用于对比人脸图片之间的差异程度。
python src/compare.py ^
src/models/20180402-114759 ^
image_test/0001.jpg ^
image_test/0002.jpg ^
image_test/0003.jpg ^
--gpu_memory_fraction 0.7
pause
2训练自己的人脸识别-人脸检测与人脸对齐.bat
align_dataset_mtcnn文件需要从facenet-master\src\align 目录下复制到 facenet-master\src 的目录下
python src/align_dataset_mtcnn.py ^
src/data/people ^
src/data/people_160 ^
--image_size 160 ^
--margin 32 ^
--random_order ^
--gpu_memory_fraction 0.7
pause
运行该批处理文件后会自动帮你把人脸图片中的人脸图抠出来并且以160x160像素保存。保存好后需要手动剔除一些没用的图片。
如果执行后报 imread,imresize等关于图片处理的错误。
原因:scipy新版本弃用了imread方法
解决:
from skimage.io import imread,imsave
from skimage.transform import resize,rotate
resize的时候记得改参数。
3训练自己的人脸识别-模型学习1.bat
python src/classifier.py ^
TRAIN src/data/people_160 ^
src/models/20180402-114759 ^
src/models/classifier.pkl
pause
4训练自己的人脸识别-模型学习2.bat
python src/classifier.py ^
CLASSIFY src/data/people_160 ^
src/models/20180402-114759 ^
src/models/classifier.pkl
pause
5训练自己的人脸识别-单张图效果验证.bat
python src/predict.py ^
src/data/test/ab.jpg ^
src/models/20180402-114759 ^
src/models/classifier.pkl ^
--gpu_memory_fraction 0.7
pause
6利用摄像头让电脑识别人脸.bat
python src/real_time_face_recognition.py
pause
测试
用电脑摄像头拍摄手机视频人脸来识别
up主:白醋

up主:何同学

观察特朗网:特朗普

up主:小叶哥

准确率
baicu: 0.993
hetongxue: 0.902
laofanqie: 0.854
shougonggeng: 0.980
trump: 0.962
xiaoyege: 0.985
xinxiaomeng: 0.979
zhuyidan: 0.944