Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Hassan-Recognito authored Apr 9, 2024
1 parent fc78edb commit 6e30f27
Showing 1 changed file with 187 additions and 1 deletion.
188 changes: 187 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,187 @@
# Face-SDK-iOS-Demo
<a href="https://recognito.vision" style="display: flex; align-items: center;">
<img src="https://github.com/Recognito-Vision/Face-SDK-Linux-Demos/assets/153883841/b82f5c35-09d0-4064-a252-4bcd14e22407"/>
</a><br/>

# Face Recognition, Liveness Detection, Pose Estimation iOS SDK Demo
<p align="center">
<img alt="" src="https://recognito.vision/wp-content/uploads/2024/03/NIST.png" width=90%/>
</p>
<p align="center" style="font-size: 24px; font-weight: bold;">
<a href="https://pages.nist.gov/frvt/html/frvt11.html" target="_blank">
Latest NIST FRVT Report
</a>
</p>


This repository contains a demonstration of Recognito's face recognition SDK for iOS.
The SDK includes advanced features such as face recognition, liveness detection, and pose estimation.
Recognito's face recognition algorithm has been ranked as the **Top 1 in the NIST FRVT** (Face Recognition Vendor Test).

For more details and documentation, visit [https://docs.recognito.vision/](https://docs.recognito.vision/).

## <img src="https://github.com/Recognito-Vision/Face-SDK-Linux-Demos/assets/153883841/d0991c83-44f0-4d38-bcc8-74376ce93ded" alt="feature" width="25"> Features
- **Face Recognition:** Identify and verify individuals by comparing their facial features.
- **Liveness Detection:** Determine whether a face is live or spoofed to prevent fraud in authentication processes.
- **Pose Estimation:** Estimate the pose of a detected face, including Yaw, Roll, Pitch

### - Additional Features
- **NIST FRVT Top 1 Algorithm:** Utilize the top-ranked face recognition algorithm from the NIST FRVT for accurate and reliable results.
- **On-premise:** Operate entirely within your infrastructure, ensuring data privacy and security.
- **Real-time:** Perform face recognition, liveness detection, and pose estimation with minimal latency.
- **Fully-offline:** Function without the need for an internet connection, ensuring reliability and data privacy.

## <img src="https://github.com/Recognito-Vision/Face-SDK-Android-Demo/assets/153883841/6d34f50e-df5a-4d2a-8ce6-a38b8203d3e6" alt="youtube" width="25"> Demo Video
[<img src="https://github.com/Recognito-Vision/Face-SDK-Android-Demo/assets/153883841/532c2717-9249-491e-8206-bf16caadb18b" width="70%">](https://www.youtube.com/watch?v=9HM70PFa4lQ)

Recognito Youtube Channel: [youtube.com/@Recognito-Ltd](https://www.youtube.com/@Recognito-Ltd)
<p align="center">
<img src="https://github.com/Recognito-Vision/Face-SDK-iOS-Demo/assets/153883841/44163563-4d5b-47bb-b58e-df01581209ce" width="16%" />
<img src="https://github.com/Recognito-Vision/Face-SDK-iOS-Demo/assets/153883841/f29ca2b4-e55b-4098-aec0-581a05240ef8" width="16%" />
<img src="https://github.com/Recognito-Vision/Face-SDK-iOS-Demo/assets/153883841/6fa1d72c-494d-43d9-9868-fcb5da0046e6" width="16%" />
<img src="https://github.com/Recognito-Vision/Face-SDK-iOS-Demo/assets/153883841/a7668fcd-fb5c-4b9c-b08d-9da13e51ab1b" width="16%" />
<img src="https://github.com/Recognito-Vision/Face-SDK-iOS-Demo/assets/153883841/2bc7a269-8653-4f5e-8291-fd5179f9c225" width="16%" />
<img src="https://github.com/Recognito-Vision/Face-SDK-iOS-Demo/assets/153883841/3b0e1426-87e8-40fc-98f6-92ff4c699511" width="16%" />
</p>

## <img src="https://github.com/Recognito-Vision/Face-SDK-Android-Demo/assets/153883841/05f9ac6c-1224-46a9-8c74-04b8f8cfe5ab" alt="SDK API" width="25"> SDK Integration
To use the Recognito SDK in your iOS project, follow these steps:
#### 1. Add `facesdk.framework` into the project
- Copy and add the SDK framework to your iOS project.

- Add the following dependency to your `build.gradle` and `settings.gradle` files:
https://github.com/Recognito-Vision/Face-SDK-Android-Demo/blob/601379c51970400b5c90972854b3468beef683ea/app/build.gradle#L50-L52
https://github.com/Recognito-Vision/Face-SDK-Android-Demo/blob/601379c51970400b5c90972854b3468beef683ea/settings.gradle#L17-L19

#### 2. Application License (One-Time License)
- For trial license, share your application ID.
https://github.com/Recognito-Vision/Face-SDK-Android-Demo/blob/601379c51970400b5c90972854b3468beef683ea/app/build.gradle#L6-L15
<div style="display: flex; align-items: center;">
<a target="_blank" href="mailto:hello@recognito.vision"><img src="https://img.shields.io/badge/email-hassan@recognito.vision-blue.svg?logo=gmail " alt="www.recognito.vision"></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://wa.me/+14158003112"><img src="https://img.shields.io/badge/whatsapp-+14158003112-blue.svg?logo=whatsapp " alt="www.recognito.vision"></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://t.me/recognito_vision"><img src="https://img.shields.io/badge/telegram-@recognito__vision-blue.svg?logo=telegram " alt="www.recognito.vision"></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://join.slack.com/t/recognito-workspace/shared_invite/zt-2d4kscqgn-"><img src="https://img.shields.io/badge/slack-recognito__workspace-blue.svg?logo=slack " alt="www.recognito.vision"></a>
</div>

- Add your license to `assets/license` file:
https://github.com/Recognito-Vision/Face-SDK-Android-Demo/blob/601379c51970400b5c90972854b3468beef683ea/app/src/main/assets/license?plain=1#L1-L5
- Initialize SDK with license.
https://github.com/Recognito-Vision/Face-SDK-Android-Demo/blob/601379c51970400b5c90972854b3468beef683ea/app/src/main/java/com/bio/facerecognition/MainActivity.kt#L39-L47

Initialization status codes:

| Code | Status |
|:------:|------|
|0|Activate SDK successfully|
|-1|License Key Error|
|-2|License AppID Error|
|-3|License Expired|
|-4|Activate Error|
|-5|Init SDK Error|
#### 3. APIs of SDK
##### - Activate SDK
```java
public static native int setActivation(String var0);
```
Parameters
- `var0`: The license string.
- Return Value: An integer representing the SDK activation status code.
<br/>

##### - Initiate SDK
```java
public static native int init(AssetManager var0);
```
Parameters
- `var0`: An instance of AssetManager used to access application assets.
- Return Value: An integer representing the initialization status code.
<br/>

##### - Convert YUV camera frame to Bitmap image
```java
public static native Bitmap yuv2Bitmap(byte[] nv21, int width, int height, int orientation);
```
Parameters
- `nv21`: Byte array representing the YUV image data in NV21 format.
- `width`: Width of the image.
- `height`: Height of the image.
- `orientation`: Orientation of the image

| Value | Orientation |
|:----:|----|
|1|No processing|
|2|Flip horizontally|
|3|Flip horizontally first and then flip vertically|
|4|vertical flip|
|5|transpose|
|6|Rotate 90° clockwise|
|7|Horizontal and vertical flip --> transpose|
|8|Rotate 90° counterclockwise|
- Return Value: A Bitmap object representing the converted image.
<br/>

##### - Detect Face
```java
public static native List<FaceBox> faceDetection(Bitmap var0, FaceDetectionParam var1);
```
Parameters
- `var0`: The Bitmap image.
- `var1`: Parameters for face detection
```java
public class FaceDetectionParam {
public boolean check_liveness = false;
public int check_liveness_level = 0; // 0: more accurate model, 1: lighter model
}
```
- Return Value: A list of FaceBox objects representing the detected faces.
```java
public class FaceBox {
public int x1;
public int y1;
public int x2;
public int y2;
public float liveness;
public float yaw;
public float roll;
public float pitch;
}
```
<br/>

##### - Extract face feature
```java
public static native byte[] templateExtraction(Bitmap var0, FaceBox var1);
```
Parameters
- `var0`: The Bitmap image
- `var1`: The bounding box (`FaceBox`) of the detected face.
- Return Value: A byte array representing the extracted template from the face.
<br/>

##### - Calculate similarity between two face features
```java
public static native float similarityCalculation(byte[] var0, byte[] var1);
```
Parameters
- `var0`: The byte array representing the first face template.
- `var1`: The byte array representing the second face template.
- Return Value: A float value representing the similarity score between the two face templates.
<br/>

## <img src="https://github.com/Recognito-Vision/Face-SDK-Linux-Demos/assets/153883841/78c5efee-15f3-4406-ab4d-13fd1182d20c" alt="contact" width="25"> Support
For any questions, issues, or feature requests, please contact our support team.

<div style="display: flex; align-items: center;">
<a target="_blank" href="mailto:hello@recognito.vision"><img src="https://img.shields.io/badge/email-hassan@recognito.vision-blue.svg?logo=gmail " alt="www.recognito.vision"></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://wa.me/+14158003112"><img src="https://img.shields.io/badge/whatsapp-+14158003112-blue.svg?logo=whatsapp " alt="www.recognito.vision"></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://t.me/recognito_vision"><img src="https://img.shields.io/badge/telegram-@recognito__vision-blue.svg?logo=telegram " alt="www.recognito.vision"></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="https://join.slack.com/t/recognito-workspace/shared_invite/zt-2d4kscqgn-"><img src="https://img.shields.io/badge/slack-recognito__workspace-blue.svg?logo=slack " alt="www.recognito.vision"></a>
</div>
<br/>
<p align="center">
&emsp;&emsp;<a href="https://recognito.vision" style="display: flex; align-items: center;"><img src="https://recognito.vision/wp-content/uploads/2024/03/recognito_64_cl.png" style="width: 32px; margin-right: 5px;"/></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.linkedin.com/company/recognito-vision" style="display: flex; align-items: center;"><img src="https://recognito.vision/wp-content/uploads/2024/03/linkedin_64_cl.png" style="width: 32px; margin-right: 5px;"/></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://huggingface.co/Recognito" style="display: flex; align-items: center;"><img src="https://recognito.vision/wp-content/uploads/2024/03/hf_64_cl.png" style="width: 32px; margin-right: 5px;"/></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://github.com/Recognito-Vision" style="display: flex; align-items: center;"><img src="https://recognito.vision/wp-content/uploads/2024/03/github_64_cl.png" style="width: 32px; margin-right: 5px;"/></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://hub.docker.com/u/recognito" style="display: flex; align-items: center;"><img src="https://recognito.vision/wp-content/uploads/2024/03/docker_64_cl.png" style="width: 32px; margin-right: 5px;"/></a>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.youtube.com/@Recognito-Ltd" style="display: flex; align-items: center;"><img src="https://recognito.vision/wp-content/uploads/2024/04/youtube_64_cl.png" style="width: 32px; margin-right: 5px;"/></a>
</p>

0 comments on commit 6e30f27

Please sign in to comment.