 The world's simplest facial recognition api for .NET This repository is porting https://github.com/ageitgey/face_recognition by C#. This package supports cross platform, Windows, Linux and MacOSX!! |Package|OS|x86|x64|ARM|ARM64|Nuget| |---|---|---|---|---|---|---| |FaceRecognitionDotNet (CPU)|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet)| ||OSX|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet)| |FaceRecognitionDotNet for CUDA 9.2|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA92)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA92)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA92)| |FaceRecognitionDotNet for CUDA 10.0|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA100)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA100)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA100)| |FaceRecognitionDotNet for CUDA 10.1|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA101)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA101)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA101)| |FaceRecognitionDotNet for CUDA 10.2|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA102)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA102)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA102)| |FaceRecognitionDotNet for CUDA 11.0|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA110)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA110)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA110)| |FaceRecognitionDotNet for CUDA 11.1|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA111)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA111)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA111)| |FaceRecognitionDotNet for CUDA 11.2|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA112)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA112)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.CUDA112)| |FaceRecognitionDotNet for Intel MKL|Windows|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.MKL)| ||Linux|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.MKL)| ||OSX|-|✓|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet.MKL)| |FaceRecognitionDotNet for ARM|Windows|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet-ARM)| ||Linux|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet-ARM)| ||OSX|-|-|-|-|[](https://www.nuget.org/packages/FaceRecognitionDotNet-ARM)| ##### :warning: FaceRecognitionDotNet for ARM is not tested yet ## Support API |face_recognition API|Corresponding API|Note| |----|----|:----| |batch_face_locations|BatchFaceLocations|| |compare_faces|CompareFaces|| |face_distance|FaceDistance|| |face_encodings|FaceEncodings|| |face_landmarks|FaceLandmarks|And support **Helen dataset** :warning:| |face_locations|FaceLocations|And support to get confidence and use custom face detector| |load_image_file|LoadImageFile|| |-|CropFaces|Crop image with specified locations| |-|EyeBlinkDetect|Detect person is blinking or not<br>Support Large model and **Helen dataset** :warning:| |-|LoadImage|From memory data or System.Drawing.Bitmap| |-|PredictAge|Predict human age.<br>Use **Adience Benchmark Of Unfiltered Faces For Gender And Age Classification dataset** :warning:| |-|PredictEmotion|Predict emotion for human face.<br>Use **Corrective re-annotation of FER - CK+ - KDEF** :warning:| |-|PredictGender|Predict human gender.<br>Use **UTKFace dataset** :warning:| |-|PredictProbabilityAge|Predict probability of human age.<br>Use **Adience Benchmark Of Unfiltered Faces For Gender And Age Classification dataset** :warning:| |-|PredictProbabilityEmotion|Predict probability of emotion from human face.<br>Use **Corrective re-annotation of FER - CK+ - KDEF** :warning:| |-|PredictProbabilityGender|Predict probability of human gender.<br>Use **UTKFace dataset** :warning:| |-|PredictHeadPose|Predict human head pose.<br>Use **300W-LP dataset** :warning:| ##### :warning: Warning You must train dataset by yourself. I will **NOT** provide pretrained model file due to avoiding license issue. You can check the following examples to train dataset. * tools/AgeTraining * tools/EmotionTraining * tools/EmotionTrainingV2 * tools/GenderTraining * tools/HeadPoseTraining * tools/HelenTraining ## Demo #### Face Recognition <img src="images/1.png" width="480"/> <img src="images/2.png" width="480"/> #### Other Face Functions |Face Landmark|Age and Gender Classification|Head Pose Estimation|Emotion Estimation| |---|---|---|---| |<img src="images/3.jpg" width="240"/>|<img src="examples/CustomClassificationDemo/images/result.png" width="240"/>|<img src="images/4.png" width="240"/>|<img src="images/5.jpg" width="240"/>| ## Document FaceRecognitionDotNet support full xml document for Visual Studio. A xml document is written English and Japanese. And you can check online document at [FaceRecognitionDotNet API Document](https://taktak.jp/FaceRecognitionDotNet/) ## Dependencies Libraries and Products #### [face_recognition](https://github.com/ageitgey/face_recognition/) > **License:** The MIT License > > **Author:** Adam Geitgey > > **Principal Use:** The world's simplest facial recognition api for Python and the command line. Main goal of FaceRecognitionDotNet is what ports face_recognition by C#. #### [face_recognition_models](https://github.com/ageitgey/face_recognition_models/) > **License:** Creative Commons Zero v1.0 Universal License > > **Author:** Adam Geitgey > > **Principal Use:** Trained models for the face_recognition python library #### [dlib](http://dlib.net/) > **License:** Boost Software License > > **Author:** Davis E. King > > **Principal Use:** A toolkit for making real world machine learning and data analysis applications in C++. #### [DlibDotNet](https://github.com/takuya-takeuchi/DlibDotNet/) > **License:** The MIT License > > **Author:** Takuya Takeuchi > > **Principal Use:** Use dlib interface via .NET. This library is developed by this owner. #### [OpenCVSharp](https://github.com/shimat/opencvsharp/) > **License:** The BSD 3-Clause License > > **Author:** shimat > > **Principal Use:** Loading image data by opencv wrapper for example