Skip to main content

基于 OpenDR 的人脸识别 CLI 应用

项目描述

pyfron

基于 OpenDR 的人脸识别 CLI 应用

为什么选择 pyfron

因为它有一个很酷的名字,将Python人脸识别这两个术语组合成一个字谜。此外,因为 pyfron 提供了一种易于使用的方法:

  • 创建 OpenDR 人脸识别器
  • 使用环境操作多个图像数据库
  • 在漂亮的降价中报告识别器的整体性能

安装

  1. 手动安装 OpenDR
  2. pip install pyfron

用法

pyfron [options]您可以通过运行或来调用 pyfron python -m pyfron [options]。虽然第一种方式更优雅,但后一种方式被认为更稳定。有关选项的更多信息,请运行pyfron --help.

目录结构

为了促进图像发现的过程并缓解目录模式带来的混淆,pyfron 引入了两个基本概念,ImageDir 和 ImageBase。

图像目录

ImageDir 是一个仅包含受支持类型的图像的目录(当前仅包含 IMAGE/JPEG)。从语义上讲,ImageDir 应该只包含同一个人的图片。有效的 ImageDir 如下所示:

i_am_an_image_dir/
|--- image1.jpg
|--- image2.jpg
|--- arbitrary_name.jpg
|--- ...
|--- imageN.jpg

图像库

ImageBase 只是一个存储许多 ImageDirs 的目录。从语义上讲,这些 ImageDirs 分别代表一个人。ImageBase 的一个有效示例是 LFW 本身。一般来说,一个 ImageBase 应该是这样的:

i_am_an_image_base/
|--- and_i_am_an_image_dir/
|    |--- 1.jpg
|    |--- ...
|    |--- N.jpg
|--- image_dir_2/
|--- ...
|--- last_image_dir/

快速开始

设置您的工作区

假设您从官方但速度较慢的站点或从这个更快的镜像下载了 LFW 数据集。此外,在您的桌面目录中,您已经收集了三个“跟踪”子目录。它们中的每一个都包含不同名人的图像。最后,您在“图片”下拥有自己的目录,其中包含您的照片。总而言之,您的工作站包含以下内容:

  1. ~/Downloads/lfw/
    • ~/Downloads/lfw/Aaron_Eckhart/
    • ~/Downloads/lfw/Aaron_Guiel/
    • ...
    • ~/Downloads/lfw/Zydrunas_Ilgauskas/
  2. ~/Desktop/Stalking/
    • ~/Desktop/Stalking/Bradley Cooper/
    • ~/Desktop/Stalking/Jennifer Lawrence/
    • ~/Desktop/Stalking/Jim Carrey/
  3. ~/Pictures/Me/

实验一

现在,假设您要确保您的个人数据没有被泄露。让我们首先检查是否可以在 LFW 数据库中识别您的面部。

参考 ImageBase 应该包含整个 LFW ImageBase。您可以创建一个新环境并将所需的图像附加到其参考 ImageBase。

参考 ImageBase指的是经过训练后识别器将知道的图片。另一方面,测试 ImageBase是指将用作训练识别器输入的图片。

您可以通过运行:

$ pyfron --env am_i_in_lfw populate-reference --from-dir ~/Downloads/lfw

这应该将 LFW 图像复制到新环境中的特殊位置。然后,您可以配置测试 ImageBase。在这种情况下,测试 ImageBase 应该只包含您自己的图片。

$ pyfron --env am_i_in_lfw populate-test --from-dir ~/Pictures/Me

请注意,虽然引用 ImageBase 的来源是一个有效的ImageBase(因为它包含许多 ImageDirs),但测试 ImageBase 的来源实际上是一个ImageDir。然而,pyfron 足够聪明,可以理解你的意图,它会按预期自动处理给定的路径。

随着新环境准备就绪,您现在可以测试输入图像并报告结果。

由于 LFW 由 5749 个 ImageDirs 组成,因此预计此步骤实际上会持续很长时间。从参考 ImageBase 中手动删除相当大量的 ImageDirs 是相当合理的举动。例如,在这种情况下,仅保留和使用了 LFW 的 300 个 ImageDirs。

你可以运行:

$ pyfron --env am_i_in_lfw run

此命令加载在测试 ImageBase 中找到的每个图像,并将其与参考 ImageBase 进行比较。生成的降价按降序汇总具有最大相似度置信度的图像。因此,仅通过检查降价报告,您可能会发现,幸运的是,该数据库中没有您自己的图像。

实验二

现在,假设您想查看每个您最喜欢的名人的脸与 LFW 的相似程度。

您可以创建一个新环境并训练一个新模型,但由于参考 ImageBase 将相同,因此无需这样做。相反,您可以简单地将名人的图像附加到测试 ImageBase 中:

$ pyfron --env am_i_in_lfw populate-test --from-dir ~/Desktop/Stalking

然后,通过执行以下命令运行测试过程:

$ pyfron --env am_i_in_lfw run

实验三

如果您想使用不同的识别器配置运行之前的实验怎么办?这实际上可以毫不费力地完成。

首先查询 pyfron 已知哪些模型:

$ pyfron --list-models

这将显示注册模型的类似 json 的表示形式,以及可以编辑以注册您的自定义模型的文件。然后,您可以通过指定--model选项来选择所需的一个。这看起来像:

$ pyfron --env am_i_in_lfw populate-test --from-dir ~/Desktop/Stalking --model ir_50

在这里,模型ir_50是一个内置模型,您可以按原样使用它。尽管包含电池,但我们鼓励您在 OpenDR 的文档中探索如何创建自定义模型。

未来的功能 - 需要帮助:D

  • 对环境进行更多控制(删除、克隆、重用模型、利用符号链接来共享文件)
  • 改进的 CLI 选项。模块使用argparse太幼稚
  • 填充命令的随机选择/例外选项(例如,在填充--keep-max N时保留第一个N对象)
  • 支持创建和训练完整模型(骨干+头部)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pyfron-0.1.1.tar.gz (11.4 kB 查看哈希)

已上传 source