基于tensorflow的人脸识别
facenet-sandberg的Python项目详细描述
面部识别和对齐
这是什么?
这个存储库包含david sandberg的FaceNet和InsightFace用于面部识别的重构实现。它还包含用于面裁剪和对齐的MTCNN和Faceboxes的实现。重构中的内容:
- 使算法在convenience classes中轻松高效地可用。
- 添加了更高效的批处理人脸识别和对齐方法
- 添加了真正的面对齐(使用仿射变换)以将面与图像的底部中心对齐:code
- 按此issue 添加对齐比例边距
- 能够轻松地在insightface和facenet之间切换inference time
有关自定义和实现新的人脸检测算法的更多信息,请参见here。
安装
要在其他项目中使用,可以按如下方式安装此实现:
pip install facenet_sandberg
本地使用:
- 克隆回购
- cd to base directory with setup.py
- 运行:
pip install -e .
^(在development mode中安装包)
重要要求
- Python3.5
- 张量流==1.7
- 张力层==1.7 其余的在requirements.txt 中指定
型号
链接到预训练模型:
- Facenet
- 使用大小为160x160的RGB图像
- Insightface.zip
- 使用112x112大小的bgr图像
数据集
下载培训数据集的链接(!大文件!):
图像目录结构
此回购假设图像位于LFW format:
-/base_images_folder
-/person_1
-person_1_0001.jpg
-person_1_0002.jpg
-person_1_0003.jpg
-/person_2
-person_2_0001.jpg
-person_2_0002.jpg
...
如果您的数据集不是这样的,您可以使用lfw.py将您的图像设置为正确的格式,如so(来自facenet_sandberg/facenet_sandberg):
python lfw.py --image_directory PATH_TO_YOUR_BASE_IMAGE_DIRECTORY
对齐
对齐是通过facebox和mtcnn的组合完成的。虽然facebox比mtcnn更精确,可以处理更多图像,但它不返回facial landmarks。无论哪种算法返回的结果更多。
使用align_dataset.py脚本来对齐整个图像目录:
python align_dataset.py --input_dir PATH_TO_YOUR_BASE_IMAGE_DIRECTORY \
--output_dir PATH_TO_OUTPUT_ALIGNED_IMAGES \
--facenet_model_checkpoint PATH_TO_PRETRAINED_FACENET_MODEL \
--image_height DESIRED_IMAGE_HEIGHT \
--image_width DESIRED_IMAGE_WIDTH \
--margin DESIRED_PROPORTIONAL_MARGIN \
--scale_factor DESIRED_SCALE_FACTOR \
--steps_threshold DESIRED_STEPS \
--detect_multiple_faces \
--use_faceboxes \
--use_affine \
--num_processes NUM_PROCESSES_TO_USE
- 提供了大多数参数的默认值here
生成pairs.txt
在培训和测试中使用pairs.txt文件。它遵循这个format。为了生成自己的pairs.txt运行:
python align_dataset.py --image_dir PATH_TO_YOUR_BASE_IMAGE_DIRECTORY \
--pairs_file_name OUTPUT_NAME_OF_PAIRS_FILE \
--num_folds NUMBER_OF_FOLDS_FOR_CROSS_VALIDATION \
--num_matches_mismatches NUMBER_OF_MATCHES_AND_MISMATCHES
版权所有
麻省理工学院原始回购协议的许可证https://github.com/davidsandberg/facenet/blob/master/LICENSE.md