From 7b885940b540a06684786657f7f63698d68867a6 Mon Sep 17 00:00:00 2001
From: Vedrana KRIVOKUCA <vkrivokuca@italix32.idiap.ch>
Date: Wed, 10 May 2017 11:14:21 +0200
Subject: [PATCH] Changed all mention of "verification" to the more general
 term "recognition"

---
 doc/experiments.rst                          |  66 +++++++++----------
 doc/img/bio_rec_sys.odg                      | Bin 0 -> 13078 bytes
 doc/img/{bio_ver_sys.svg => bio_rec_sys.svg} |  62 ++++++++---------
 doc/img/bio_ver_sys.odg                      | Bin 13207 -> 0 bytes
 4 files changed, 60 insertions(+), 68 deletions(-)
 create mode 100644 doc/img/bio_rec_sys.odg
 rename doc/img/{bio_ver_sys.svg => bio_rec_sys.svg} (92%)
 delete mode 100644 doc/img/bio_ver_sys.odg

diff --git a/doc/experiments.rst b/doc/experiments.rst
index 492a76d3..3ce1e9fd 100644
--- a/doc/experiments.rst
+++ b/doc/experiments.rst
@@ -5,47 +5,45 @@
 .. _bob.bio.base.experiments:
 
 
-===========================================
-Running Biometric Verification Experiments
-===========================================
+==========================================
+Running Biometric Recognition Experiments
+==========================================
 
-Now, you are almost ready to run your first biometric verification experiment.
+Now, you are almost ready to run your first biometric recognition experiment.
 Just a little bit of theory, and then: off we go.
 
-Structure of a Biometric Verification System
------------------------------------------------
+Structure of a Biometric Recognition System
+--------------------------------------------
 
-"Biometric verification" refers to the process of confirming that an invidual is who they say they are, 
-based on their biometric data.  This implies that we have access to both the person's biometric data and 
-their identity (e.g., a numerical ID, name, etc.).
+"Biometric recognition" refers to the process of establishing a person's identity based on their biometric data.
 
-A biometric verification system has two stages: 
+A biometric recognition system has two stages: 
 
-1. **Enrollment:** A person's biometric data is added to the system's biometric database alongside the person's ID.
-2. **Verification:** A person's biometric data is compared to the biometric data with the same ID in the system database, and a match score is generated.  The match score tells us how similar the two biometric samples are.  Based on a match threshold, we then decide whether or not the two biometric samples come from the same person (ID).
+1. **Enrollment:** A person's biometric data is added to the system's biometric database.
+2. **Recognition:** A person's newly acquired biometric data is compared to the biometric data in the system database, and a match score is generated.  The match score tells us how similar the two biometric samples are.  Based on a match threshold, we then decide whether or not the two biometric samples come from the same person.
 
-Fig. 1 shows the enrollment and verification stages in a typical biometric verification system:
+Fig. 1 shows the enrollment and recognition stages in a typical biometric recognition system:
 
-.. figure:: /img/bio_ver_sys.svg
+.. figure:: /img/bio_rec_sys.svg
    :align: center
 
-   Enrollment and verification in a typical biometric verification system.
+   Enrollment and recognition in a typical biometric recognition system.
 
 * The "Pre-processor" cleans up the raw biometric data to make recognition easier (e.g., crops the face image to get rid of the background).
 * The "Feature Extractor" extracts the most important features for recognition, from the pre-processed biometric data.
-* The "Template Database" stores each person's extracted feature set (often referred to as a "template") along with their user ID.
-* The "Matcher" compares a new biometric feature set to the template in the database that has the same user ID, and outputs a similarity score.
-* The "Decision Maker" decides whether or not the new biometric sample and the template from the database match, based on whether the similarity score is above or below a pre-defined match threshold. 
+* The "Template Database" stores each person's extracted feature set (often referred to as a "template") in the system database, typically alongside the person's ID.
+* The "Matcher" compares a new biometric feature set to one or more templates in the database, and outputs a similarity score for each comparison.
+* The "Decision Maker" decides whether or not the new biometric sample and the template from the database match, based on whether the similarity score is above or below a pre-defined match threshold, thereby establishing the person's identity. 
 
 
-Biometric Verification Experiments in bob.bio.base
+Biometric Recognition Experiments in bob.bio.base
 --------------------------------------------------
 
