How to use face recognition Rest API?

Raj Kumar 1 Reputation point
2021-04-01T03:24:15.56+00:00

I am using Face API with curl in PHP. But I am having issue when matching images.
I am able to generate faceId's but when matching I get different results than expected. I have two images belonges to same person but API indicates that these images are different. But when using Microsoft demo to compare images I get right result.

Here is the code as well.

function compare($image1, $image2)
{
$faceid = array();
$images = array($image1 , $image2);

$headers = ["Ocp-Apim-Subscription-Key:*******************","Content-Type:application/json" ];
/* Getting faceId /
foreach($images as $data)
{
/
First step is to detect face */
$request_url='https://nexever.cognitiveservices.azure.com/face/v1.0/detect?detectionModel=detection_02&returnFaceId=true&returnFaceLandmarks=false';

    /* Image to get faceid */

    $detect = array('url' => $data);

$curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_URL, $request_url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($detect)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);      
$strResponse = curl_exec($curl);
$curlErrno   = curl_errno($curl);
if ($curlErrno) { $curlError = curl_error($curl);throw new Exception($curlError); }
$http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl);
$strResponse = json_decode($strResponse , true);
array_push($faceid , $strResponse[0]['faceId']);        
}       

// comparing by face ID
/* Match face url */
$request_url = 'https://nexever.cognitiveservices.azure.com/face/v1.0/verify';

/* Face ID to compare */
$match = array("faceId1"=>$faceid[0], "faceId2"=>$faceid[1],"maxNumOfCandidatesReturned" =>10,"mode"=> "matchFace");

$curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_URL, $request_url);   curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($match)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$strResponse = curl_exec($curl);  $curlErrno   = curl_errno($curl);
if ($curlErrno) {$curlError = curl_error($curl); throw new Exception($curlError); }
$http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return json_decode($strResponse, true);

}

$img1 = "**********";
$img2 = "*********";
$ret = compare($img1, $img2);

print_r($ret);
if(isset($ret['isIdentical']))
{
if($ret['isIdentical'] == 1)
{
echo "Same Person ";
}
else if($ret['isIdentical'] == 0)
{
echo "Different Person ";
}
}

I have replaced my secret key and image path with ***.

I am using PHP language and kindly give me solution in PHP only.

Azure Face
Azure Face
An Azure service that provides artificial intelligence algorithms that detect, recognize, and analyze human faces in images.
152 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. Cheong00 3,471 Reputation points
    2021-04-01T03:39:17.52+00:00

    There ought to be something wrong along these lines as you're not feeding the first parameter in the images to the API...

    $img1 = "";
    $img2 = "***";
    $ret = compare($img1, $img2);
    

  2. Raj Kumar 1 Reputation point
    2021-04-02T11:38:02.27+00:00

    I have solved this myself. I was not missing recognition model in my request. Adding recognition model works for me.

    0 comments No comments