├── doc ├── playstoreIcon512.png ├── screenshot-dimred.png ├── screenshot-compare.png ├── screenshot-alignment.png └── playstorePresentationGraphic.png ├── media ├── .gitattributes ├── groups │ ├── G7_in_Biarritz_01.jpg │ ├── G7_in_Biarritz_02.jpg │ ├── Johnson_and_Trump.jpg │ ├── Obama_and_Biden.jpg │ ├── Obama_and_children.jpg │ ├── Biden_and_two_women.jpg │ ├── Barack_Obama_at_town_hall_in_Arnold.jpg │ └── Barack_Obama_and_Klaus_Iohannis_at_the_Blue_Room.jpg ├── portraits │ ├── Barack_Obama_01.jpg │ ├── Barack_Obama_02.jpg │ ├── Barack_Obama_03.jpg │ ├── John_F_Kennedy_01.jpg │ └── Elaine_Chao_at_the_Regional_Media_Day.jpg ├── lfw │ ├── Adam_Sandler │ │ ├── Adam_Sandler_0001.jpg │ │ ├── Adam_Sandler_0002.jpg │ │ ├── Adam_Sandler_0003.jpg │ │ └── Adam_Sandler_0004.jpg │ ├── Fidel_Castro │ │ ├── Fidel_Castro_0001.jpg │ │ ├── Fidel_Castro_0002.jpg │ │ ├── Fidel_Castro_0003.jpg │ │ ├── Fidel_Castro_0004.jpg │ │ ├── Fidel_Castro_0005.jpg │ │ ├── Fidel_Castro_0006.jpg │ │ ├── Fidel_Castro_0007.jpg │ │ ├── Fidel_Castro_0008.jpg │ │ ├── Fidel_Castro_0009.jpg │ │ ├── Fidel_Castro_0010.jpg │ │ ├── Fidel_Castro_0011.jpg │ │ ├── Fidel_Castro_0012.jpg │ │ ├── Fidel_Castro_0013.jpg │ │ ├── Fidel_Castro_0014.jpg │ │ ├── Fidel_Castro_0015.jpg │ │ ├── Fidel_Castro_0016.jpg │ │ ├── Fidel_Castro_0017.jpg │ │ └── Fidel_Castro_0018.jpg │ ├── George_W_Bush │ │ ├── George_W_Bush_0002.jpg │ │ ├── George_W_Bush_0010.jpg │ │ ├── George_W_Bush_0029.jpg │ │ ├── George_W_Bush_0040.jpg │ │ ├── George_W_Bush_0047.jpg │ │ ├── George_W_Bush_0098.jpg │ │ ├── George_W_Bush_0120.jpg │ │ ├── George_W_Bush_0130.jpg │ │ ├── George_W_Bush_0218.jpg │ │ ├── George_W_Bush_0335.jpg │ │ ├── George_W_Bush_0337.jpg │ │ ├── George_W_Bush_0347.jpg │ │ ├── George_W_Bush_0398.jpg │ │ ├── George_W_Bush_0437.jpg │ │ ├── George_W_Bush_0441.jpg │ │ ├── George_W_Bush_0442.jpg │ │ ├── George_W_Bush_0460.jpg │ │ └── George_W_Bush_0500.jpg │ ├── Roger_Moore │ │ ├── Roger_Moore_0001.jpg │ │ ├── Roger_Moore_0002.jpg │ │ ├── Roger_Moore_0003.jpg │ │ ├── Roger_Moore_0004.jpg │ │ └── Roger_Moore_0005.jpg │ ├── Angelina_Jolie │ │ ├── Angelina_Jolie_0001.jpg │ │ ├── Angelina_Jolie_0002.jpg │ │ ├── Angelina_Jolie_0003.jpg │ │ ├── Angelina_Jolie_0004.jpg │ │ ├── Angelina_Jolie_0005.jpg │ │ ├── Angelina_Jolie_0006.jpg │ │ ├── Angelina_Jolie_0007.jpg │ │ ├── Angelina_Jolie_0008.jpg │ │ ├── Angelina_Jolie_0009.jpg │ │ ├── Angelina_Jolie_0010.jpg │ │ ├── Angelina_Jolie_0011.jpg │ │ ├── Angelina_Jolie_0012.jpg │ │ ├── Angelina_Jolie_0013.jpg │ │ ├── Angelina_Jolie_0014.jpg │ │ ├── Angelina_Jolie_0015.jpg │ │ ├── Angelina_Jolie_0016.jpg │ │ ├── Angelina_Jolie_0017.jpg │ │ ├── Angelina_Jolie_0018.jpg │ │ ├── Angelina_Jolie_0019.jpg │ │ └── Angelina_Jolie_0020.jpg │ ├── Charles_Bronson │ │ ├── Charles_Bronson_0001.jpg │ │ ├── Charles_Bronson_0002.jpg │ │ └── Charles_Bronson_0003.jpg │ ├── George_HW_Bush │ │ ├── George_HW_Bush_0001.jpg │ │ ├── George_HW_Bush_0002.jpg │ │ ├── George_HW_Bush_0003.jpg │ │ ├── George_HW_Bush_0004.jpg │ │ ├── George_HW_Bush_0005.jpg │ │ ├── George_HW_Bush_0006.jpg │ │ ├── George_HW_Bush_0007.jpg │ │ ├── George_HW_Bush_0008.jpg │ │ ├── George_HW_Bush_0009.jpg │ │ ├── George_HW_Bush_0010.jpg │ │ ├── George_HW_Bush_0011.jpg │ │ ├── George_HW_Bush_0012.jpg │ │ └── George_HW_Bush_0013.jpg │ ├── Pierce_Brosnan │ │ ├── Pierce_Brosnan_0001.jpg │ │ ├── Pierce_Brosnan_0002.jpg │ │ ├── Pierce_Brosnan_0003.jpg │ │ ├── Pierce_Brosnan_0004.jpg │ │ ├── Pierce_Brosnan_0005.jpg │ │ ├── Pierce_Brosnan_0006.jpg │ │ ├── Pierce_Brosnan_0007.jpg │ │ ├── Pierce_Brosnan_0008.jpg │ │ ├── Pierce_Brosnan_0009.jpg │ │ ├── Pierce_Brosnan_0010.jpg │ │ ├── Pierce_Brosnan_0011.jpg │ │ ├── Pierce_Brosnan_0012.jpg │ │ ├── Pierce_Brosnan_0013.jpg │ │ ├── Pierce_Brosnan_0014.jpg │ │ └── Pierce_Brosnan_0015.jpg │ ├── Prince_Charles │ │ ├── Prince_Charles_0001.jpg │ │ ├── Prince_Charles_0002.jpg │ │ ├── Prince_Charles_0003.jpg │ │ ├── Prince_Charles_0004.jpg │ │ └── Prince_Charles_0005.jpg │ ├── Jennifer_Capriati │ │ ├── Jennifer_Capriati_0001.jpg │ │ ├── Jennifer_Capriati_0005.jpg │ │ ├── Jennifer_Capriati_0006.jpg │ │ ├── Jennifer_Capriati_0008.jpg │ │ ├── Jennifer_Capriati_0010.jpg │ │ ├── Jennifer_Capriati_0011.jpg │ │ ├── Jennifer_Capriati_0012.jpg │ │ ├── Jennifer_Capriati_0014.jpg │ │ ├── Jennifer_Capriati_0017.jpg │ │ ├── Jennifer_Capriati_0020.jpg │ │ ├── Jennifer_Capriati_0022.jpg │ │ ├── Jennifer_Capriati_0024.jpg │ │ ├── Jennifer_Capriati_0029.jpg │ │ ├── Jennifer_Capriati_0030.jpg │ │ ├── Jennifer_Capriati_0031.jpg │ │ ├── Jennifer_Capriati_0032.jpg │ │ ├── Jennifer_Capriati_0033.jpg │ │ ├── Jennifer_Capriati_0034.jpg │ │ ├── Jennifer_Capriati_0035.jpg │ │ ├── Jennifer_Capriati_0036.jpg │ │ ├── Jennifer_Capriati_0037.jpg │ │ ├── Jennifer_Capriati_0039.jpg │ │ ├── Jennifer_Capriati_0040.jpg │ │ └── Jennifer_Capriati_0042.jpg │ ├── Queen_Elizabeth_II │ │ ├── Queen_Elizabeth_II_0001.jpg │ │ ├── Queen_Elizabeth_II_0002.jpg │ │ ├── Queen_Elizabeth_II_0003.jpg │ │ ├── Queen_Elizabeth_II_0004.jpg │ │ ├── Queen_Elizabeth_II_0005.jpg │ │ ├── Queen_Elizabeth_II_0006.jpg │ │ ├── Queen_Elizabeth_II_0007.jpg │ │ ├── Queen_Elizabeth_II_0008.jpg │ │ ├── Queen_Elizabeth_II_0009.jpg │ │ ├── Queen_Elizabeth_II_0010.jpg │ │ ├── Queen_Elizabeth_II_0011.jpg │ │ ├── Queen_Elizabeth_II_0012.jpg │ │ └── Queen_Elizabeth_II_0013.jpg │ └── Dominique_de_Villepin │ │ ├── Dominique_de_Villepin_0001.jpg │ │ ├── Dominique_de_Villepin_0002.jpg │ │ ├── Dominique_de_Villepin_0003.jpg │ │ ├── Dominique_de_Villepin_0004.jpg │ │ ├── Dominique_de_Villepin_0005.jpg │ │ ├── Dominique_de_Villepin_0006.jpg │ │ ├── Dominique_de_Villepin_0007.jpg │ │ ├── Dominique_de_Villepin_0008.jpg │ │ ├── Dominique_de_Villepin_0009.jpg │ │ ├── Dominique_de_Villepin_0010.jpg │ │ ├── Dominique_de_Villepin_0011.jpg │ │ ├── Dominique_de_Villepin_0012.jpg │ │ ├── Dominique_de_Villepin_0013.jpg │ │ ├── Dominique_de_Villepin_0014.jpg │ │ └── Dominique_de_Villepin_0015.jpg ├── badges │ └── google-play │ │ └── en_badge_web_generic.png ├── deepinsight-targetpoints.opt.svg ├── person-fill-perspective-warped.opt.svg ├── logo.svg ├── logo-filled.svg ├── face-alignment.opt.svg ├── image-with-3people.opt.svg ├── person-fill-perspective-warped.svg ├── deepinsight-targetpoints.svg ├── face-alignment.svg └── image-with-3people.svg ├── src ├── BlazorFace.Maui │ ├── wwwroot │ │ ├── favicon.ico │ │ ├── css │ │ │ └── app.css │ │ └── index.html │ ├── Resources │ │ ├── Fonts │ │ │ └── OpenSans-Regular.ttf │ │ ├── AppIcon │ │ │ ├── appicon.svg │ │ │ └── appiconfg.svg │ │ ├── Raw │ │ │ └── AboutAssets.txt │ │ └── Splash │ │ │ └── splash_editable.svg │ ├── Properties │ │ └── launchSettings.json │ ├── Platforms │ │ ├── Android │ │ │ ├── Resources │ │ │ │ └── values │ │ │ │ │ └── colors.xml │ │ │ ├── AndroidManifest.xml │ │ │ ├── MainApplication.cs │ │ │ └── MainActivity.cs │ │ ├── iOS │ │ │ ├── AppDelegate.cs │ │ │ ├── Program.cs │ │ │ └── Info.plist │ │ ├── MacCatalyst │ │ │ ├── AppDelegate.cs │ │ │ ├── Program.cs │ │ │ └── Info.plist │ │ ├── Windows │ │ │ ├── App.xaml │ │ │ ├── app.manifest │ │ │ ├── App.xaml.cs │ │ │ └── Package.appxmanifest │ │ └── Tizen │ │ │ ├── Main.cs │ │ │ └── tizen-manifest.xml │ ├── _Imports.razor │ ├── MainPage.xaml.cs │ ├── MauiResourceOpener.cs │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── PRIVACY.md │ ├── App.xaml │ └── MauiProgram.cs ├── BlazorFace │ ├── Pages │ │ ├── Credits.razor │ │ ├── Applications │ │ │ ├── ProfilePicture.razor.css │ │ │ ├── Blur.razor │ │ │ └── ProfilePicture.razor │ │ └── Tutorial │ │ │ └── FaceDetection.razor │ ├── Components │ │ ├── DimReductionPlot.razor.css │ │ ├── Spinner.razor │ │ ├── ShowMore.razor │ │ ├── Progress.razor │ │ ├── HighlightedCode.razor │ │ ├── ImageCompareViewer.razor.js │ │ ├── Alert.razor │ │ ├── ShowMore.razor.css │ │ ├── TryOut │ │ │ ├── TryOutSteps.razor │ │ │ ├── AlignmentTryOut.razor │ │ │ ├── DetectionTryOut.razor │ │ │ ├── RecognitionTryOut.razor │ │ │ └── DirectComparisonTryOut.razor │ │ ├── ImageCompareViewer.razor │ │ ├── Bootstrap5Modal.razor │ │ ├── LfwIdentityChooser.razor │ │ ├── ExpandableEmbeddings.razor │ │ ├── Bootstrap5ModalBase.razor │ │ ├── Toc.razor │ │ ├── ChooseGalleryImageModal.razor │ │ ├── DimensionalityReductionDemo.razor │ │ └── EmbeddingGenerationDemo.razor │ ├── Shared │ │ ├── MainLayout.razor.css │ │ ├── LegalLayout.razor │ │ ├── GoBackLayout.razor │ │ ├── MultiChoiceRadio.razor │ │ └── MainLayout.razor │ ├── wwwroot │ │ ├── css │ │ │ └── open-iconic │ │ │ │ ├── font │ │ │ │ └── fonts │ │ │ │ │ ├── open-iconic.eot │ │ │ │ │ ├── open-iconic.otf │ │ │ │ │ ├── open-iconic.ttf │ │ │ │ │ └── open-iconic.woff │ │ │ │ └── ICON-LICENSE │ │ ├── bootstrap-icons-1.10.3 │ │ │ └── fonts │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ └── bootstrap-icons.woff2 │ │ ├── highlight.js-11.7.0 │ │ │ ├── languages │ │ │ │ ├── plaintext.min.js │ │ │ │ ├── shell.min.js │ │ │ │ ├── json.min.js │ │ │ │ ├── diff.min.js │ │ │ │ ├── markdown.min.js │ │ │ │ └── bash.min.js │ │ │ ├── styles │ │ │ │ ├── vs.min.css │ │ │ │ ├── vs2015.min.css │ │ │ │ └── default.min.css │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── Sources.md │ │ └── favicon.svg │ ├── appsettings.json │ ├── appsettings.Development.json │ ├── Services │ │ ├── IFileOpener.cs │ │ ├── IFilenameGrouper.cs │ │ ├── DefaultFileOpener.cs │ │ ├── SvgDrawer.cs │ │ └── CommonPrefixFilenameGrouper.cs │ ├── _Imports.razor │ ├── App.razor │ ├── DIPooledObjectPolicy.cs │ ├── Extensions │ │ ├── CollectionExtensions.cs │ │ └── GeometryExtensions.cs │ ├── Helper │ │ └── ColorEnumerator.cs │ ├── Media.cs │ └── BlazorFace.csproj ├── DirectoryListingSourceGenerator │ ├── DirectoryListingSourceGenerator.csproj │ └── SourceGenerationHelper.cs └── BlazorFace.Web │ ├── BlazorFace.Web.csproj │ ├── Pages │ ├── Error.cshtml.cs │ ├── Error.cshtml │ └── _Host.cshtml │ ├── Dockerfile │ ├── Properties │ └── launchSettings.json │ └── Program.cs ├── global.json ├── .github ├── dependabot.yml └── workflows │ ├── docker-build.yml │ ├── cron-docker-rebuild.yml │ ├── docker-build-and-push.yml │ └── maui.yml ├── version.json ├── .dockerignore ├── Directory.Build.targets ├── stylecop.json ├── nuget.config ├── LICENSE ├── THIRD-PARTY-NOTICES.TXT ├── Directory.Build.props └── .gitattributes /doc/playstoreIcon512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/georg-jung/explain-face-rec/HEAD/doc/playstoreIcon512.png -------------------------------------------------------------------------------- /doc/screenshot-dimred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/georg-jung/explain-face-rec/HEAD/doc/screenshot-dimred.png -------------------------------------------------------------------------------- /media/.gitattributes: -------------------------------------------------------------------------------- 1 | *.jpg filter=lfs diff=lfs merge=lfs -text 2 | *.png filter=lfs diff=lfs merge=lfs -text 3 | -------------------------------------------------------------------------------- /doc/screenshot-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/georg-jung/explain-face-rec/HEAD/doc/screenshot-compare.png -------------------------------------------------------------------------------- /doc/screenshot-alignment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/georg-jung/explain-face-rec/HEAD/doc/screenshot-alignment.png -------------------------------------------------------------------------------- /doc/playstorePresentationGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/georg-jung/explain-face-rec/HEAD/doc/playstorePresentationGraphic.png -------------------------------------------------------------------------------- /src/BlazorFace.Maui/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/georg-jung/explain-face-rec/HEAD/src/BlazorFace.Maui/wwwroot/favicon.ico -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "7.0.100", 4 | "rollForward": "latestMajor", 5 | "allowPrerelease": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/BlazorFace/Pages/Credits.razor: -------------------------------------------------------------------------------- 1 | @page "/Credits" 2 | @layout LegalLayout 3 | 4 |
4 | @ChildContent
5 |
6 |
7 | @code {
8 | [Parameter]
9 | public string LanguageClass { get; set; } = "";
10 |
11 | [Parameter]
12 | public RenderFragment? ChildContent { get; set; }
13 |
14 | private ElementReference _ref;
15 |
16 | protected override async Task OnAfterRenderAsync(bool firstRender)
17 | {
18 | if (firstRender)
19 | {
20 | await JS.InvokeVoidAsync("highlightElement", _ref);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Directory.Build.targets:
--------------------------------------------------------------------------------
1 | Sorry, there's nothing at this address.
11 |@Embeddings
21 | 2 | If you're writing your own application, you can use the exact same face detection, face landmarks detection and face alignment mechanisms that are used in the demo above from your own code. 3 | The following example uses C# as programming language and leverages the FaceAiSharp library. 4 |
5 |Program.cs file with the following code:aligned.jpg file in the same folder as the Program.cs file, which contains an aligned version of one of the faces in the photo.
31 |
24 | Request ID: @Model.RequestId
25 |
30 | Swapping to the Development environment displays detailed information about the error that occurred. 31 |
32 |33 | The Development environment shouldn't be enabled for deployed applications. 34 | It can result in displaying sensitive information from exceptions to end users. 35 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 36 | and restarting the app. 37 |
38 |2 | If you're writing your own application, you can use the exact same face detection mechanism that is used in the demo above from your own code. 3 | The following example uses C# as programming language and leverages the FaceAiSharp library. 4 |
5 |Program.cs file with the following code:2 | If you're writing your own application, you can use the exact same face recognition mechanism that is used in the demo above from your own code. 3 | The following example uses C# as programming language and leverages the FaceAiSharp library. 4 |
5 |Program.cs file with the following code:2 | If you're writing your own application, you can use the exact same face recognition mechanism that is used in the demo above from your own code. 3 | The following example uses C# as programming language and leverages the FaceAiSharp library. 4 |
5 |Program.cs file with the following code:7 | In the beginning, there is an image that we get as input. We know about it only simple parameters like the dimensions. We first have to find out whether there is a face at all or perhaps even several. If we have found faces, we know where they are located in the image, so that we can create appropriate crops. 8 |
9 |24 | Now that we've cropped the faces out of our input image, we can move on to face recognition, right? 25 | While we could do that, and it would work to a certain extent, there's one more step in the middle 26 | that will greatly improve our recognition result: Aligning the face. 27 |
28 | 29 |31 | Face recognition may be more impressive than just finding faces. Nevertheless, there are quite 32 | some useful practical applications that we can already implement at this point. To see what you 33 | can do with face detection only, check out some of our demos: 34 |
35 | 36 |