Skip to content

Commit

Permalink
Merge pull request #4 from Astrotomic/deepface-build-model
Browse files Browse the repository at this point in the history
add deepface build model logic
  • Loading branch information
Gummibeer committed Oct 9, 2023
2 parents 146f15a + 64a218f commit eed5ecc
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 7 deletions.
7 changes: 7 additions & 0 deletions scripts/build_model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from deepface import DeepFace;

DeepFace.build_model(
model_name = "{{model_name}}",
);

print("true")
4 changes: 2 additions & 2 deletions src/Data/VerifyResult.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

use Astrotomic\DeepFace\Enums\Detector;
use Astrotomic\DeepFace\Enums\DistanceMetric;
use Astrotomic\DeepFace\Enums\Model;
use Astrotomic\DeepFace\Enums\FaceRecognitionModel;

class VerifyResult
{
public function __construct(
public readonly bool $verified,
public readonly float $distance,
public readonly float $threshold,
public readonly Model $model,
public readonly FaceRecognitionModel $model,
public readonly Detector $detector_backend,
public readonly DistanceMetric $similarity_metric,
public readonly string $img1_path,
Expand Down
19 changes: 15 additions & 4 deletions src/DeepFace.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
use Astrotomic\DeepFace\Enums\Detector;
use Astrotomic\DeepFace\Enums\DistanceMetric;
use Astrotomic\DeepFace\Enums\Emotion;
use Astrotomic\DeepFace\Enums\FaceRecognitionModel;
use Astrotomic\DeepFace\Enums\FacialAttributeModel;
use Astrotomic\DeepFace\Enums\Gender;
use Astrotomic\DeepFace\Enums\Model;
use Astrotomic\DeepFace\Enums\Normalization;
use Astrotomic\DeepFace\Enums\Race;
use BadMethodCallException;
Expand All @@ -32,10 +33,20 @@ public function __construct(string $python = null)
);
}

public function buildModel(FaceRecognitionModel|FacialAttributeModel $model_name): bool
{
return $this->run(
filepath: __DIR__.'/../scripts/build_model.py',
data: [
'{{model_name}}' => $model_name->value,
],
);
}

public function verify(
string $img1_path,
string $img2_path,
Model $model_name = Model::VGGFACE,
FaceRecognitionModel $model_name = FaceRecognitionModel::VGGFACE,
Detector $detector_backend = Detector::OPENCV,
DistanceMetric $distance_metric = DistanceMetric::COSINE,
bool $enforce_detection = true,
Expand Down Expand Up @@ -70,7 +81,7 @@ public function verify(
verified: $output['verified'] === 'True',
distance: $output['distance'],
threshold: $output['threshold'],
model: Model::from($output['model']),
model: FaceRecognitionModel::from($output['model']),
detector_backend: Detector::from($output['detector_backend']),
similarity_metric: DistanceMetric::from($output['similarity_metric']),
img1_path: $img1->getRealPath(),
Expand Down Expand Up @@ -172,7 +183,7 @@ public function extractFaces(
);
}

protected function run(string $filepath, array $data): array
protected function run(string $filepath, array $data): array|bool
{
$script = $this->script($filepath, $data);
$process = $this->process($script);
Expand Down
2 changes: 1 addition & 1 deletion src/Enums/Model.php → src/Enums/FaceRecognitionModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Astrotomic\DeepFace\Enums;

enum Model: string
enum FaceRecognitionModel: string
{
case VGGFACE = 'VGG-Face';
case FACENET = 'Facenet';
Expand Down
11 changes: 11 additions & 0 deletions src/Enums/FacialAttributeModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace Astrotomic\DeepFace\Enums;

enum FacialAttributeModel: string
{
case EMOTION = 'Emotion';
case AGE = 'Age';
case GENDER = 'Gender';
case RACE = 'Race';
}

0 comments on commit eed5ecc

Please sign in to comment.