Face Recognition API with OCI – Part 1

You may have noticed that I’m studying Machine Learning (including Deep Learning). In my study I like to implement codes from other developers or create some codes from scratch. If you also study about facial recognition you may have heard about Facenet. Facenet is a Tensorflow implementation for face recognition that you can integrate into your projects, and I used it to create my Face Recognition API.

In this first article, you will learn how to use my facial recognition API with an OCI Compute instance (Ubuntu 16.04). You can choose between CPU or GPU instances, but if you have multiple photos of different people, I recommend GPU instances to speed up training for your model.

In the second article, you’ll learn how to integrate it with OCI Object Storage to store all your images.

First of all, some of your account information is required.
Access your Oracle Cloud account, copy and paste your user OCID into a notepad.

Create a new API Key for your user using this public key.

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqXpSBJfl+6CP8AQueRlC
ZISG0aJVrVWTZR/HtakVri+T+jsLyZNc5/7TsQ2VuqrKCV4/6LsxpRwkaRW70N1t
7HFaeo35LaSOkeXHzAPTIDtkaJUXMEpMaokKJzFnG2VElytUUVrtoHs3kMp4ykYH
zVNahsVG11sWKcp2TKe3rCXM4EaxRL0WsfNu3d5JIkL1AxrT2twdQrHqgwCWPzKs
9D6BsbjgMyKhckF2cyYL7L/XCrUjhjlZZVauMcIUzeIwJb0XUZFGxdkBFwHCF5pT
0z5erCN7Bh6BKpTBRdRlV3keIjP9VQ62cLXorQS9/9Tbrf453GDUEEPVMcOw1OAd
XwIDAQAB
-----END PUBLIC KEY-----

Copy and paste the fingerprint generated.

Copy and paste your tenancy OCID.

Copy and paste your compartment OCID.

Open a terminal, access your OCI Compute instance and install the required libraries.

$ sudo apt-get update -y
$ sudo apt-get install -y libsm6 libxext6 libxrender-dev ffmpeg

Clone my project from GitHub.

$ git clone https://github.com/waslleysouza/face_recognition_api.git

Create a new environment using Anaconda.

$ conda create -n facerec python=3.6 -y

Activate your environment.

$ source activate facerec

Access the project folder.

$ cd face_recognition_api

Install the required python packages using the requirements.txt file.

  • If your instance has only CPU, run:
$ pip install -r requirements-cpu.txt
  • If your instance has a GPU, run:
$ pip install -r requirements-gpu.txt

Open the config/config.prod file.

$ vi config/config.prod

Edit and save the file.

  • user: The user’s OCID
  • fingerprint: The fingerprint generated above
  • key_file: The private key of public key. If you used my public key to generate a new fingerprint, use the “./config/oci_api_key_private.pem” file
  • tenancy: The Tenancy’s OCID
  • region: The region of your compartment
  • compartment: The compartment’s OCID

Start the application in background.

$ nohup python server.py &

Open your browser and go to the Facial Recognition API Console.

http://<HOST_PUBLIC_IP>:5000/ui

The Face Recognition API has 4 opertions:

  1. ADD: This operation adds a new human face to the Face Recognition API database. You can upload videos or images that contain only one person.
  2. CLASSIFY: This operation executes a face recognition. You can upload images that contains only one person.
  3. TRAIN: This operation trains the model to recognize the new faces added by the ADD operation.
  4. RESTART: This operation reloads the Face Recognition API model if you experience any problems.

Go to the ADD operation and upload your photo.

Then go to the TRAIN operation to train the model with your face.

Wait for 15 seconds and perform the CLASSIFY operation.
Use a different photo of you and the API will try to recognize.
If you’re lucky, the API will recognize you! = D

Machine Learning is magic!
In this first article, you learned how to install and run my Face Recognition API in OCI. In the second article, you’ll learn how to integrate it with OCI Object Storage to store all your images.

Have a good time!

Author: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.