quarta-feira, 23 de agosto de 2023

LOW COST ACCESS CONTROL WITH ESP32CAM AND COMPREFACE (DEMO VERSION TO MANAGE 50000 FACES)

LOW COST ACCESS CONTROL WITH ESP32CAM AND COMPREFACE (DEMO VERSION TO MANAGE 50000 FACES)

exadel-inc/CompreFace: Leading free and open-source face recognition system (github.com)

This is me, Miguel
This is CameraWebServer´s Front-End - SVGA mode
The Back-End is the Arduino make communication with EXADEL COMPREFACE DEMO 

The examples in COMPREFACE are in PYTHON, JAVA and CURL, but for Arduino ? Based on this i ported to Arduino the basic code for sending the image to the RECOGNIZER service, of the COMPREFACE server.

Exadel

Exadel is a global software consulting and development company that partners with organizations to help them become digital leaders in their industries.

We look beyond the code to understand the impact our clients want to make and help them get from ideation to development and outcomes.

We accelerate the results of digital transformations through an open, collaborative approach combined with our deep experience across industries, business processes, and technologies.


EXADELCOMPREFACE

Exadel CompreFace is a free and open source facial recognition service that can be easily integrated into any system without prior machine learning skills. CompreFace provides REST API for facial recognition, face scanning, face detection, landmark detection, mask detection, head posture detection, age and gender recognition, and is easily deployed with docker.

Efficient for 50000 registered images (DEMO VERSION).

Contact to get the PRO Version of COMPREFACE

Maciej Walendowski to the PRO Version
Maciej Walendowski 
Global Senior Business Development Manager 
Exadel Inc

See the link below how to install on WINDOWS or LINUX




Start DOCKER, register the IP of the machine that is running


Enter IP:8000 and create the Services and Subjects for recognition, write down the API key


Launch and test images to recognition

This is my Picture on COMPREFACE WebServer

Arduino ESP32

Install Arduino and Select Board AI-THINKER ESP32-CAM

Code based

curl  -X POST "http://IP:8000/api/v1/recognition/recognize" \
-H "Content-Type: application/json" \
-H "x-api-key: <service_api_key>" \
-d {"file": "<base64_value>"}

Follow code

//https://onlinejpgtools.com/convert-base64-to-jpg

/*
FRAMESIZE_UXGA (1600 x 1200)
FRAMESIZE_QVGA (320 x 240)
FRAMESIZE_CIF (352 x 288)
FRAMESIZE_VGA (640 x 480)
FRAMESIZE_SVGA (800 x 600)
FRAMESIZE_XGA (1024 x 768)
FRAMESIZE_SXGA (1280 x 1024)
*/

#include "esp_camera.h"
#include <WiFi.h>
#include <ArduinoJson.h>
#include <base64.h>
#include <EEPROM.h>
#include <Arduino.h>
#include "PinDefinitionsAndMore.h" //Define macros for input and output pin etc.
#include <HTTPClient.h>

#define LED_FLASH 4

//
// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
//            Ensure ESP32 Wrover Module or other board with PSRAM is selected
//            Partial images will be transmitted if image exceeds buffer size
//
//            You must select partition scheme from the board menu that has at least 3MB APP space.
//            Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15
//            seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well

// ===================
// Select camera model
// ===================
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
// ** Espressif Internal Boards **
//#define CAMERA_MODEL_ESP32_CAM_BOARD
//#define CAMERA_MODEL_ESP32S2_CAM_BOARD
//#define CAMERA_MODEL_ESP32S3_CAM_LCD

#include "camera_pins.h"

// ===========================
// Enter your WiFi credentials
// ===========================
//const char* ssid = "DaltonReis";
//const char* password = "!anadal!";

const char* ssid = "Andreia Oi Miguel 2.4G";
const char* password = "xxxxxxxxx";

WiFiClient wifiClient;

HTTPClient http;

void Recognized(void)
{
  digitalWrite(LED_FLASH, HIGH);
  delay(10);
  digitalWrite(LED_FLASH, LOW);
  delay(10);  
}

void startCameraServer();

