基于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第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败