-In general, the goal of a biometric verification experiment is to quantify the verification accuracy of a biometric verification system, i.e., we wish to find out how good the system is at deciding whether a person is who they claim to be, based on their biometric data.
+In general, the goal of a biometric recognition experiment is to quantify the recognition accuracy of a biometric recognition system, i.e., we wish to find out how good the system is at deciding whether or not two biometric samples come from the same person.
 
-To conduct a biometric verification experiment, we need biometric data.  So, we use a biometric database.  A biometric database generally consists of multiple samples of a particular biometric, from multiple people.  For example, a face database could contain 5 different images of a person's face, from 100 people.  We then simulate "genuine" verification attempts by comparing each person's biometric samples to their other samples.  We simulate "impostor" verification attempts by comparing biometric samples across different people.
+To conduct a biometric recognition experiment, we need biometric data.  So, we use a biometric database.  A biometric database generally consists of multiple samples of a particular biometric, from multiple people.  For example, a face database could contain 5 different images of a person's face, from 100 people.  We then simulate "genuine" recognition attempts by comparing each person's biometric samples to their other samples.  We simulate "impostor" recognition attempts by comparing biometric samples across different people.
 
-In bob.bio.base, biometric verification experiments are split up into four main stages, similar to the stages in a typical biometric verification system as illustrated in Fig. 1:
+In bob.bio.base, biometric recognition experiments are split up into four main stages, similar to the stages in a typical biometric recognition system as illustrated in Fig. 1:
 
 1. Data preprocessing
 2. Feature extraction
@@ -56,14 +54,14 @@ Each of these stages is discussed below:
 
 *Data Preprocessing:*
 
-Biometric measurements are often noisy, containing redundant information that is not necessary (and can be misleading) for verification.  For example, face images contain non-face background information, vein images can be unevenly illuminated, speech signals can be littered with background noise, etc.  The aim of the data preprocessing stage is to clean up the raw biometric data so that it is in the best possible state to make verification easier.  For example, biometric data is cropped from the background, the images are photometrically enhanced, etc.
+Biometric measurements are often noisy, containing redundant information that is not necessary (and can be misleading) for recognition.  For example, face images contain non-face background information, vein images can be unevenly illuminated, speech signals can be littered with background noise, etc.  The aim of the data preprocessing stage is to clean up the raw biometric data so that it is in the best possible state to make recognition easier.  For example, biometric data is cropped from the background, the images are photometrically enhanced, etc.
 
 All the biometric samples in the input biometric database go through the preprocessing stage.  The results are stored in a directory entitled "preprocessed".  This process is illustrated in Fig. 2:
 
 .. figure:: /img/preprocessor.svg
    :align: center
 
-   Preprocessing stage in bob.bio.base's biometric verification experiment framework.
+   Preprocessing stage in bob.bio.base's biometric recognition experiment framework.
 
 
 *Feature Extraction:*
@@ -75,7 +73,7 @@ All the biometric features stored in the "preprocessed" directory go through the
 .. figure:: /img/extractor.svg
    :align: center
 
-   Feature extraction stage in bob.bio.base's biometric verification experiment framework.
+   Feature extraction stage in bob.bio.base's biometric recognition experiment framework.
 
 Note that there is sometimes a feature extractor training stage prior to the feature extraction (to help the extractor learn which features to extract), but this is not always the case.
 
@@ -87,43 +85,43 @@ The matching stage in bob.bio.base is referred to as the "Algorithm".  Fig. 4 il
 .. figure:: /img/algorithm.svg
    :align: center
 
-   Algorithm (matching) stage in bob.bio.base's biometric verification experiment framework.
+   Algorithm (matching) stage in bob.bio.base's biometric recognition experiment framework.
 
 From Fig. 4, we can see that the Algorithm stage consists of three main parts: 
 
-(i) An optional "projection" stage after the feature extraction.  This would be used if, for example, you wished to project your extracted biometric features into a lower-dimensional subspace prior to verification.
+(i) An optional "projection" stage after the feature extraction.  This would be used if, for example, you wished to project your extracted biometric features into a lower-dimensional subspace prior to recognition.
 