void takePictureAndSubmitFacenet() {
 
  camera_fb_t *fb = esp_camera_fb_get();
 
  if(!fb) {
      Serial.println("Camera capture failed");
      return;
  }
  else {
        Serial.println("Camera capture successful!");
      }
 
  const char *data = (const char *)fb->buf;
  // Image metadata.  Yes it should be cleaned up to use printf if the function is available
    Serial.print("Size of image:");
    Serial.println(fb->len);
    Serial.print("Shape->width:");
    Serial.print(fb->width);
    Serial.print("height:");
    Serial.println(fb->height);

    //TO MAKE THE COMMUNICATION WITH COMPREFACE, I WILL NEED A COFFE :)

String encoded = base64::encode(fb->buf, fb->len);

    //Serial.println(encoded);

    // Killing cam resource
    esp_camera_fb_return(fb);

   http.begin(wifiClient, "http://192.168.100.90:8000/api/v1/recognition/recognize");  //Specify destination for HTTP request
   http.addHeader("Content-Type", "application/json");             //Specify content-type header
   http.addHeader("x-api-key", "91d3c644-ab7c-452e-a4c9-883ac1ab896c"); //KEY
   
   String Package = "{\"file\": \""  + encoded + "\"}";

   //240x320
   Serial.println("Post...");
   //Send the actual POST request
   int httpResponseCode = http.POST(Package);
   Serial.println("Analyse...");
 
   if(httpResponseCode>0){
 
    String response = http.getString();                       //Get the response to the request
 
    Serial.println(httpResponseCode);   //Print return code
    Serial.println(response);           //Print request answer

    //https://arduinojson.org/v6/assistant/#/step4
    StaticJsonDocument<384> doc;

    DeserializationError error = deserializeJson(doc, response);

    if (error) {
      Serial.print("deserializeJson() failed: ");
      Serial.println(error.c_str());
      return;
    }

    JsonObject result_0_box = doc["result"][0]["box"];
    float result_0_box_probability = result_0_box["probability"]; // 0.99984
    int result_0_box_x_max = result_0_box["x_max"]; // 392
    int result_0_box_y_max = result_0_box["y_max"]; // 392
    int result_0_box_x_min = result_0_box["x_min"]; // 66
    int result_0_box_y_min = result_0_box["y_min"]; // 2

    const char* result_0_subjects_0_subject = doc["result"][0]["subjects"][0]["subject"]; // "Miguel"
    float result_0_subjects_0_similarity = doc["result"][0]["subjects"][0]["similarity"]; // 0.78965
   
    Serial.println(result_0_subjects_0_subject);
    Serial.println(result_0_subjects_0_similarity);

    if(result_0_subjects_0_similarity>0.99)
      Recognized();

   }else{
 
    Serial.print("Error on sending POST: ");
    Serial.println(httpResponseCode);
 
   }
  
    // Killing cam resource
    esp_camera_fb_return(fb);

   http.end();  //Free resources
}

void setup() {
  pinMode(LED_FLASH, OUTPUT); //LED BLINK > 0.99x
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.frame_size = FRAMESIZE_UXGA;
  config.pixel_format = PIXFORMAT_JPEG; // for streaming
  //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition
  config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
  config.fb_location = CAMERA_FB_IN_PSRAM;
  config.jpeg_quality = 12;
  config.fb_count = 1;
 
  // if PSRAM IC present, init with UXGA resolution and higher JPEG quality
  //                      for larger pre-allocated frame buffer.
  if(config.pixel_format == PIXFORMAT_JPEG){
    if(psramFound()){
      config.jpeg_quality = 10;
      config.fb_count = 2;
      config.grab_mode = CAMERA_GRAB_LATEST;
    } else {
      // Limit the frame size when PSRAM is not available
      config.frame_size = FRAMESIZE_QVGA;
      config.fb_location = CAMERA_FB_IN_DRAM;
    }
  } else {
    // Best option for face detection/recognition
    config.frame_size = FRAMESIZE_240X240;
#if CONFIG_IDF_TARGET_ESP32S3
    config.fb_count = 2;
#endif
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  // camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

  sensor_t * s = esp_camera_sensor_get();
  // initial sensors are flipped vertically and colors are a bit saturated
  if (s->id.PID == OV3660_PID) {
    s->set_vflip(s, 1); // flip it back
    s->set_brightness(s, 1); // up the brightness just a bit
    s->set_saturation(s, -2); // lower the saturation
  }
  // drop down frame size for higher initial frame rate
  if(config.pixel_format == PIXFORMAT_JPEG){
    s->set_framesize(s, FRAMESIZE_SVGA); //<=====================
  }

#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif

#if defined(CAMERA_MODEL_ESP32S3_EYE)
  s->set_vflip(s, 1);
#endif

  WiFi.begin(ssid, password);
  WiFi.setSleep(false);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  startCameraServer();

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");
}

void loop() {  
        Serial.println("Sending Face...");
        takePictureAndSubmitFacenet();
        delay(5000);
}


When detecting Similarity greater or equal to 0.99 will do a FLASH.

COMPREFACE IS REALLY COOL 
See the FLASH Light :)

ESP32CAM in my LAB

CURL tests

curl  -X POST "192.168.100.90:8000/api/v1/recognition/recognize" \
-H  "Content-Type: application/json" \
-H  "x-api-key: 91d3c644-ab7c-452e-a4c9-883ac1ab896c" \
-d '{"file": "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"}'

To do

Movement Detection (Hardware and Software)

Contact

Nenhum comentário:

Postar um comentário