Skip to content

Commit dda7cd1

Browse files
committed
recognize_face_by_dnn_insightface.php
1 parent 3a27a00 commit dda7cd1

7 files changed

+10005
-2
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
![detect_facemarks_by_lbf.jpg](https://raw.githubusercontent.com/php-opencv/php-opencv-examples/master/results/detect_facemarks_by_lbf.jpg)
1313

14-
- [recognize face by LBPH algorithm](https://github.com/php-opencv/php-opencv-examples/blob/master/recognize_face_by_lbph.php) / [recognize face by DNN openface](https://github.com/php-opencv/php-opencv-examples/blob/master/recognize_face_by_dnn_openface.php)
14+
- [recognize face by LBPH algorithm](https://github.com/php-opencv/php-opencv-examples/blob/master/recognize_face_by_lbph.php) / [recognize face by DNN openface](https://github.com/php-opencv/php-opencv-examples/blob/master/recognize_face_by_dnn_openface.php) / [recognize face by DNN insightface](https://github.com/php-opencv/php-opencv-examples/blob/master/recognize_face_by_dnn_insightface.php)
1515

1616
![recognize_face_by_lbph.jpg](https://raw.githubusercontent.com/php-opencv/php-opencv-examples/master/results/recognize_face_by_lbph.jpg)
1717

Diff for: face_to_vector_by_dnn_insightface.php

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
use CV\Scalar, CV\Size;
4+
use function CV\{imread, imwrite};
5+
6+
$netDet = \CV\DNN\readNetFromCaffe('models/ssd/res10_300x300_ssd_deploy.prototxt', 'models/ssd/res10_300x300_ssd_iter_140000.caffemodel');
7+
$netRecogn = \CV\DNN\readNetFromONNX('models/insightface/arcface_mobilefacenet.onnx');
8+
9+
$src = imread("images/faces.jpg");
10+
$size = $src->size(); // 2000x500
11+
12+
$minSide = min($size->width, $size->height);
13+
$divider = $minSide / 300;
14+
\CV\resize($src, $resized, new Size($size->width / $divider, $size->height / $divider)); // 1200x300
15+
16+
//var_export($resized);
17+
18+
$blob = \CV\DNN\blobFromImage($resized, 1, new Size(), new Scalar(104, 177, 123), true, false);
19+
20+
$netDet->setInput($blob);
21+
22+
$r = $netDet->forward();
23+
24+
//var_export($r->shape);
25+
26+
$faces = [];
27+
$scalar = new Scalar(0, 0, 255);
28+
for ($i = 0; $i < $r->shape[2]; $i++) {
29+
$confidence = $r->atIdx([0,0,$i,2]);
30+
if ($confidence > 0.9) {
31+
var_export($confidence);echo "\n";
32+
$startX = $r->atIdx([0,0,$i,3]) * $src->cols;
33+
$startY = $r->atIdx([0,0,$i,4]) * $src->rows;
34+
$endX = $r->atIdx([0,0,$i,5]) * $src->cols;
35+
$endY = $r->atIdx([0,0,$i,6]) * $src->rows;
36+
37+
$face = $src->getImageROI(new \CV\Rect($startX, $startY, $endX - $startX, $endY - $startY));
38+
//imwrite("results/_face.jpg", $face);
39+
40+
$blob = \CV\DNN\blobFromImage($face, 1.0 / 255, new Size(112, 112), new Scalar(), true, false);
41+
$netRecogn->setInput($blob);
42+
$vec = $netRecogn->forward();
43+
\CV\normalize($r, $r);
44+
45+
//$vec->print();
46+
var_export($vec->data());
47+
}
48+
}

Diff for: models/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ Sources:
99
* ssd_mobilenet_v1_coco - https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
1010
* ssdlite_mobilenet_v2_coco - https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
1111
* ssd_mobilenet_v2_coco - https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
12+
* insightface - https://github.com/axinc-ai/ailia-models/tree/master/face_identification/insightface

Diff for: models/insightface/arcface_mobilefacenet.onnx

3.96 MB
Binary file not shown.

0 commit comments

Comments
 (0)