基于tensorflow的人脸识别

facenet-sandberg的Python项目详细描述


面部识别和对齐

这是什么?

这个存储库包含david sandberg的FaceNetInsightFace用于面部识别的重构实现。它还包含用于面裁剪和对齐的MTCNNFaceboxes的实现。重构中的内容:

  • 使算法在convenience classes中轻松高效地可用。
  • 添加了更高效的批处理人脸识别和对齐方法
  • 添加了真正的面对齐(使用仿射变换)以将面与图像的底部中心对齐:code
  • 按此issue
  • 添加对齐比例边距
  • 能够轻松地在insightfacefacenet之间切换inference time

有关自定义和实现新的人脸检测算法的更多信息,请参见here

安装

要在其他项目中使用,可以按如下方式安装此实现:

pip install facenet_sandberg

本地使用:

  1. 克隆回购
  2. cd to base directory with setup.py
  3. 运行:
pip install -e .

^(在development mode中安装包)

重要要求

  1. Python3.5
  2. 张量流==1.7
  3. 张力层==1.7 其余的在requirements.txt
  4. 中指定

型号

链接到预训练模型:

数据集

下载培训数据集的链接(!大文件!):

图像目录结构

此回购假设图像位于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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何表示1。。Java中的n关系   java在安卓应用程序中添加polaris viewer   Java字符串::replaceAll仅替换第一个出现(可能不正确的正则表达式)   java Tomcat/JBoss部署后脚本   如何在Heroku Java应用程序中运行发出web请求的周期进程   java如何以纳秒为单位证明算法的时间   Solaris上的java自定义ListCellRenderer(使用jre5)   java试图为我的播放器类测试块实现播放器重力(RealtutsGml平台教程)   c#消耗一个。带有java的net web服务未显示预期结果   java在KOI8\R中检索html   基于java图形的搜索与基于随机的搜索   java如何检查安卓设备上的可用空间?在SD卡上?