-(ii) Enrollment: The enrollment part of the Algorithm stage essentially works as follows.  One or more biometric samples per person is used to compute a representative "model" for that person.  This is the same as the "template" in our illustration of a typical biometric verification system in Fig. 1 and it essentially represents that person's identity.  To determine which of a person's biometric samples should be used to generate their model, we query our input biometric database.  The model is then calculated using the corresponding biometric features extracted in the Feature Extraction stage (or, optionally, our "projected" features).  Fig. 5 illustrates the enrollment part of the Algorithm module:
+(ii) Enrollment: The enrollment part of the Algorithm stage essentially works as follows.  One or more biometric samples per person is used to compute a representative "model" for that person.  This is the same as the "template" in our illustration of a typical biometric recognition system in Fig. 1 and it essentially represents that person's identity.  To determine which of a person's biometric samples should be used to generate their model, we query our input biometric database.  The model is then calculated using the corresponding biometric features extracted in the Feature Extraction stage (or, optionally, our "projected" features).  Fig. 5 illustrates the enrollment part of the Algorithm module:
 
 .. figure:: /img/algorithm_enrollment.svg
    :align: center
 
-   The enrollment part of the Algorithm stage in bob.bio.base's biometric verification experiment framework.
+   The enrollment part of the Algorithm stage in bob.bio.base's biometric recognition experiment framework.
 
 Note that there is sometimes a model enroller training stage prior to enrollment.  This is only necessary when you are trying to fit an existing model to a set of biometric features, e.g., fitting a UBM to features extracted from a speech signal.  In other cases, the model is calculated from the features themselves, e.g., by averaging the feature vectors from multiple samples of the same biometric, in which case model enroller training is not necessary.
 
 
-(iii) Scoring: The scoring part of the Algorithm stage essentially works as follows.  Each model is associated with a number of "probes".  In a biometric verification system, a probe is a biometric sample acquired during the verification stage (as opposed to the sample acquired during enrollment).  In the Scoring stage, we first query the input biometric database to determine which biometric samples should be used as the probes for each model.  Every model is then compared to its associated probes (some of which come from the same person, and some of which come from different people), and a score is calculated for each comparison.  The score may be a distance, and it tells us how similar or dissimilar the model and probe biometrics are.  Ideally, if the model and probe come from the same biometric (e.g., two images of the same finger), they should be very similar, and if they come from different biometrics (e.g., two images of different fingers) then they should be very different.  Fig. 6 illustrates the scoring part of the Algorithm module:
+(iii) Scoring: The scoring part of the Algorithm stage essentially works as follows.  Each model is associated with a number of "probes".  In a biometric verification system, a probe is a biometric sample acquired during the recognition stage (as opposed to the sample acquired during enrollment).  In the Scoring stage, we first query the input biometric database to determine which biometric samples should be used as the probes for each model.  Every model is then compared to its associated probes (some of which come from the same person, and some of which come from different people), and a score is calculated for each comparison.  The score may be a distance, and it tells us how similar or dissimilar the model and probe biometrics are.  Ideally, if the model and probe come from the same biometric (e.g., two images of the same finger), they should be very similar, and if they come from different biometrics (e.g., two images of different fingers) then they should be very different.  Fig. 6 illustrates the scoring part of the Algorithm module:
 
 .. figure:: /img/algorithm_scoring.svg
    :align: center
 
-   The scoring part of the Algorithm stage in bob.bio.base's biometric verification experiment framework.
+   The scoring part of the Algorithm stage in bob.bio.base's biometric recognition experiment framework.
  
 
 *Decision Making:*
 
