# 静默活体识别器

## **1. 接口简介** <br>

静默活体识别根据输入的图像数据、人脸位置和人脸特征点，对输入人脸进行活体的判断，并返回人脸活体的状态。<br>

## **2. 类型说明**<br>

### **2.1 struct SeetaImageData**<br>

|名称 | 类型 | 说明|
|---|---|---|
|data|unit8_t* |图像数据|
|width | int32_t | 图像的宽度|
|height | int32_t | 图像的高度|
|channels | int32_t | 图像的通道数|
说明：存储彩色（三通道）或灰度（单通道）图像，像素连续存储，行优先，采用 BGR888 格式存放彩色图像，单字节灰度值存放灰度图像。

### **2.2 struct SeetaRect**<br>

|名称 | 类型 | 说明|
|---|---|---|
|x|int32_t |人脸区域左上角横坐标|
|y| int32_t | 人脸区域左上角纵坐标|
|width| int32_t | 人脸区域宽度|
|height| int32_t | 人脸区域高度|

### **2.3 struct SeetaPointF**<br>

|名称 | 类型 | 说明|
|---|---|---|
|x|double|人脸特征点横坐标|
|y|double|人脸特征点纵坐标|

## 3 class FaceAntiSpoofing
活体识别器。

### 3.1 Enum SeetaDevice

模型运行的计算设备。

|名称 |说明|
|---|---|
|SEETA_DEVICE_AUTO|自动检测，会优先使用 GPU|
|SEETA_DEVICE_CPU|使用CPU计算|
|SEETA_DEVICE_GPU|使用GPU计算|

### 3.2 struct SeetaModelSetting

构造活体识别器需要传入的结构体参数。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|model|const char**| |识别器模型|
|id|int| |GPU id|
|device|SeetaDevice|AUTO |计算设备(CPU 或者 GPU)|

### 3.3 构造函数

#### FaceAntiSpoofing
构造活体识别器，需要在构造的时候传入识别器结构参数。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|setting|const SeetaModelSetting&| |识别器接口参数|
说明：活体对象创建可以出入一个模型文件（局部活体模型）和两个模型文件（局部活体模型和全局活体模型，顺序不可颠倒），传入一个模型文件时活体识别速度快于传入两个模型文件的识别速度，传入一个模型文件时活体识别精度低于传入两个模型文件的识别精度。

### 3.4 成员函数

#### Predict
基于单帧图像对人脸是否为活体进行判断。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|image|const SeetaImageData&| |原始图像数据|
|face|const SeetaRect&| |人脸位置|
|points|const SeetaPointF*| |人脸特征点数组|
|返回值|Status| |人脸活体的状态|
说明：Status 活体状态可取值为REAL(真人)、SPOOF(假体)、FUZZY（由于图像质量问题造成的无法判断）和 DETECTING（正在检测），DETECTING 状态针对于 PredicVideo 模式。

#### PredictVideo
基于连续视频序列对人脸是否为活体进行判断。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|image|const SeetaImageData&| |原始图像数据|
|face|const SeetaRect&| |人脸位置|
|points|const SeetaPointF*| |人脸特征点数组|
|返回值|Status| |人脸活体的状态|
说明：Status 活体状态可取值为REAL(真人)、SPOOF(假体)、FUZZY（由于图像质量问题造成的无法判断）和 DETECTING（正在检测），DETECTING 状态针对于 PredicVideo 模式。

#### ResetVideo
重置活体识别结果，开始下一次 PredictVideo 识别过程。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|返回值|void| ||

#### GetPreFrameScore
获取活体检测内部分数。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|clarity|float*| |人脸清晰度分数|
|reality|float*| |人脸活体分数|
|返回值|void| ||

#### SetVideoFrameCount
设置 Video 模式中识别视频帧数，当输入帧数为该值以后才会有活体的
真假结果。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|number|int32_t| |video模式下活体需求帧数|
|返回值|void| ||

#### GetVideoFrameCount
获取video模式下活体需求帧数。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|返回值|int| ||

#### SetThreshold
设置阈值。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|clarity|float| |人脸清晰度阈值|
|reality|float| |人脸活体阈值|
|返回值|void| ||
说明：人脸清晰度阈值默认为0.3，人脸活体阈值为0.8。

#### GetThreshold
获取阈值。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|clarity|float*| |人脸清晰度阈值|
|reality|float*| |人脸活体阈值|

#### set
设置相关属性值。其中<br>
**PROPERTY_NUMBER_THREADS**: 
表示计算线程数，默认为 4.

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|property|Property||属性类别|
|value|double||设置的属性值|
|返回值|void| | | |

#### get
获取相关属性值。

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|property|Property||属性类别|
|返回值|double||对应的属性值|