Face detection and recognition framework
Switch branches/tags
Nothing to show
Clone or download
TheNitek and XiaochaoGONG Fix component links (#9)
Fix links to esp32-camera and esp-face
Latest commit fd71555 Dec 11, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
components Open face detection and recognition forward Dec 5, 2018
docs Init commit Nov 23, 2018
esp-idf @ fb7ba1b Init commit Nov 23, 2018
examples/single_chip Merge branch 'misc/open_forward_sourc' Dec 5, 2018
img Init commit Nov 23, 2018
tools/ci Init commit Nov 23, 2018
.gitignore Add Camera Web Server Example Nov 29, 2018
.gitlab-ci.yml Init commit Nov 23, 2018
.gitmodules Init commit Nov 23, 2018
CHANGELOG.md Init commit Nov 23, 2018
LICENSE Init commit Nov 23, 2018
README.md Fix component links (#9) Dec 11, 2018



ESP-WHO is a face detection and recognition platform that is currently based on Espressif Systems' ESP32 chip.


ESP-WHO supports development of face detection and recognition applications based around Espressif Systems' ESP32 chip in the most convenient way. With ESP-WHO, you can easily build up face detection- and recognition-featured applications, for instance:

  • A coffee machine that brews coffee according to your taste preference;
  • Home applicance that will shut off the electricity automatically when unsupervised children are operating them;
  • And other more applications that suit your needs.

In general, the ESP-WHO features will be supported as shown below:


In ESP-WHO, Detection, Recognition and Image Utility are at the core of the platform.

  • Image Utility offers fundamental image processing APIs for ESP32.

  • Detection takes images as input and give the position of face if there is a face. It is implemented with MTMN model, which refers to MTCNN and MobileNet. However, we replace CNN with MobileNet block and the model size is quite smaller than other face detection models.

  • Recognition is to identify the particular person, and it needs the results of detection. It is implemented with MobileFace model.

Both input and output are flexible.

  • Image sources could be input via camera. However, we don't provide many drivers right now, those for other camera modules will be released in the future.

  • Results could be output and displayed through Command line, LCD or even website via Wi-Fi http service.

Quick Start with ESP-WHO

Hardware Preparation

To run ESP-WHO, you need to have a development board which integrates a ESP32 module that has sufficient GPIO pins and more than 4 MB external SPI RAM. In this case, we take ESP-WROVER-KIT as the test board, which is highly recommended for getting started with ESP-WHO.

On how to configure ESP32 module for your applications, please refer to the README.md of each example.

Software Preparation


The recommended resolution of input image is QVGA (320x240).

As for choosing camera as an image offer, make sure that the ESP32 module you choose offers specific pins that your camera needs. If there are pin conflicts, please refer to the pin connection in README.md of each example.

By now, we have provided the driver of OV2640, which is highly recommended to get started with.


Make sure you clone the project recursive:

git clone --recursive https://github.com/espressif/esp-who.git 

If you clone project without --recursive flag, please go to the esp-who directory and run command git submodule update --init before doing anything.


See setup guides for detailed instructions to set up the ESP-IDF:

In this case, we take ESP-IDF v3.1 as the test version.


Components is the main framework of the SDK, with camera driver and algorithm inside.

See the following sections for more details about components.


The camera component contains drivers for camera devices of ESP32. Now OV2640 is supported.


The esp-face component contains the APIs of ESP-WHO neural networks, including face detection and recognition framework.


The folder of examples contains sample applications demonstrating the API features of ESP-WHO.

Take one Face Detection as an example.

  1. Get into one example folder esp-who/examples/single_chip/detection_with_command_line.
cd esp-who/examples/single_chip/detection_with_command_line
  1. Compile the project. You may run make defconfig before make flash to get the default configurations.
make defconfig
make flash
  1. Advanced users can modify some options by using the command make menuconfig.

Check README.md of each example for more details.