A face retrieval system has the following three requirements:
- Blacklist-based monitoring and alerting
A blacklist stores face features of criminals or suspects at large. The faces captured by cameras are compared with the faces in the blacklist.
- Face recognition for the same person
Faces captured by cameras are compared with the face features in the identification picture library. The identification IDs of associated persons can be found based on their faces. This way, structured data is obtained from faces.
- Portrait retrieval from a historical library
Faces that are not found in the identification picture library are stored in the historical portrait library for one month for subsequent case detection.
The following figure shows the system architecture of portrait management.
- Application layer
Implements the user interface and underlying call logic.
- Data layer
Abstracts portraits into four libraries.
Functions as a vector library and stores one million data records. Portraits captured by each camera need to be compared with the portraits in the blacklist first. For 1,000 cameras, the keyframe extraction algorithm generates one facial picture per second. This library requires 1,000 queries per second (QPS). To reduce false positives, the system uses the lossless retrieval mode to ensure high accuracy.
- Personnel library
Functions as a vector library and stores 200 million face features that may be updated a few times. Cameras search for the faces captured by them in this library. Each camera searches once per second. This library requires 1,000 QPS.
- Historical library
Functions as a vector library and stores face vector data for one month. 1,000 cameras generate 430 million face data records every day and 12.9 billion vectors every month. During face retrieval, personal IDs are searched for first in the personnel library. If the ID of a person is found, the person's trajectory is retrieved in the trajectory library based on the ID. Otherwise, the face trajectory is retrieved in the historical library based on face features. Therefore, this library has a QPS requirement of 100, which is low.
- Trajectory library
Stores the IDs of persons that correspond to faces and locations of the cameras that captured these faces as structured data. Each face recognized by a camera is retrieved from the identification picture library. If an ID is found, the ID and the location of the involved camera are stored in the trajectory library. Face recognition for the same person is used to map each face recognized by a camera to a person ID.
AnalyticDB for PostgreSQL stores and computes structured and vector data, whereas OSS stores unstructured data.