grananda / awsfacematch
Laravel 面部匹配包
Requires
- php: ^7.2
- aws/aws-sdk-php-resources: ^0.3.0
Requires (Dev)
- cartalyst/php-cs-fixer-config: ^1.0
- illuminate/config: ^6.2
- illuminate/database: ^6.0
- illuminate/support: ^6.0
- limedeck/phpunit-detailed-printer: ^5.0
- mockery/mockery: ^1.2
- nunomaduro/phpinsights: ^1.9
- orchestra/database: ^4.0
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.3
- dev-master
- v0.91
- v0.9.12
- v0.9.11
- v0.9.10
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9
- v0.8
- v0.7.5
- v0.7
- v0.6
- v0.5
- dev-dependabot/composer/guzzlehttp/guzzle-7.4.5
- dev-composer-update
- dev-dependabot/composer/composer/composer-1.10.26
- dev-dependabot/composer/guzzlehttp/psr7-1.8.5
- dev-dependabot/composer/league/flysystem-1.1.4
- dev-dependabot/composer/laravel/framework-6.20.26
This package is auto-updated.
Last update: 2023-06-21 19:42:27 UTC
README
此组件将面部识别集成到传统的 Laravel 模型(如具有头像图片的用户)中。此包将单个面部图像与索引图像集合进行比较,并返回匹配的模型,准确率大于80%。
此组件使用AWS Rekogniton 引擎。请查看网站以了解凭据设置和价格。
安装
要使用 composer 安装,只需执行以下命令
composer require grananda/AwsFaceMatch
执行以下命令将配置文件复制到您的应用程序配置文件夹
php artisan vendor:publish --provider="Grananda\AwsFaceMatch\FaceMatchServiceProvider"
将您的 AWS AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
凭据添加到您的 .env
文件中。
为了使组件正常工作,您需要一组 AWS 密钥和密钥以及您希望操作的区域。这些值将从您的 .env
文件中读取,就像平常一样。其他配置参数将包含在 facematch.php
配置文件中。
请记住,对于 Laravel <5.5 的旧版本,有必要在您的 config/app.php
文件中的 $providers
数组元素下注册组件服务提供者。
Grananda\AwsFaceMatch\FaceMatchServiceProvider::class,
此外,在 $aliases
数组元素中,添加此包的以下可用外观。如果您希望在 trait 范围之外访问包的服务方法,则此操作是必需的。
'FaceMatch' => Grananda\AwsFaceMatch\Facades\FaceMatch::class, 'FaceCollection' => Grananda\AwsFaceMatch\Facades\FaceCollection::class,
最后,运行包迁移,这将创建存储索引信息的表。
php artisan migrate
设置您的 Eloquent 模型
Laravel 面部匹配可以识别来自不同模型的人。例如,如果您有客户和员工模型,您可以对任何这些模型请求图像匹配。
要开始使用此包,您必须在如下所示的匹配配置文件中注册模型
'recognize' => [ Employee::class => [ 'collection' => 'entity', 'identifier' => 'uuid,', 'media' => [ 'field' => 'avatar_image', 'binary' => false, ], ], ],
其中 recognize
数组的每个元素都对应一个现有的模型类。每个元素键必须与模型类名称匹配。此外,元素必须按以下方式完成每个使用的模型
- Collection:AWS 将在此处索引头像图片和用户引用。如果没有,则将使用模型
namespace
和className
的组合作为默认集合名称。 - Identifier:在模型数据库中将用于识别记录的唯一字段。建议使用 UUID 字段进行此类操作。
- Field:确定在模型数据库中将存储面部图像 URL 的字段。
- Binary:定义存储图像信息的字段是否为二进制或 blob 字段。默认为
false
。
为了使模型适合面部识别,您必须在模型中添加如上图所示的 FacialRecognition
特性。
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Grananda\AwsFaceMatch\Traits\FacialRecognition; class Employee extends Model { use FacialRecognition; protected $fillable = [ 'name', 'uuid', 'avatar_image', ]; }
此外,应将 field
和 identifier
字段包含在模型的 fillable
数组中,以及在必要时包含在您的数据库迁移中。
您可以将匹配功能添加到任意数量的模型中,只要它们不共享相同的集合。
不需要 AWS S3 存储桶,但可以用于存储模型图像。所需的所有内容只是一个图像 URL 或包含图像数据的二进制数据库记录。
系统在为未来识别索引实体时,只接受单人脸图像。
如何使用它
当使用FacialRecognition
特性创建新对象时,头像图像将被存储在AWS Rekognition服务中,并附带记录标识符。当记录更新为具有不同图像URL的图像时,也会发生同样情况。如果保存项目时记录缺少媒体URL或数据,则不会执行任何Rekognition索引操作。
类似地,当本地删除模型时,所有存储的索引信息都会从AWS中删除。
从图像中识别模型
如果您希望找到一个可能与特定图像匹配的模型,请使用以下命令:
Employee::faceMatch('path/or/url/to/image.png');
其中Employee
可以替换为任何其他使用面部匹配特性的模型。如果有匹配,则命令将返回与给定图像对应的模型对象,否则返回false
。
虽然系统可以索引来自二进制数据库字段的图像,但匹配或识别过程必须使用基于文件系统存储的图像路径才能运行。目前尚不支持纯二进制比较。请提供此场景的有效用例,以帮助我们改进此组件。
忘记图像
使用以下命令从远程AWS Rekognition系统中删除本地记录。此功能在用户请求从面部识别系统中删除时非常有用。
Employee::faceForget($object);
清理
以下命令将从模型集合中删除所有图像。请谨慎使用。
Employee::purgeCollection();
批量索引
要索引现有数据,请在控制台运行以下命令:
php artisan facematch:index
即将推出
- 在检测匹配时,可以手动指定准确性阈值。
请随时发表评论和提出请求。