-The decision making stage in bob.bio.base is referred to as "Evaluation".  The aim of this stage is to make a decision as to whether each score calculated in the Matching stage indicates a "Match" or "No Match" between the particular model and probe biometrics.  Once a decision has been made for each score, we can quantify the overall performance of the particular biometric verification system in terms of common metrics like the False Match Rate (FMR), False Non Match Rate (FNMR), and Equal Error Rate (EER).  We can also view a visual representation of the performance in terms of plots like the Receiver Operating Characteristic (ROC) and Detection Error Trade-off (DET).  Fig. 7 illustrates the Evaluation stage:
+The decision making stage in bob.bio.base is referred to as "Evaluation".  The aim of this stage is to make a decision as to whether each score calculated in the Matching stage indicates a "Match" or "No Match" between the particular model and probe biometrics.  Once a decision has been made for each score, we can quantify the overall performance of the particular biometric recognition system in terms of common metrics like the False Match Rate (FMR), False Non Match Rate (FNMR), and Equal Error Rate (EER).  We can also view a visual representation of the performance in terms of plots like the Receiver Operating Characteristic (ROC) and Detection Error Trade-off (DET).  Fig. 7 illustrates the Evaluation stage:
 
 .. figure:: /img/evaluation.svg
    :align: center
 
-   Evaluation stage in bob.bio.base's biometric verification experiment framework.
+   Evaluation stage in bob.bio.base's biometric recognition experiment framework.
 
 
 *Notes:*
 
-* The communication between any two steps in the verification framework is file-based, usually using a binary HDF5_ interface, which is implemented in the :py:class:`bob.io.base.HDF5File` class.
+* The communication between any two steps in the recognition framework is file-based, usually using a binary HDF5_ interface, which is implemented in the :py:class:`bob.io.base.HDF5File` class.
 * The output of one step usually serves as the input of the subsequent step(s), as portrayed in Fig. 2 -- Fig. 7.
 * ``bob.bio`` ensures that the correct files are always forwarded to the subsequent steps.  For example, if you choose to implement a feature projection after the feature extraction stage, as illustrated in Fig. 4, ``bob.bio`` will make sure that the files in the "projected" directory are passed on as the input to the Enrollment stage; otherwise, the "extracted" directory will become the input to the Enrollment stage.
 
