From 83b8b990a737f7aaccb53361eeb56a890db7d122 Mon Sep 17 00:00:00 2001 From: XiaochaoGONG Date: Fri, 2 Nov 2018 20:20:25 +0800 Subject: [PATCH] Add Face Recognition functions and example 1. modify esp-face as a submodule 2. add documentation 3. improve detection performance --- components/component_conf.mk | 1 + components/esp-face | 2 +- components/image_util/component.mk | 0 components/image_util/image_util.c | 404 ------------------ components/image_util/include/image_util.h | 262 ------------ .../recognition_with_command_line/README.md | 69 +-- .../main/app_facenet.c | 15 +- img/detected.png | Bin 22519 -> 0 bytes img/login_delay1.png | Bin 0 -> 5489 bytes img/login_delay2.png | Bin 0 -> 5657 bytes img/matched.png | Bin 0 -> 21103 bytes img/no_matched.png | Bin 0 -> 20923 bytes img/start_login.png | Bin 0 -> 24914 bytes img/start_recognition.png | Bin 0 -> 30435 bytes 14 files changed, 60 insertions(+), 693 deletions(-) delete mode 100644 components/image_util/component.mk delete mode 100644 components/image_util/image_util.c delete mode 100644 components/image_util/include/image_util.h delete mode 100644 img/detected.png create mode 100644 img/login_delay1.png create mode 100644 img/login_delay2.png create mode 100644 img/matched.png create mode 100644 img/no_matched.png create mode 100644 img/start_login.png create mode 100644 img/start_recognition.png diff --git a/components/component_conf.mk b/components/component_conf.mk index 41e36e2..a6025d3 100644 --- a/components/component_conf.mk +++ b/components/component_conf.mk @@ -1,5 +1,6 @@ EXTRA_COMPONENT_DIRS += $(SOLUTION_PATH)/components EXTRA_COMPONENT_DIRS += $(SOLUTION_PATH)/components/esp-face/lib +EXTRA_COMPONENT_DIRS += $(SOLUTION_PATH)/components/esp-face/image_util EXTRA_COMPONENT_DIRS += $(SOLUTION_PATH)/components/esp-face/face_detection/fd_coefficients EXTRA_COMPONENT_DIRS += $(SOLUTION_PATH)/components/esp-face/face_detection/mtmn EXTRA_COMPONENT_DIRS += $(SOLUTION_PATH)/components/esp-face/face_recognition/fr_coefficients diff --git a/components/esp-face b/components/esp-face index 84acf59..4ed00b5 160000 --- a/components/esp-face +++ b/components/esp-face @@ -1 +1 @@ -Subproject commit 84acf59b23afafafc5c72f2e31dddbb54d56aaa1 +Subproject commit 4ed00b5f61bb59b54ff56fba14597eed87c7b36a diff --git a/components/image_util/component.mk b/components/image_util/component.mk deleted file mode 100644 index e69de29..0000000 diff --git a/components/image_util/image_util.c b/components/image_util/image_util.c deleted file mode 100644 index faa1558..0000000 --- a/components/image_util/image_util.c +++ /dev/null @@ -1,404 +0,0 @@ -/* - * ESPRESSIF MIT License - * - * Copyright (c) 2018 - * - * Permission is hereby granted for use on ESPRESSIF SYSTEMS products only, in which case, - * it is free of charge, to any person obtaining a copy of this software and associated - * documentation files (the "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished - * to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or - * substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -#include -#include -#include -#include -#include -#include -#include -#include "dl_lib.h" -#include "image_util.h" -#include "freertos/FreeRTOS.h" - -void image_resize_linear(uint8_t *dst_image, uint8_t *src_image, int dst_w, int dst_h, int dst_c, int src_w, int src_h) -{ /*{{{*/ - float scale_x = (float)src_w / dst_w; - float scale_y = (float)src_h / dst_h; - - int dst_stride = dst_c * dst_w; - int src_stride = dst_c * src_w; - for (int y = 0; y < dst_h; y++) - { - float fy[2]; - fy[0] = (float)((y + 0.5) * scale_y - 0.5); // y - int src_y = (int)fy[0]; // y1 - fy[0] -= src_y; // y - y1 - fy[1] = 1 - fy[0]; // y2 - y - src_y = DL_IMAGE_MAX(0, src_y); - src_y = DL_IMAGE_MIN(src_y, src_h - 2); - - for (int x = 0; x < dst_w; x++) - { - float fx[2]; - fx[0] = (float)((x + 0.5) * scale_x - 0.5); // x - int src_x = (int)fx[0]; // x1 - fx[0] -= src_x; // x - x1 - if (src_x < 0) - { - fx[0] = 0; - src_x = 0; - } - if (src_x > src_w - 2) - { - fx[0] = 0; - src_x = src_w - 2; - } - fx[1] = 1 - fx[0]; // x2 - x - - for (int c = 0; c < dst_c; c++) - { - dst_image[y * dst_stride + x * dst_c + c] = round(src_image[src_y * src_stride + src_x * dst_c + c] * fx[1] * fy[1] + src_image[src_y * src_stride + (src_x + 1) * dst_c + c] * fx[0] * fy[1] + src_image[(src_y + 1) * src_stride + src_x * dst_c + c] * fx[1] * fy[0] + src_image[(src_y + 1) * src_stride + (src_x + 1) * dst_c + c] * fx[0] * fy[0]); - } - } - } -} /*}}}*/ - -void image_cropper(dl_matrix3du_t *corp_image, dl_matrix3du_t *src_image, float rotate_angle, float ratio, float *center) -{ - int rot_w = (int)corp_image->w; - int rot_h = (int)corp_image->h; - int rot_c = src_image->c; - int rot_stride = rot_w * rot_c; - uint8_t *rot_data = corp_image->item; - float rot_w_start = 0.5f - (float)rot_w / 2; - float rot_h_start = 0.5f - (float)rot_h / 2; - - //rotate_angle must be radius - float si = sin(rotate_angle); - float co = cos(rotate_angle); - - uint8_t *src_data = src_image->item; - int src_w = src_image->w; - int src_h = src_image->h; - int src_c = src_image->c; - int src_stride = src_image->stride; - - for (int y = 0; y < rot_h; y++) - { - for (int x = 0; x < rot_w; x++) - { - float xs, ys, xr, yr; - xs = ratio * (rot_w_start + x); - ys = ratio * (rot_h_start + y); - - xr = xs * co + ys * si; - yr = -xs * si + ys * co; - - float fy[2]; - fy[0] = center[1] + yr; // y - int src_y = (int)fy[0]; // y1 - fy[0] -= src_y; // y - y1 - fy[1] = 1 - fy[0]; // y2 - y - src_y = DL_IMAGE_MAX(0, src_y); - src_y = DL_IMAGE_MIN(src_y, src_h - 2); - - float fx[2]; - fx[0] = center[0] + xr; // x - int src_x = (int)fx[0]; // x1 - fx[0] -= src_x; // x - x1 - if (src_x < 0) - { - fx[0] = 0; - src_x = 0; - } - if (src_x > src_w - 2) - { - fx[0] = 0; - src_x = src_w - 2; - } - fx[1] = 1 - fx[0]; // x2 - x - - for (int c = 0; c < rot_c; c++) - { - rot_data[y * rot_stride + x * rot_c + c] = round(src_data[src_y * src_stride + src_x * src_c + c] * fx[1] * fy[1] + src_data[src_y * src_stride + (src_x + 1) * src_c + c] * fx[0] * fy[1] + src_data[(src_y + 1) * src_stride + src_x * src_c + c] * fx[1] * fy[0] + src_data[(src_y + 1) * src_stride + (src_x + 1) * src_c + c] * fx[0] * fy[0]); - } - } - } -} - -void image_sort_insert_by_score(image_list_t *image_sorted_list, const image_list_t *insert_list) -{ /*{{{*/ - if (insert_list == NULL || insert_list->head == NULL) - return; - image_box_t *box = insert_list->head; - if (NULL == image_sorted_list->head) - { - image_sorted_list->head = insert_list->head; - box = insert_list->head->next; - image_sorted_list->head->next = NULL; - } - image_box_t *head = image_sorted_list->head; - - while (box) - { - // insert in head - if (box->score > head->score) - { - image_box_t *tmp = box; - box = box->next; - tmp->next = head; - head = tmp; - } - else - { - image_box_t *curr = head->next; - image_box_t *prev = head; - while (curr) - { - if (box->score > curr->score) - { - image_box_t *tmp = box; - box = box->next; - tmp->next = curr; - prev->next = tmp; - break; - } - prev = curr; - curr = curr->next; - } - // insert in tail - if (NULL == curr) - { - image_box_t *tmp = box; - box = box->next; - tmp->next = NULL; - prev->next = tmp; - } - } - } - image_sorted_list->head = head; - image_sorted_list->len += insert_list->len; -} /*}}}*/ - -image_list_t *image_get_valid_boxes(fptp_t *score, fptp_t *offset, int width, int height, fptp_t score_threshold, fptp_t scale) -{ /*{{{*/ - typedef struct - { - short valid_x; - short valid_y; - int valid_idx; - } valid_index_t; - valid_index_t *valid_indexes = (valid_index_t *)calloc(width * height, sizeof(valid_index_t)); - int valid_count = 0; - int index = 0; - for (int y = 0; y < height; y++) - for (int x = 0; x < width; x++) - { - if (score[2 * index + 1] > score_threshold) - { - valid_indexes[valid_count].valid_x = x; - valid_indexes[valid_count].valid_y = y; - valid_indexes[valid_count].valid_idx = index; - valid_count++; - } - index++; - } - - if (0 == valid_count) - { - free(valid_indexes); - return NULL; - } - - image_box_t *valid_box = (image_box_t *)calloc(valid_count, sizeof(image_box_t)); - image_list_t *valid_list = (image_list_t *)calloc(1, sizeof(image_list_t)); - valid_list->head = valid_box; - valid_list->origin_head = valid_box; - valid_list->len = valid_count; - - for (int i = 0; i < valid_count; i++) - { - fptp_t x1 = valid_indexes[i].valid_x * scale * 2.0; - fptp_t y1 = valid_indexes[i].valid_y * scale * 2.0; - int valid_i = valid_indexes[i].valid_idx; - valid_box[i].score = score[2 * valid_i + 1]; - valid_box[i].box.box_p[0] = x1; - valid_box[i].box.box_p[1] = y1; - valid_box[i].box.box_p[2] = x1 + MIN_FACE * scale; - valid_box[i].box.box_p[3] = y1 + MIN_FACE * scale; - valid_box[i].offset.box_p[0] = offset[valid_i * 4 + 0]; - valid_box[i].offset.box_p[1] = offset[valid_i * 4 + 1]; - valid_box[i].offset.box_p[2] = offset[valid_i * 4 + 2]; - valid_box[i].offset.box_p[3] = offset[valid_i * 4 + 3]; - valid_box[i].next = &(valid_box[i + 1]); - } - valid_box[valid_count - 1].next = NULL; - - free(valid_indexes); - - return valid_list; -} /*}}}*/ - -void image_nms_process(image_list_t *image_list, fptp_t nms_threshold, int same_area) -{ /*{{{*/ - /**** Init ****/ - int num_supressed = 0; - image_box_t *head = image_list->head; - - /**** Compute Box Area ****/ - fptp_t kept_box_area = 0; - fptp_t other_box_area = 0; - if (same_area) - { - image_get_area(&(head->box), &kept_box_area); - other_box_area = kept_box_area; - } - - /**** Compare IOU ****/ - image_box_t *kept_box = head; - while (kept_box) - { - image_box_t *other_box = kept_box->next; - image_box_t *prev = kept_box; - while (other_box) - { - // kept_box is contained in other_box - if (((kept_box->box.box_p[0] > other_box->box.box_p[0]) && (kept_box->box.box_p[1] > other_box->box.box_p[1]) && (kept_box->box.box_p[2] < other_box->box.box_p[2]) && (kept_box->box.box_p[3] < other_box->box.box_p[3])) - // kept_box contains other_box - || ((kept_box->box.box_p[0] < other_box->box.box_p[0]) && (kept_box->box.box_p[1] < other_box->box.box_p[1]) && (kept_box->box.box_p[2] > other_box->box.box_p[2]) && (kept_box->box.box_p[3] > other_box->box.box_p[3]))) - // supress - { - num_supressed++; - prev->next = other_box->next; - other_box = other_box->next; - continue; - } - - box_t inter_box; - inter_box.box_p[0] = DL_IMAGE_MAX(kept_box->box.box_p[0], other_box->box.box_p[0]); - inter_box.box_p[1] = DL_IMAGE_MAX(kept_box->box.box_p[1], other_box->box.box_p[1]); - inter_box.box_p[2] = DL_IMAGE_MIN(kept_box->box.box_p[2], other_box->box.box_p[2]); - inter_box.box_p[3] = DL_IMAGE_MIN(kept_box->box.box_p[3], other_box->box.box_p[3]); - - fptp_t inter_w, inter_h; - image_get_width_and_height(&inter_box, &inter_w, &inter_h); - - if (inter_w > 0 && inter_h > 0) - { - if (!same_area) - { - image_get_area(&(kept_box->box), &kept_box_area); - image_get_area(&(other_box->box), &other_box_area); - } - fptp_t inter_area = inter_w * inter_h; - fptp_t iou = inter_area / (kept_box_area + other_box_area - inter_area); - if (iou > nms_threshold) - { - num_supressed++; - // Delete duplicated box - // Here we cannot free a single box, because these boxes are allocated by calloc, we need to free all the calloced memory together. - prev->next = other_box->next; - other_box = other_box->next; - continue; - } - } - prev = other_box; - other_box = other_box->next; - } - kept_box = kept_box->next; - } - - image_list->len -= num_supressed; -} /*}}}*/ - -void transform_input_image(uint8_t *m, uint16_t *bmp, int count) -{ /*{{{*/ - uc_t dst[24]; - for (int x = 0; x < count; x += 8) - { - rgb565_to_888(*bmp++, dst); - rgb565_to_888(*bmp++, dst + 3); - rgb565_to_888(*bmp++, dst + 6); - rgb565_to_888(*bmp++, dst + 9); - rgb565_to_888(*bmp++, dst + 12); - rgb565_to_888(*bmp++, dst + 15); - rgb565_to_888(*bmp++, dst + 18); - rgb565_to_888(*bmp++, dst + 21); - memcpy(m + x * 3, dst, 24 * sizeof(uint8_t)); - } -} /*}}}*/ - -void transform_output_image(uint16_t *bmp, uint8_t *m, int count) -{ /*{{{*/ - for (int x = 0; x < count; x++) - { - rgb888_to_565(bmp, m[2], m[1], m[0]); - bmp++; - m += 3; - } -} /*}}}*/ - -void draw_rectangle(uint16_t *buf, box_array_t *boxes, int width) -{ /*{{{*/ - uint16_t p[14]; - for (int i = 0; i < boxes->len; i++) - { - // rectangle box - for (int j = 0; j < 4; j++) - p[j] = (uint16_t)boxes->box[i].box_p[j]; - - // landmark - for (int j = 0; j < 10; j++) - p[j + 4] = (uint16_t)boxes->landmark[i].landmark_p[j]; - - if ((p[2] < p[0]) || (p[3] < p[1])) - return; - -#define GREEN RGB565_MASK_GREEN -#define RED RGB565_MASK_GREEN - // rectangle box - for (int w = p[0]; w < p[2] + 1; w++) - { - int x1 = (p[1] * width + w); - int x2 = (p[3] * width + w); - buf[x1] = GREEN; // Green - buf[x2] = GREEN; - } - for (int h = p[1]; h < p[3] + 1; h++) - { - int y1 = (h * width + p[0]); - int y2 = (h * width + p[2]); - buf[y1] = GREEN; // Green - buf[y2] = GREEN; - } - - // landmark - for (int j = 0; j < 10; j += 2) - { - int x = p[j + 5] * width + p[j + 4]; - buf[x] = RED; // Red - buf[x + 1] = RED; - buf[x + 2] = RED; - - buf[width + x] = RED; // Red - buf[width + x + 1] = RED; - buf[width + x + 2] = RED; - - buf[2 * width + x] = RED; // Red - buf[2 * width + x + 1] = RED; - buf[2 * width + x + 2] = RED; - } - } -} /*}}}*/ diff --git a/components/image_util/include/image_util.h b/components/image_util/include/image_util.h deleted file mode 100644 index b3b818d..0000000 --- a/components/image_util/include/image_util.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * ESPRESSIF MIT License - * - * Copyright (c) 2018 - * - * Permission is hereby granted for use on ESPRESSIF SYSTEMS products only, in which case, - * it is free of charge, to any person obtaining a copy of this software and associated - * documentation files (the "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished - * to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or - * substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -#pragma once -#ifdef __cplusplus -extern "C" -{ -#endif -#include -#include "mtmn.h" - -#define BOX_LEN (80) -#define MIN_FACE (12.0) -#define MAX_VALID_COUNT_PER_IMAGE (30) - -#define DL_IMAGE_MIN(A, B) ((A) < (B) ? (A) : (B)) -#define DL_IMAGE_MAX(A, B) ((A) < (B) ? (B) : (A)) - -#define IMAGE_WIDTH 320 -#define IMAGE_HEIGHT 240 - -#define RGB565_MASK_RED 0xF800 -#define RGB565_MASK_GREEN 0x07E0 -#define RGB565_MASK_BLUE 0x001F - - typedef struct - { - fptp_t landmark_p[10]; - } landmark_t; - - typedef struct - { - fptp_t box_p[4]; - } box_t; - - typedef struct tag_box_list - { - box_t *box; - landmark_t *landmark; - int len; - } box_array_t; - - typedef struct tag_image_box - { - struct tag_image_box *next; - fptp_t score; - box_t box; - box_t offset; - landmark_t landmark; - } image_box_t; - - typedef struct tag_image_list - { - image_box_t *head; - image_box_t *origin_head; - int len; - } image_list_t; - - static inline void image_get_width_and_height(box_t *box, float *w, float *h) - { - *w = box->box_p[2] - box->box_p[0] + 1; - *h = box->box_p[3] - box->box_p[1] + 1; - } - - static inline void image_get_area(box_t *box, float *area) - { - float w, h; - image_get_width_and_height(box, &w, &h); - *area = w * h; - } - - static inline void image_calibrate_by_offset(image_list_t *image_list) - { - for (image_box_t *head = image_list->head; head; head = head->next) - { - float w, h; - image_get_width_and_height(&(head->box), &w, &h); - head->box.box_p[0] = DL_IMAGE_MAX(0, head->box.box_p[0] + head->offset.box_p[0] * w); - head->box.box_p[1] = DL_IMAGE_MAX(0, head->box.box_p[1] + head->offset.box_p[1] * w); - head->box.box_p[2] += head->offset.box_p[2] * w; - if (head->box.box_p[2] > IMAGE_WIDTH) - { - head->box.box_p[2] = IMAGE_WIDTH - 1; - head->box.box_p[0] = IMAGE_WIDTH - w; - } - head->box.box_p[3] += head->offset.box_p[3] * h; - if (head->box.box_p[3] > IMAGE_HEIGHT) - { - head->box.box_p[3] = IMAGE_HEIGHT - 1; - head->box.box_p[1] = IMAGE_HEIGHT - h; - } - } - } - - static inline void image_landmark_calibrate(image_list_t *image_list) - { - for (image_box_t *head = image_list->head; head; head = head->next) - { - float w, h; - image_get_width_and_height(&(head->box), &w, &h); - head->landmark.landmark_p[0] = head->box.box_p[0] + head->landmark.landmark_p[0] * w; - head->landmark.landmark_p[1] = head->box.box_p[1] + head->landmark.landmark_p[1] * h; - - head->landmark.landmark_p[2] = head->box.box_p[0] + head->landmark.landmark_p[2] * w; - head->landmark.landmark_p[3] = head->box.box_p[1] + head->landmark.landmark_p[3] * h; - - head->landmark.landmark_p[4] = head->box.box_p[0] + head->landmark.landmark_p[4] * w; - head->landmark.landmark_p[5] = head->box.box_p[1] + head->landmark.landmark_p[5] * h; - - head->landmark.landmark_p[6] = head->box.box_p[0] + head->landmark.landmark_p[6] * w; - head->landmark.landmark_p[7] = head->box.box_p[1] + head->landmark.landmark_p[7] * h; - - head->landmark.landmark_p[8] = head->box.box_p[0] + head->landmark.landmark_p[8] * w; - head->landmark.landmark_p[9] = head->box.box_p[1] + head->landmark.landmark_p[9] * h; - } - } - - static inline void image_rect2sqr(box_array_t *boxes, int width, int height) - { - for (int i = 0; i < boxes->len; i++) - { - box_t *box = &(boxes->box[i]); - float w, h; - image_get_width_and_height(box, &w, &h); - float l = DL_IMAGE_MAX(w, h); - - box->box_p[0] = DL_IMAGE_MAX(0, box->box_p[0] + 0.5 * (w - l)); - box->box_p[1] = DL_IMAGE_MAX(0, box->box_p[1] + 0.5 * (h - l)); - box->box_p[2] = box->box_p[0] + l - 1; - if (box->box_p[2] > width) - { - box->box_p[2] = width - 1; - box->box_p[0] = width - l; - } - box->box_p[3] = box->box_p[1] + l - 1; - if (box->box_p[3] > height) - { - box->box_p[3] = height - 1; - box->box_p[1] = height - l; - } - } - } - - static inline void rgb565_to_888(uint16_t in, uint8_t *dst) - { /*{{{*/ - dst[0] = (in & RGB565_MASK_BLUE) << 3; // blue - dst[1] = (in & RGB565_MASK_GREEN) >> 3; // green - dst[2] = (in & RGB565_MASK_RED) >> 8; // red - } /*}}}*/ - - static inline void rgb888_to_565(uint16_t *in, uint8_t r, uint8_t g, uint8_t b) - { /*{{{*/ - uint16_t rgb565 = 0; - rgb565 = ((r >> 3) << 11); - rgb565 |= ((g >> 2) << 5); - rgb565 |= (b >> 3); - *in = rgb565; - } /*}}}*/ - - /** - * @brief - * - * @param score - * @param offset - * @param width - * @param height - * @param score_threshold - * @param scale - * @return image_list_t* - */ - image_list_t *image_get_valid_boxes(fptp_t *score, fptp_t *offset, int width, int height, fptp_t score_threshold, fptp_t scale); - - /** - * @brief - * - * @param image_sorted_list - * @param insert_list - */ - void image_sort_insert_by_score(image_list_t *image_sorted_list, const image_list_t *insert_list); - - /** - * @brief - * - * @param image_list - * @param nms_threshold - * @param same_area - */ - void image_nms_process(image_list_t *image_list, fptp_t nms_threshold, int same_area); - - /** - * @brief - * - * @param dst_image - * @param src_image - * @param dst_w - * @param dst_h - * @param dst_c - * @param src_w - * @param src_h - */ - void image_resize_linear(uint8_t *dst_image, uint8_t *src_image, int dst_w, int dst_h, int dst_c, int src_w, int src_h); - - /** - * @brief - * - * @param corp_image - * @param src_image - * @param rotate_angle - * @param ratio - * @param center - */ - void image_cropper(dl_matrix3du_t *corp_image, dl_matrix3du_t *src_image, float rotate_angle, float ratio, float *center); - - /** - * @brief - * - * @param m - * @param bmp - * @param count - */ - void transform_input_image(uint8_t *m, uint16_t *bmp, int count); - - /** - * @brief - * - * @param bmp - * @param m - * @param count - */ - void transform_output_image(uint16_t *bmp, uint8_t *m, int count); - - /** - * @brief - * - * @param buf - * @param boxes - * @param width - */ - void draw_rectangle(uint16_t *buf, box_array_t *boxes, int width); -#ifdef __cplusplus -} -#endif diff --git a/examples/single_chip/recognition_with_command_line/README.md b/examples/single_chip/recognition_with_command_line/README.md index 937ba01..a1af9ae 100644 --- a/examples/single_chip/recognition_with_command_line/README.md +++ b/examples/single_chip/recognition_with_command_line/README.md @@ -1,6 +1,6 @@ -# Camera with Command Line in Single Chip +# Recognition with Command Line in Single Chip -This example implements Human Face Detection with a single ESP32 chip and without LCD. ESP32 gets input of image from camera and displays results in the Command Line after recognition. +This example implements Human Face Recognition with a single ESP32 chip and without LCD. ESP32 gets input of image from camera and displays results in the Command Line after recognition. # Preparation @@ -16,31 +16,31 @@ Any other confusions about preparation, please see general guide in the README.m # Quick Start -If preparations are ready, please follow this section to **connect** the camera to ESP32 module, flash application to ESP32, finally execute human face detection and display the **result**. +If preparations are ready, please follow this section to **connect** the camera to ESP32 module, flash application to ESP32, finally execute human face recognition and display the **result**. ## Connect -Specific pins used in this example to connect ESP32 module and camera module are listed in table below. +Specific pins used in this example to connect ESP32 module and camera module are listed in table below. -| Interface | Camera Pin | Pin Mapping for ESP32-WROVER | +| Interface | Camera Pin | Pin Mapping for ESP32-WROVER | | :--- | :---: | :---: | | SCCB Clock | SIOC | IO27 | -| SCCB Data | SIOD | IO26 | -| System Clock | XCLK | IO21 | -| Vertical Sync | VSYNC | IO25 | -| Horizontal Reference | HREF | IO23 | -| Pixel Clock | PCLK | IO22 | -| Pixel Data Bit 0 | D2 | IO4 | -| Pixel Data Bit 1 | D3 | IO5 | -| Pixel Data Bit 2 | D4 | IO18 | -| Pixel Data Bit 3 | D5 | IO19 | -| Pixel Data Bit 4 | D6 | IO36 | -| Pixel Data Bit 5 | D7 | IO39 | -| Pixel Data Bit 6 | D8 | IO34 | -| Pixel Data Bit 7 | D9 | IO35 | -| Camera Reset | RESET | IO2 | -| Camera Power Down | PWDN | IO0 | -| Power Supply 3.3V | 3V3 | 3V3 | -| Ground | GND | GND | +| SCCB Data | SIOD | IO26 | +| System Clock | XCLK | IO21 | +| Vertical Sync | VSYNC | IO25 | +| Horizontal Reference | HREF | IO23 | +| Pixel Clock | PCLK | IO22 | +| Pixel Data Bit 0 | D2 | IO4 | +| Pixel Data Bit 1 | D3 | IO5 | +| Pixel Data Bit 2 | D4 | IO18 | +| Pixel Data Bit 3 | D5 | IO19 | +| Pixel Data Bit 4 | D6 | IO36 | +| Pixel Data Bit 5 | D7 | IO39 | +| Pixel Data Bit 6 | D8 | IO34 | +| Pixel Data Bit 7 | D9 | IO35 | +| Camera Reset | RESET | IO2 | +| Camera Power Down | PWDN | IO0 | +| Power Supply 3.3V | 3V3 | 3V3 | +| Ground | GND | GND | In particular, if you have a **ESP-WROVER-KIT**, camera connector is already broken out and labeled Camera / JP4. Solder 2.54 mm / 0.1" double row, 18 pin socket in provided space and plug the camera module, OV2640 for example, right into it. Line up 3V3 and GND pins on camera module and on ESP-WROVER-KIT. D0 and D1 should be left unconnected outside the socket. The image below shows **ESP-WROVER-KIT** plugged with **OV2640** camera module. @@ -50,9 +50,28 @@ In particular, if you have a **ESP-WROVER-KIT**, camera connector is already bro ## Results -Open a serial terminal by using `make monitor` at this project, point the camera to a human face with a distance of 0.3m at least, then you will see the following information: +Open a serial terminal by using `make monitor` at this project, point the camera to a human face with a distance of 0.3m at least, then face entry will start after two faces are detected. The following information shows the output of the command line before the entry process: -![detected](../../../img/detected.png) +![login_delay2](../../../img/login_delay2.png) +![login_delay1](../../../img/login_delay1.png) -The key word **DETECTED** comes out when a human face is detected. +#### Login +Then the face entry process will begin, during which the program will input multiple faces to get a person's ID: + +![start_login](../../../img/start_login.png) + +You can also reset the number of faces entered by one person, which is set to 3 by default. +When the last face of ID is entered, the process of face recognition will start: + +![start_recognition](../../../img/start_recognition.png) + +#### Recognition + +When a face is detected, it will be recognized whether the face is the same as the entered ID. If it is the same, the corresponding ID number will be displayed: + +![recognition_matched](../../../img/matched.png) + +Otherwise, the command line will display `No Matched ID`: + +![recognition_no_matched](../../../img/no_matched.png) diff --git a/examples/single_chip/recognition_with_command_line/main/app_facenet.c b/examples/single_chip/recognition_with_command_line/main/app_facenet.c index 693ca36..1c2d4d2 100644 --- a/examples/single_chip/recognition_with_command_line/main/app_facenet.c +++ b/examples/single_chip/recognition_with_command_line/main/app_facenet.c @@ -68,6 +68,8 @@ void task_process(void *arg) int is_logging = 1; int next_logging_index = 0; + int64_t timestamp = 0; + do { img_buffer = (uint16_t *)facenet_get_image(); @@ -75,7 +77,9 @@ void task_process(void *arg) img_buffer, gl_input_image_width * gl_input_image_height); + timestamp = esp_timer_get_time(); box_array_t *net_boxes = face_detect(image_matrix); + ESP_LOGI(TAG, "Detection time consumption: %lldms", (esp_timer_get_time() - timestamp) / 1000); if (net_boxes) { @@ -129,10 +133,19 @@ void task_process(void *arg) } else { + timestamp = esp_timer_get_time(); int matched_id = recognize_face(aligned_face, id_list, thresh, next_logging_index); - ESP_LOGE(TAG, "Matched ID: %d", matched_id); + if (matched_id) + { + ESP_LOGE(TAG, "Matched ID: %d", matched_id); + } + else + { + ESP_LOGE(TAG, "No Matched ID"); + } + ESP_LOGI(TAG, "Recognition time consumption: %lldms", (esp_timer_get_time() - timestamp) / 1000); } } else diff --git a/img/detected.png b/img/detected.png deleted file mode 100644 index fa2e050112672c1450097e6e12fb81c2c8d40025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22519 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 literal 0 HcmV?d00001 diff --git a/img/login_delay2.png b/img/login_delay2.png new file mode 100644 index 0000000000000000000000000000000000000000..6d49932583d00ed61c82a4eeb7bd19bcd6baf352 GIT binary patch literal 5657 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 literal 0 HcmV?d00001 diff --git a/img/matched.png b/img/matched.png new file mode 100644 index 0000000000000000000000000000000000000000..649b325a4240343329291ad86914de2d5e509c63 GIT binary patch literal 21103 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 literal 0 HcmV?d00001 diff --git a/img/no_matched.png b/img/no_matched.png new file mode 100644 index 0000000000000000000000000000000000000000..28aa60f81fa84983485d95e77ed658e0d172af77 GIT binary patch literal 20923 zcmagGb97`~@bBGmCYU&x*ha^;Ik9cq#!RejXh0%6^i>*SD^)A5V;z2r0K$zHD@u+Z?4d*RCX#cD{Nyw!F-76n&Kb z=JkG2LgVc3{L)8=hzJc04h{+m;_t`LPeAbJGU6);H>XNK+`pIq?QRzmqG-br)PMW! z-#7h{h^tOSS#?xlaK%K+@1=U9hRIRE;_eEN=<;Fy=h!&B&_iXVRJ>$q9=`G{-g}OQ z2|J}>8r}!h4sVaOoOGj~=~QQ3R)L^M$~wv+I$8@w(4fM%HTStX&&o|riW-E5@?H|q z*-8x0-Q{%0&y^8qCR4E^4JgrJvRsowggm7l@H;=uwuoPmu{G!GZ8e$RnT!h>)xve7 z=Loz#eudNg=Tp*Pf-DZHj4c(J3dV@+-{z!D_DfsJcLc*RC&;!}784m+!7fT#Lmebrchh^T|aNHbdS{& zj59@(078#iYqTia3oi^=CU!#GfehM1HMA_$2~1 zYv+xqJUJ%PsB%XFL8Q+0-k;W6fYCa5N9e`P3)IT!@BG_X*qspVBCUeXcuErh{KD!& zfL}Zn^pI8ph2aA#vMa94TOsH`%ac@e?T4A=oOLbF* zc!Bl#!*JKr-!!4LNJ0F>^A~x}@RTiOA?qJJ&7$<3*%k@nzdlwpWihRLG{y?tf;*E!}awe5&9j01o}q;mS0=4-er&|G(tOQfxw^Ct`AH#JlE!o+~CO4 z9eO@DkrVAkQZ68J@f2wzBO1l;qLv#5fV|R0eqOl64ldqt0nDcZZpk^wlUCAO=^&{%MPA>_5QgBpRh=uB8lx`mnvyp%aujaB=gs!Uchc)-B z)2R;j$l&R1k5mFg&fiW27nLDfn+0Dy?xTAi(q6Td2z{E*5?#E>Cf^V`7Acr~a>SXO{oevFXW zoaH>ET!zu*!d>@^$O^_ruQCYS?5DM|)U>!L;snXnWl3t8g3(nhe$%d76^btQaOd;@ z2gB}yC=>$3P;E-0lbQA!_V1DUgYlj2KAlm_?t%x>%p=HMA6{CjE#V|a%nZ_Q{`fJ3 zg$BA;y?3WtN~K~sS&#QNs>e&kJBrvIK}4YzsVxuIm2g>D^H}!wAt=q8yCYj7dZ^7; z>Jb?>$w;+YJCsu>D@&@GB84@m(f?8e8SM;0>}JgB61BYFV^)2ejgUG*4y^GjefGr~ zy^IIQ-v>Njvti|I(kgv$n#}Q_;yt-}>(s@gQ2xF9?TQJe24$)R?}_G*o>~1;Uv0W{ ztT-4;8fdkAVlgChpp(@0wT_W7kO0xCm&(_AkuhC7eZ9?C6 zVZ-<{_({8Mn{pDaA?dVo$PWQXq;lZby{==P_xjOSF(fwEXZu|CzG-}X+FS33JAC}2 zb}#uv-j}T`71qUL5=_!~7YfTHe0BHTU*7krHeWDS@=AqMWns{nNA+8uKJ$(W9KRGY zx`ac$&_(_7$G81ij$%EIxjRg?O43L}Fb)>FuUMx&`*WtIyNAie`4~3SsafEw%N|p~ zC6#nifQJV5#wvHH-UIE>H61@YjN781cwfhE7+2tg|$G zlpjAT@$j`pkaKAfEMI0$U)FLhZX9NV9pE<^qN6NCfMyG)20xlPOuqQU|7q7{5tN`Q z`K-^;HowrQb`;nk7Gfg&n{p&E@j3dJw@R~6`vgh@d8}t?Ja-2=Z~t#N`av!!4$}q{#L zp+T5PIV+VeBTVtFf?}E4s&Sgjzp)SWAWuc8ygQTl7H#Z~7e$`$kiewAgeq^^2eBGU z=qoISCB%;)D8NQD<91~l!7pMmJU1EK)r)LG1_0u;J9dCXfkpdKYR-N6hT+u}q?<_J zxf%M6bQoNZ_g8xo;4bMY&ayA}v=YU523J$z#PxWscYG;8v1l+kutxJfD}tJ-Dgo=x$8Od-A=u^|)MxC4ciYU9ai^uqIEzvJ7CYWrLnwMD@$uXO|07cV1U z1L9=9)b!?BmatqU{T)S){;SD%ks1#2pS{hw4;mxv3m9z;us;S{Vs+dVh+li3TfLmT zIic4H-Mu7-r|i)bjl)3oZkN&7`3p{VC9N_F@GNu4Sq=ha(-ta>CJ#kUYsA0&bzb`m zLHIWy*(p)!?{LlT=;mHtd__H`1Ti<+D$Rw{vqoqbv?a*U10)Wve?839@*6JN2LsWY z6btv%dgL}3@xaryIk$>-7Jc{*(UrKc3~lag%Lz~fYD4$SpLfO!vM&c#VYw8fu}v8q&)lHsx+* zqGWtW4`;xzfMmS!_rVzosIxEx_%RE}%9a}6rFpq{KBA}^11w`ROdZyswKxtnvyz`Z zx*j0QdNU+UX(HNlu2Xy9LXG@Nq`x97nRkG?$FgXd3eQU&kpFh-Al2j!(&5a-dCv>G zEZV(oY|UXgX9ka>>JcD{#O|<1@j)rYUZz+1nx*X=FH{%dPpk;v*;*J(W^!T03|uZs zLly%emtNk4^wD(S_l$AMyU=;MvfURt-4{3vvIu#q9JBNa(4%#5F1Xv@+L17~PB@A& zQXda0t*J)bI6CFw0MT=6M;-k zv3zvlF3WmPA?VxIFRUaC>NB1@XobdJA_Kw^RqV9wON9d2twO#W1ub8cyr2bnUB zd*uz%?&OVQJygV}p)lPGXgm&l83buZ_vCA=TK1PaXx+ZCDf!J3rLknzlsGL+I819* z@^-G|!u7bdGi_AQ z(iQZDVVX{|=r`lssN=`EVFJvjoA#@ZMNra_ld9|0)s#-=6W~U!GH4Hkv+;O<<|8H8 zbg3Oahjj%{f)#&=N9h~aI*hN8Ml)&R>wGTPsAfC+>GIIoX7ITl$9)P!J9_e~R&G$l zQ<2FJat!CrN`;32M+A6J6ZlTxnt}IgX_1G!nJfPuX6JiQTU$r&35Y9V_Q)6RsAZ3u z)y}Hiha2vw=6d|Q&bjK}P(axi0?)6#sLIjR+szHl)P=L!Xd@VP*L{Ntd}r?4Goil! z9GuXERq5n+i1&GgKS5?V%|*@bX#7Gw%5&^t)9~4)^S?qd3Q4m*P`e=IHx=0Y2Cw{H z`Fy5jly{rri6qpP)0YG;5iAL8n1_}h3wG_3=EsK3u@6GtpEBt=0c$^jyPHU|-<)?x zqYT9UK?~*`6A}d{#EK3u(u}O@#Blmme$;29v82U!CE%IsH zLFCCw?-Rl=HVGit?R4!2x37w}bS2$rP6uHIXdom5AeB`0>K_NhP%2$jrno_C7!{1( zuNL7(1(b;o%8Y>0ZQaWUivES@Y=A<&cLK=VmnfKw@G;?j%}FsgFv?@N}lgr)mjsh|}7P+WyI(>$pV zEXF&&<++yAz>L254Q6+1e=QKFE zwWQd!(7D1I4^H!hpf9>A72EeG%{Y62jKcs}-MuXHL|-+B{ejSx_4%y@!6!H&Um25~ zHHB-wff`xXA7@EJX}$_}6&4?pO^ptHgI%u%eKkSVwecgi`B(kIeCvIaCth{1DIPf4 zdu0=}rOzX)qw=O*?5xt-KHeOL>--&Hclun!u&$UTi)!7j6OfzB!v%A2ah7`sTeI2U zZrYCafD?Zw+g&;ST}P2t#lhflK?wG8ESQ_eQ*J~?+(of`8St`bx#T|&@U3}^*K=7L zGGUBeiqBALbJRE-1n1m}c?MEj$$tzw{-}9#Gv)1#PdkGv>3Rq{m?AI86Q| zJLpgl_EwEIlDla<8MiZ4z3TEk^n9mEMp|>M(Bzo5ud*nm zK?xkh)U4)PT{WDy#oxC4#a0;1I!eQ~ErRYgox)i?9lOl3TA%HZl)ULuNRQ0XC8Rud zM#N>3{8B#FT{gLbBg!>%S`+MX&s+ndqG`%`NWHd2{jmhyL5j=O5BILW@{y)Az3a6f z6TqClJoRe89zLx=aN3>iZLh2t>%YzxtNP+RO@%i~ol zeYe}`ire2hR%Q{+AzFn}^01<7i(y&Fe;g{JT;ILTl>j3DU6t4>5Y@XAWvy)@hdV|k zzIq{Cl^aDE+8(vuH-p8S_b@al-WMyF>K9%%>J`GBU}aXGcJ^!LXIV6NLmH+7At~8; zN;B86bQ=a^1?nnTfg(}|M;inBJ|8&NoqKag*!U7)XG&1wZ(Mf@`dOh2LV(f%lx+24 zUR!yN5;ppy376zI(UdL_IobQZhgNUjRQdc`>^C_t%Rp;fS}g18r?Yc+AiWy*e=~Ck zCz@tJoor8>XoY^*u;20v1TXa~&!?c(@34^<`w-ZdBk>MWeKgUAJpAhJ9`&~Wm0;}X zKjZJ^RD-o9ZaEpy(htgCFSgp*8zD#x+)c*d7{xwCcYOGbAoNh%y;gfcjxiq6o;vBt ze6r2F@$7WGweLQyES&y#ImSN;)L)st2G&a>2aAD}gPw$@wW4S2%Yz6QzHFTz2=vgz z%W_4HG)GPt$XU_dg~U&|Wlz#2@p$4d9)-tu#v}4;%w(SKb3lb+lnm(vV)SR^yh3zR zNL>c~X+o5Q%YIsQZQezZpHh>0Bb48r8%QxO%*Viu-ItN}u;zc-PD2?gW#nE7W^Gwu zucA%8IUH-2Bc&RV$c#ctB=wXR8?c+4(Bo2bd~GHki^_?Musi zFFv_mvj%Pbf=!qo>6&&?Hh$~lh4lpYTQzP}Dn47`UI#v^LPC*yt&DiCOt*c7h1B6b zNxpRGt-pSAJ5W~JF1q2$PWLWu73f>cE3}$1w9i#H)C#xx%<@L`V4bV?Ji^7P1$h4n zB;4#}KL}i99Bk05gYJn1}* zKNiy*JrjlpH?8L!qWn3y4gd1%>*RC<-0xn3aNDpoy!A~qHF&ef&&JPn zH8-%XzGD41Sr%YhE4xu5eApaz+WCqF0}d#Emx(xyS&jn=(V>QJQ=?w=C@DyEiIj*Ddm-OyVe3Y6~F3 zu9|1U>yW`8J6_>nn~|Cuqzqg@MX{|Uu7fJjlab1FjtHVkx ziYQUa>;;%yk(lbc_>p(mBP(BuI0fc^((adb)!b|KE+ z6BY$ROCxE^u^jXdkLAVW|U7fl4kt~1O|pl+5eM(iOO zOI*ronf41D4ONxW{V;=tb8k2;tE!izcDlG_Yub+A!n5HCwAr)Rdv_9glsLH3ntlZv zCHZWRIpr%nt8)JqYc?QsD4*^AQ-qB79`?uj+7hx<*K>G=dkOk`b!Fwduaz>xC_sb7 zt1u4@aHIL6L=Jy<*qgsHGN@K&KbZ2d0c^v*O8KE0T9=eDjq zI(%hB=>hSXtmv70DwF5i{!)AC+z*Q{T-fY%{8Xcpl~uZYBHX)uw%u_=+F+Xr<=s~2 zsZ6~_4#Jpg3zYCHeY{VNZryp%=wWX#Q1=G0Y^?(K2FUeYb^eKQd`+C;hft~mUo|pe zfnIIgz!fDFiT{Wpw>*4}sqZ{tyTP-Zi|h>NL%fa1M*L{OXEvc}?SJrFZJZVrCC-Jz zoOs*kal!nMAV1ihm>??;pai3o`xK0b#3xJjhc_$z)>;@)38JzczPzosOI>5{n7ee` zD1@Y_@>Hsio7T*X)G*frum9-`alg}Ck8v|DgY&9Dxq)c2`BW%zL79`B6As_e)!%NR zO)Fc_hD>;4S7+C)#jcF=DjiyAjOUPt#IZpbrhIp%ns@W+xMD=)K@(E|XI zJbL%bVpg@sJYQ<=b}G&{7A{&r43K*;jtLFd-xUo~6W@1x#_UTR^2FSYAM~LGeWsd! zUJ?bJP%9Da9vE$`8;0Rr>sU+MU zWh^I(VH5-*;;^x5picF!<66<@Z%-syg2itjSEEz~^}kutRW1f;Yh|^2aMF!X!V4T=3Nr?Yo753+8&KC$ZhV^66QaAnCdv}^)-~9+ zIm8_c=hdM7$cX?NOGSoo8EwRgZ|+?}Q(#RD&fXeGoYRFs{G}^&2?+70%I#<+3xlfe zdm9SFuz>p7hlmpr9ZNpj;H&RArlT3x737mkkKX{pb+ z@A*@5zrY^uwy`pIq;x_pm~{EwvTlY#meu-;JEN=Ps7C>V#9k8(B68{(^0!5Sr^m6? z=ztI}5fY_z!B5)2Vv<{9wQ}u`5nHF;NKjMv3a_k5vIsUsKf)Bkpkdzj8*E)`*LBsO zN16Q35?=y@qmauPNWjLa4-EZBW>Zl%�Ks@bTqgaHWi-< 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�oteAtLb_# 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 G+y4Pdf8pE! literal 0 HcmV?d00001 diff --git a/img/start_login.png b/img/start_login.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6f07cf910374a395958e0c96df1a08617cc2bf GIT binary patch literal 24914 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/img/start_recognition.png b/img/start_recognition.png new file mode 100644 index 0000000000000000000000000000000000000000..9366446d4be331caeb7229cf17dc7f538592148c GIT binary patch literal 30435 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 p?m?qM6hhDcJYo2X0r|=oNFT2-*pDyw{_