diff --git a/doc/img/bio_rec_sys.odg b/doc/img/bio_rec_sys.odg
new file mode 100644
index 0000000000000000000000000000000000000000..c9d385a01c94f64d2f5a2c8e6b9fe75c97175e29
GIT binary patch
literal 13078
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%0DOv%f@(2Xf#&_FsLD{M$>vl<rnQx;Wjte2Fh6oSO
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

literal 0
HcmV?d00001

diff --git a/doc/img/bio_ver_sys.svg b/doc/img/bio_rec_sys.svg
similarity index 92%
rename from doc/img/bio_ver_sys.svg
rename to doc/img/bio_rec_sys.svg
index 941fdac2..278770c0 100644
--- a/doc/img/bio_ver_sys.svg
+++ b/doc/img/bio_rec_sys.svg
@@ -26,14 +26,14 @@
    <glyph unicode="k" horiz-adv-x="920" d="M 816,0 L 450,494 318,385 318,0 138,0 138,1484 318,1484 318,557 793,1082 1004,1082 565,617 1027,0 816,0 Z"/>
    <glyph unicode="i" horiz-adv-x="190" d="M 137,1312 L 137,1484 317,1484 317,1312 137,1312 Z M 137,0 L 137,1082 317,1082 317,0 137,0 Z"/>
    <glyph unicode="h" horiz-adv-x="893" d="M 317,897 C 356,968 402,1020 457,1053 511,1086 580,1102 663,1102 780,1102 867,1073 923,1015 978,956 1006,858 1006,721 L 1006,0 825,0 825,686 C 825,762 818,819 804,856 790,893 767,920 735,937 703,954 659,963 602,963 517,963 450,934 399,875 348,816 322,737 322,638 L 322,0 142,0 142,1484 322,1484 322,1098 C 322,1057 321,1015 319,972 316,929 315,904 314,897 L 317,897 Z"/>
-   <glyph unicode="f" horiz-adv-x="568" d="M 361,951 L 361,0 181,0 181,951 29,951 29,1082 181,1082 181,1204 C 181,1303 203,1374 246,1417 289,1460 356,1482 445,1482 495,1482 537,1478 572,1470 L 572,1333 C 542,1338 515,1341 492,1341 446,1341 413,1329 392,1306 371,1283 361,1240 361,1179 L 361,1082 572,1082 572,951 361,951 Z"/>
+   <glyph unicode="g" horiz-adv-x="947" d="M 548,-425 C 430,-425 336,-402 266,-356 196,-309 151,-243 131,-158 L 312,-132 C 324,-182 351,-220 392,-248 433,-274 486,-288 553,-288 732,-288 822,-183 822,27 L 822,201 820,201 C 786,132 739,80 680,45 621,10 551,-8 472,-8 339,-8 242,36 180,124 117,212 86,350 86,539 86,730 120,872 187,963 254,1054 355,1099 492,1099 569,1099 635,1082 692,1047 748,1012 791,962 822,897 L 824,897 C 824,917 825,952 828,1001 831,1050 833,1077 836,1082 L 1007,1082 C 1003,1046 1001,971 1001,858 L 1001,31 C 1001,-273 850,-425 548,-425 Z M 822,541 C 822,629 810,705 786,769 762,832 728,881 685,915 641,948 591,965 536,965 444,965 377,932 335,865 293,798 272,690 272,541 272,393 292,287 331,222 370,157 438,125 533,125 590,125 640,142 684,175 728,208 762,256 786,319 810,381 822,455 822,541 Z"/>
    <glyph unicode="e" horiz-adv-x="974" d="M 276,503 C 276,379 302,283 353,216 404,149 479,115 578,115 656,115 719,131 766,162 813,193 844,233 861,281 L 1019,236 C 954,65 807,-20 578,-20 418,-20 296,28 213,123 129,218 87,360 87,548 87,727 129,864 213,959 296,1054 416,1102 571,1102 889,1102 1048,910 1048,527 L 1048,503 276,503 Z M 862,641 C 852,755 823,838 775,891 727,943 658,969 568,969 481,969 412,940 361,882 310,823 282,743 278,641 L 862,641 Z"/>
    <glyph unicode="c" horiz-adv-x="893" d="M 275,546 C 275,402 298,295 343,226 388,157 457,122 548,122 612,122 666,139 709,173 752,206 778,258 788,328 L 970,328 C 956,222 912,138 837,75 762,12 668,-20 553,-20 402,-20 286,28 207,124 127,219 87,359 87,542 87,724 127,863 207,959 287,1054 402,1102 551,1102 662,1102 754,1073 827,1016 900,959 945,880 964,779 L 779,765 C 770,825 746,873 708,908 670,943 616,961 546,961 451,961 382,929 339,866 296,803 275,696 275,546 Z"/>
    <glyph unicode="b" horiz-adv-x="974" d="M 1053,546 C 1053,169 920,-20 655,-20 573,-20 505,-5 451,25 396,54 352,102 318,168 L 316,168 C 316,147 315,116 312,74 309,31 307,7 306,0 L 132,0 C 136,36 138,110 138,223 L 138,1484 318,1484 318,1061 C 318,1018 317,967 314,908 L 318,908 C 351,977 396,1027 451,1057 506,1087 574,1102 655,1102 792,1102 892,1056 957,964 1021,872 1053,733 1053,546 Z M 864,540 C 864,691 844,800 804,865 764,930 699,963 609,963 508,963 434,928 388,859 341,790 318,680 318,529 318,387 341,282 386,215 431,147 505,113 607,113 698,113 763,147 804,214 844,281 864,389 864,540 Z"/>
    <glyph unicode="a" horiz-adv-x="1082" d="M 414,-20 C 305,-20 224,9 169,67 114,124 87,204 87,304 87,417 124,504 198,564 271,625 390,655 554,655 L 797,655 797,715 C 797,804 778,868 741,907 704,946 645,965 565,965 484,965 426,951 389,924 352,897 330,853 323,793 L 135,810 C 166,1005 310,1102 569,1102 705,1102 807,1071 876,1009 945,946 979,856 979,738 L 979,272 C 979,219 986,179 1000,152 1014,125 1041,111 1080,111 1097,111 1117,113 1139,118 L 1139,6 C 1094,-5 1047,-10 1000,-10 933,-10 885,8 855,43 824,78 807,132 803,207 L 797,207 C 751,124 698,66 637,32 576,-3 501,-20 414,-20 Z M 455,115 C 521,115 580,130 631,160 682,189 723,230 753,282 782,334 797,388 797,443 L 797,531 600,531 C 515,531 451,523 408,507 364,491 330,466 307,432 284,399 272,355 272,300 272,241 288,196 320,163 351,131 396,115 455,115 Z"/>
-   <glyph unicode="V" horiz-adv-x="1379" d="M 782,0 L 584,0 9,1409 210,1409 600,417 684,168 768,417 1156,1409 1357,1409 782,0 Z"/>
    <glyph unicode="T" horiz-adv-x="1190" d="M 720,1253 L 720,0 530,0 530,1253 46,1253 46,1409 1204,1409 1204,1253 720,1253 Z"/>
    <glyph unicode="S" horiz-adv-x="1217" d="M 1272,389 C 1272,259 1221,158 1120,87 1018,16 875,-20 690,-20 347,-20 148,99 93,338 L 278,375 C 299,290 345,228 414,189 483,149 578,129 697,129 820,129 916,150 983,193 1050,235 1083,297 1083,379 1083,425 1073,462 1052,491 1031,520 1001,543 963,562 925,581 880,596 827,609 774,622 716,635 652,650 541,675 456,699 399,724 341,749 295,776 262,807 229,837 203,872 186,913 168,954 159,1000 159,1053 159,1174 205,1267 298,1332 390,1397 522,1430 694,1430 854,1430 976,1406 1061,1357 1146,1308 1205,1224 1239,1106 L 1051,1073 C 1030,1148 991,1202 933,1236 875,1269 795,1286 692,1286 579,1286 493,1267 434,1230 375,1193 345,1137 345,1063 345,1020 357,984 380,956 403,927 436,903 479,884 522,864 609,840 738,811 781,801 825,791 868,781 911,770 952,758 991,744 1030,729 1067,712 1102,693 1136,674 1166,650 1191,622 1216,594 1236,561 1251,523 1265,485 1272,440 1272,389 Z"/>
+   <glyph unicode="R" horiz-adv-x="1244" d="M 1164,0 L 798,585 359,585 359,0 168,0 168,1409 831,1409 C 990,1409 1112,1374 1199,1303 1285,1232 1328,1133 1328,1006 1328,901 1298,813 1237,742 1176,671 1091,626 984,607 L 1384,0 1164,0 Z M 1136,1004 C 1136,1086 1108,1149 1053,1192 997,1235 917,1256 812,1256 L 359,1256 359,736 820,736 C 921,736 999,760 1054,807 1109,854 1136,919 1136,1004 Z"/>
    <glyph unicode="P" horiz-adv-x="1109" d="M 1258,985 C 1258,852 1215,746 1128,667 1041,588 922,549 773,549 L 359,549 359,0 168,0 168,1409 761,1409 C 919,1409 1041,1372 1128,1298 1215,1224 1258,1120 1258,985 Z M 1066,983 C 1066,1165 957,1256 738,1256 L 359,1256 359,700 746,700 C 959,700 1066,794 1066,983 Z"/>
    <glyph unicode="N" horiz-adv-x="1163" d="M 1082,0 L 328,1200 333,1103 338,936 338,0 168,0 168,1409 390,1409 1152,201 C 1144,332 1140,426 1140,485 L 1140,1409 1312,1409 1312,0 1082,0 Z"/>
    <glyph unicode="M" horiz-adv-x="1406" d="M 1366,0 L 1366,940 C 1366,1044 1369,1144 1375,1240 1342,1121 1313,1027 1287,960 L 923,0 789,0 420,960 364,1130 331,1240 334,1129 338,940 338,0 168,0 168,1409 419,1409 794,432 C 807,393 820,351 833,306 845,261 853,228 857,208 862,235 874,275 891,330 908,384 919,418 925,432 L 1293,1409 1538,1409 1538,0 1366,0 Z"/>
@@ -48,7 +48,7 @@
   </font>
  </defs>
  <defs class="TextShapeIndex">
-  <g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29 id30 id31 id32 id33 id34 id35 id36 id37 id38 id39 id40 id41 id42 id43 id44 id45"/>
+  <g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11 id12 id13 id14 id15 id16 id17 id18 id19 id20 id21 id22 id23 id24 id25 id26 id27 id28 id29 id30 id31 id32 id33 id34 id35 id36 id37 id38 id39 id40 id41 id42 id43 id44"/>
  </defs>
  <defs class="EmbeddedBulletChars">
   <g id="bullet-char-template(57356)" transform="scale(0.00048828125,-0.00048828125)">
@@ -91,31 +91,31 @@
       <g class="Group">
        <g class="com.sun.star.drawing.CustomShape">
         <g id="id3">
-         <rect class="BoundingBox" stroke="none" fill="none" x="16355" y="4398" width="1248" height="1249"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16978,4399 C 17330,4399 17600,4668 17600,5021 17600,5374 17330,5644 16978,5644 16626,5644 16356,5374 16356,5021 16356,4668 16626,4399 16978,4399 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16356,4399 L 16356,4399 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 17601,5645 L 17601,5645 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16776,4724 C 16808,4724 16833,4771 16833,4831 16833,4891 16808,4938 16776,4938 16744,4938 16719,4891 16719,4831 16719,4771 16744,4724 16776,4724 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16356,4399 L 16356,4399 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 17601,5645 L 17601,5645 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 17178,4724 C 17210,4724 17235,4771 17235,4831 17235,4891 17210,4938 17178,4938 17146,4938 17121,4891 17121,4831 17121,4771 17146,4724 17178,4724 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16356,4399 L 16356,4399 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 17601,5645 L 17601,5645 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16636,5236 C 16856,5467 17100,5467 17320,5236"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 16356,4399 L 16356,4399 Z"/>
-         <path fill="none" stroke="rgb(0,0,204)" d="M 17601,5645 L 17601,5645 Z"/>
+         <rect class="BoundingBox" stroke="none" fill="none" x="16455" y="4398" width="1248" height="1249"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 17078,4399 C 17430,4399 17700,4668 17700,5021 17700,5374 17430,5644 17078,5644 16726,5644 16456,5374 16456,5021 16456,4668 16726,4399 17078,4399 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 16456,4399 L 16456,4399 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 17701,5645 L 17701,5645 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 16876,4724 C 16908,4724 16933,4771 16933,4831 16933,4891 16908,4938 16876,4938 16844,4938 16819,4891 16819,4831 16819,4771 16844,4724 16876,4724 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 16456,4399 L 16456,4399 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 17701,5645 L 17701,5645 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 17278,4724 C 17310,4724 17335,4771 17335,4831 17335,4891 17310,4938 17278,4938 17246,4938 17221,4891 17221,4831 17221,4771 17246,4724 17278,4724 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 16456,4399 L 16456,4399 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 17701,5645 L 17701,5645 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 16736,5236 C 16956,5467 17200,5467 17420,5236"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 16456,4399 L 16456,4399 Z"/>
+         <path fill="none" stroke="rgb(0,0,204)" d="M 17701,5645 L 17701,5645 Z"/>
         </g>
        </g>
        <g class="com.sun.star.drawing.CustomShape">
         <g id="id4">
-         <rect class="BoundingBox" stroke="none" fill="none" x="16123" y="4223" width="1656" height="1656"/>
-         <path fill="none" stroke="rgb(255,255,255)" stroke-width="353" stroke-linejoin="round" d="M 16950,4400 C 17318,4400 17600,4682 17600,5050 17600,5418 17318,5700 16950,5700 16582,5700 16300,5418 16300,5050 16300,4682 16582,4400 16950,4400 Z"/>
+         <rect class="BoundingBox" stroke="none" fill="none" x="16223" y="4223" width="1656" height="1656"/>
+         <path fill="none" stroke="rgb(255,255,255)" stroke-width="353" stroke-linejoin="round" d="M 17050,4400 C 17418,4400 17700,4682 17700,5050 17700,5418 17418,5700 17050,5700 16682,5700 16400,5418 16400,5050 16400,4682 16682,4400 17050,4400 Z"/>
         </g>
        </g>
        <g class="com.sun.star.drawing.CustomShape">
         <g id="id5">
-         <rect class="BoundingBox" stroke="none" fill="none" x="16294" y="4194" width="1514" height="1514"/>
-         <path fill="none" stroke="rgb(255,255,255)" stroke-width="212" stroke-linejoin="round" d="M 17050,4300 C 17418,4300 17700,4582 17700,4950 17700,5318 17418,5600 17050,5600 16682,5600 16400,5318 16400,4950 16400,4582 16682,4300 17050,4300 Z"/>
+         <rect class="BoundingBox" stroke="none" fill="none" x="16394" y="4194" width="1514" height="1514"/>
+         <path fill="none" stroke="rgb(255,255,255)" stroke-width="212" stroke-linejoin="round" d="M 17150,4300 C 17518,4300 17800,4582 17800,4950 17800,5318 17518,5600 17150,5600 16782,5600 16500,5318 16500,4950 16500,4582 16782,4300 17150,4300 Z"/>
         </g>
        </g>
       </g>
@@ -250,8 +250,8 @@
       </g>
       <g class="com.sun.star.drawing.TextShape">
        <g id="id22">
-        <rect class="BoundingBox" stroke="none" fill="none" x="4100" y="12238" width="4201" height="963"/>
-        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="4350" y="12939"><tspan fill="rgb(0,0,0)" stroke="none">= Verification</tspan></tspan></tspan></text>
+        <rect class="BoundingBox" stroke="none" fill="none" x="4100" y="12238" width="4501" height="963"/>
+        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="635px" font-weight="400"><tspan class="TextPosition" x="4350" y="12939"><tspan fill="rgb(0,0,0)" stroke="none">= Recognition</tspan></tspan></tspan></text>
        </g>
       </g>
       <g class="Group">
@@ -458,26 +458,20 @@
       </g>
       <g class="com.sun.star.drawing.TextShape">
        <g id="id42">
-        <rect class="BoundingBox" stroke="none" fill="none" x="1400" y="2300" width="1601" height="684"/>
-        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="388px" font-weight="400"><tspan class="TextPosition" x="1779" y="2776"><tspan fill="rgb(0,0,204)" stroke="none">John</tspan></tspan></tspan></text>
+        <rect class="BoundingBox" stroke="none" fill="none" x="1500" y="2300" width="1501" height="726"/>
+        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="423px" font-weight="400"><tspan class="TextPosition" x="1789" y="2810"><tspan fill="rgb(0,0,204)" stroke="none">John</tspan></tspan></tspan></text>
        </g>
       </g>
       <g class="com.sun.star.drawing.TextShape">
        <g id="id43">
-        <rect class="BoundingBox" stroke="none" fill="none" x="1400" y="6117" width="1601" height="684"/>
-        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="388px" font-weight="400"><tspan class="TextPosition" x="1779" y="6593"><tspan fill="rgb(255,51,51)" stroke="none">John</tspan></tspan></tspan></text>
+        <rect class="BoundingBox" stroke="none" fill="none" x="17400" y="4575" width="1501" height="726"/>
+        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="423px" font-weight="400"><tspan class="TextPosition" x="17689" y="5085"><tspan fill="rgb(0,0,204)" stroke="none">John</tspan></tspan></tspan></text>
        </g>
       </g>
       <g class="com.sun.star.drawing.TextShape">
        <g id="id44">
-        <rect class="BoundingBox" stroke="none" fill="none" x="17189" y="4690" width="1601" height="684"/>
-        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="388px" font-weight="400"><tspan class="TextPosition" x="17568" y="5166"><tspan fill="rgb(0,0,204)" stroke="none">John</tspan></tspan></tspan></text>
-       </g>
-      </g>
-      <g class="com.sun.star.drawing.TextShape">
-       <g id="id45">
-        <rect class="BoundingBox" stroke="none" fill="none" x="17100" y="7200" width="1601" height="684"/>
-        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="388px" font-weight="400"><tspan class="TextPosition" x="17479" y="7676"><tspan fill="rgb(0,0,204)" stroke="none">John</tspan></tspan></tspan></text>
+        <rect class="BoundingBox" stroke="none" fill="none" x="17300" y="7175" width="1501" height="726"/>
+        <text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="423px" font-weight="400"><tspan class="TextPosition" x="17589" y="7685"><tspan fill="rgb(0,0,204)" stroke="none">John</tspan></tspan></tspan></text>
        </g>
       </g>
      </g>
diff --git a/doc/img/bio_ver_sys.odg b/doc/img/bio_ver_sys.odg
deleted file mode 100644
index 6ce0d118eece5801b4d0479eb03703fbc1f71d08..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13207
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
DUnA7@

-- 
GitLab