DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques

 
CONTINUER À LIRE
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
DET4J
         Développement Java d’un outil de
             visualisation de courbes de
             performance biométriques

                                        Christophe Gisler1

                                              11 août 2006

                         Département d’Informatique
                        Rapport de Travail de Bachelor

      Department of Informatics - Departement für Informatik • Université de Fribourg - University of
         Fribourg - Universität Freiburg • Boulevard de Pérolles 90 • 1700 Fribourg • Switzerland

phone +41 (26) 300 84 65       fax +41 (26) 300 97 31     Diuf-secr-pe@unifr.ch    http://diuf.unifr.ch

  1
      christophe.gisler@unifr.ch, Groupe DIVA, DIUF, Université de Fribourg
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
Table des matières
1 Introduction                                                                                                                                                    1

2 But du projet                                                                                                                                                   1

3 Bases théoriques                                                                                                                                               2
  3.1 Définition de la biométrie . . . . . . . . . . . . . . . . . .                                   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
  3.2 Evaluation des systèmes biométriques . . . . . . . . . . .                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
      3.2.1 Qu’est-ce qu’un système biométrique ? . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
      3.2.2 Que mesure un système biométrique ? . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .    3
      3.2.3 Les taux d’erreur et leur utilité . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   .   .   .   .    4
  3.3 Différents types de courbes de performance . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
      3.3.1 Courbe T-FA/T-FR . . . . . . . . . . . . . . . . .                                           .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
      3.3.2 Courbe ROC (Receiver Operating Characteristic) .                                             .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
      3.3.3 Courbe DET (Detection Error Tradeoff) . . . . . .                                            .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
      3.3.4 Courbe semi-logarithmique . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
      3.3.5 Courbe de coût (Cost) . . . . . . . . . . . . . . . .                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
  3.4 Le format de fichier Ragga . . . . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      3.4.1 Définition du format . . . . . . . . . . . . . . . . .                                      .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      3.4.2 Structure . . . . . . . . . . . . . . . . . . . . . . .                                      .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      3.4.3 Description de quelques éléments importants . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .    9

4 Méthodologie et design                                                                                                                                        11
  4.1 Management du projet . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      4.1.1 Meetings et méthode de travail                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      4.1.2 Subversion (SVN) . . . . . . .                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      4.1.3 Présentations et rapport final .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
  4.2 Choix technologiques . . . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      4.2.1 Langage de programmation . .                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      4.2.2 Parsing . . . . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
      4.2.3 GUI . . . . . . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  4.3 Architecture du programme . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
      4.3.1 biosecure.det4j . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
      4.3.2 biosecure.det4j.model . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
      4.3.3 biosecure.det4j.parser . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
  4.4 Description du GUI . . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14

5 Travail effectué et résultat                                                                                                                                 16
  5.1 Fonctionnalités du programme . . . . . .                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
  5.2 Rédaction de la Javadoc . . . . . . . . . .                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
  5.3 Packages utilisés . . . . . . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
      5.3.1 Xerces et JDOM . . . . . . . . . .                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
      5.3.2 VectorGraphics . . . . . . . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
  5.4 Evaluation du programme . . . . . . . . .                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
      5.4.1 Justesse et fiabilité . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
      5.4.2 Robustesse . . . . . . . . . . . . .                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
      5.4.3 Améliorations potentielles futures .                    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  5.5 Résultat et courbes de performance . . . .                    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21

6 Apports personnels                                                                                                                                             24
  6.1 Outils informatiques . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
  6.2 Méthodologies informatiques       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
  6.3 Contenu scientifique . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
  6.4 Gestion du projet . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24

7 Conclusion                                                                                                                                                     24

                                                             i
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
A Guide de l’utilisateur                                                                                                                   26
  A.1 La fenêtre principale “Det4J” et sa barre de      menus     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      A.1.1 Le menu “Det4J” . . . . . . . . . . .        . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      A.1.2 Le menu “File” . . . . . . . . . . . .       . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
      A.1.3 Le menu “Edit” . . . . . . . . . . .         . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
      A.1.4 Le menu “Window” . . . . . . . . .           . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
  A.2 La fenêtre des réglages (Settings) . . . . . .   . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
      A.2.1 Le compartiment “Settings” . . . . .         . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      A.2.2 Le compartiment “Cost” . . . . . . .         . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      A.2.3 Le compartiment “Classifiers” . . . .        . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
  A.3 La fenêtre de la console . . . . . . . . . . .    . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30

                                                 ii
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
Table des figures
  1    Composants d’un système biométrique . . . . . . . . . . . . . . . . . . . . . . . . .         2
  2    Exemple de graphe T-FA/T-FR . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           5
  3    Exemple de courbe T-FA/T-FR . . . . . . . . . . . . . . . . . . . . . . . . . . . . .           6
  4    Exemple de courbe ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         6
  5    Exemple de courbe DET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         7
  6    Exemple de courbe semi-logarithmique . . . . . . . . . . . . . . . . . . . . . . . . .          8
  7    Exemple de courbe de coût . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        8
  8    Exemple de contenu d’un fichier Ragga . . . . . . . . . . . . . . . . . . . . . . . . .        10
  9    Structure d’un classifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    11
  10   Déroulement d’un projet selon la méthode eXtreme Programming . . . . . . . . . .             12
  11   Aperçu du GUI de l’application DET4J . . . . . . . . . . . . . . . . . . . . . . . .          15
  12   Architecture du package VectorGraphics . . . . . . . . . . . . . . . . . . . . . . . .         19
  13   Représentation de courbes T-FA/T-FR dans Det4J . . . . . . . . . . . . . . . . . .            21
  14   Représentation de courbes ROC dans Det4J . . . . . . . . . . . . . . . . . . . . . .          22
  15   Représentation de courbes DET dans Det4J . . . . . . . . . . . . . . . . . . . . . .          22
  16   Représentation de courbes semi-logarithmiques dans Det4J . . . . . . . . . . . . .            23
  17   Représentation de courbes de coût dans Det4J . . . . . . . . . . . . . . . . . . . .         23
  18   La fenêtre principale “Det4J” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     26
  19   Le menu “Det4J” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      27
  20   Les formats d’exportation disponibles . . . . . . . . . . . . . . . . . . . . . . . . .        27
  21   Le menu “File” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     27
  22   Le menu “Edit” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     28
  23   Le menu “Window” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         28
  24   La fenêtre des réglages (Settings) . . . . . . . . . . . . . . . . . . . . . . . . . . . .   29
  25   Les fenêtres permettant de changer la couleur, l’épaisseur et le type de trait d’une
       courbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   30
  26   La fenêtre de la console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    30

                                                  iii
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
1   INTRODUCTION                                                                                         1

1       Introduction
   Depuis toujours, les humains se reconnaissent entre eux à leurs caractéristiques physiques et
comportementales. Nous reconnaissons nos semblables à leurs visages quand nous les rencontrons
ou à leurs voix quand nous leur parlons.

   Jusqu’à présent, la vérification d’identité (authentification) dans les systèmes informatiques a
toujours été basée sur un objet que tout un chacun doit avoir sur lui (clé, carte à puce ou carte
magnétique). Malheureusement, ce genre d’objet à tendance à être perdu, voire volé.

     Pour atteindre une vérification ou une identification plus fiable, l’être humain doit utiliser
un moyen qui caractérise réellement sa personne. La biométrie cherche à offrir des méthodes au-
tomatiques d’identification ou de vérification d’identité qui s’appuient sur les mesures des ca-
ractéristiques physiques ou comportementales, comme les empreintes digitales ou la signature vo-
cale. Ces caractéristiques devraient être uniques et non falsifiables. Hélas, il est souvent possible de
créer une copie qui sera acceptée par le système biométrique comme étant un échantillon véritable
[3].

    Les systèmes biométriques qui vérifient automatiquement l’identité d’une personne peuvent
faire deux types d’erreurs. Il y a les erreurs de faux rejet (FR) lorsque le système refuse l’accès à
un vrai utilisateur (accès vrai) et les erreurs de fausse acceptation (FA) lorsque le système accorde
l’accès à un imposteur (accès imposteur). La décision d’accepter ou de rejeter un utilisateur se
prend en comparant les données d’un nouvel accès avec le template de l’utilisateur. La comparai-
son donne un score dit de vraisemblance. Lorsque le score est en dessous d’un seuil de sécurité (ou
seuil de rejet), le système décide de rejeter l’utilisateur. Lorsque le score est au-dessus de ce seuil,
l’utilisateur est accepté.

     En fonction de la valeur du seuil de rejet, le système fait plus ou moins d’erreurs de faux
rejet ou de fausse acceptation. Si le seuil est très grand, il y aura beaucoup de faux rejets et peu
de fausses acceptations. Si le seuil est très petit, il y aura peu de faux rejets mais beaucoup de
fausses acceptations. A chaque valeur de seuil correspondent un taux de FR et un taux de FA, et
il est donc possible de dessiner une courbe de performance qui est paramétrée en fonction du seuil.
Généralement, ces courbes reprennent en abscisse le taux de FA et en ordonnée le taux de FR. Ces
courbes sont classiquement nommées les courbes de détection (DET curves) car une vérification
biométrique est en fait un problème classique de “détection” d’événements [1].

2       But du projet
    Le but de ce projet de Bachelor était d’implémenter en JAVA un outil de visualisation de
courbes de performance biométriques de divers types (cf. §3.3). En entrée, l’outil devait prendre un
fichier XML contenant des scores de vraisemblance pour des accès vrais et des accès imposteurs.
En sortie, l’outil devait permettre une visualisation directe de la courbe de performance. Les prin-
cipales fonctionnalités à développer étaient les suivantes :

    –   Possibilité de visualiser jusqu’à 4 courbes de performance sur le même graphique ;
    –   Possibilité de visualiser jusqu’à 5 types de courbes différents ;
    –   Possibilité de charger ou de supprimer ces courbes ;
    –   Visualisation de divers points importants (equal error rate, minimal cost) ;
    –   Possibilité d’exporter les courbes sous différents formats graphiques ;
    –   Possibilité d’interagir avec le graphique, au moyen de la souris, pour effectuer diverses actions.
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
3   BASES THÉORIQUES                                                                                     2

3       Bases théoriques
3.1     Définition de la biométrie
    La biométrie vise l’élaboration de techniques d’identification automatique des humains. Cer-
taines biométries utilisent des caractéristiques physiques comme l’iris, les empreintes digitales ou
la forme du visage. D’autres biométries se basent sur des caractéristiques comportementales des
individus comme l’écriture ou le signal de la parole.

3.2     Evaluation des systèmes biométriques
3.2.1    Qu’est-ce qu’un système biométrique ?
    Un système biométrique possède quatre composants principaux [2] :

    1. Un module de senseurs (sensor module) qui acquiert les données biométriques d’un indi-
       vidu. Par exemple, un senseur qui capture les empreintes digitales ;
    2. Un module d’extraction des caractéristiques (feature extraction module) qui traite les
       données acquises par le précédent module pour en extraire des valeurs caractéristiques, comme
       la position et l’orientation de points précis de l’image de l’empreinte digitale ;
    3. Un module de comparaison (matching module) dans lequel les valeurs caractéristiques
       extraites par le précédent module sont comparées avec celles du profil de l’utilisateur (user’s
       master template) dans la base de données pour générer un score S, dit score de concordance
       (matching score). Par exemple, dans le cas des empreintes digitales, le nombre de points
       concordants, entre l’image de l’empreinte de la requête et celle du template, va être calculé
       pour retourner un score de concordance ;
    4. Un module de décision (decision-making module) qui va décider d’accepter ou de rejeter
       l’utilsateur en comparant le score de concordance généré par le module précédent avec un
       seuil de sécurité T (security threshold ) donné. Dans le cas où S ≥ T , l’individu sera accepté,
       et dans le cas contraire, si S < T , il sera rejeté.

                         ID Claim

    Biometric
                                       Database
      Data
                                         User's
           Sensor                        master
                                        template
           Module                                                   Threshold T

    Biometric
     Sample
                         Biometric                     Matching
           Feature       Features       Matching       Score S        Decision          Accept if S ≥ T
          Extraction                    Module                        Module            Reject if S < T

                            Fig. 1 – Composants d’un système biométrique
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
3   BASES THÉORIQUES                                                                                       3

    Le schéma de la figure 1 illustre bien les relations entre ces différents composants. La flèche
portant le label “ID Claim” n’apparaı̂t que dans le cas de vérification d’identité et pas dans celui
d’identification (voir ci-dessous), c’est la raison pour laquelle elle est en pointillé.

    Les systèmes biométriques peuvent être utilisés dans deux modes différents :

    – La vérification de personnes ;

    – L’identification de personnes.

    On parle de vérification d’identité lorsqu’une personne clame être déjà enrôlée dans le système
biométrique (et posséderait donc une ID-card ou un login name). Dans ce cas, les données biométriques
obtenues de cette personne sont comparées avec son template d’utilisateur qui est enregistré dans
la base de données.

    On parle d’identification quand l’identité de l’utilisateur est à priori inconnue. Dans ce cas,
les données biométriques de l’utilisateur sont comparées aux templates de tous les utilisateurs en-
registrés dans la base de données du système biométrique, car l’utilisateur pourrait être n’importe
lequel (sinon aucun) d’entre eux.

   Il est évident que l’identification de personnes est techniquement beaucoup plus compliquée et
beaucoup plus coûteuse, et le taux d’exactitude de l’identification diminue généralement quand la
grandeur de la base de données augmente.

   Afin qu’une personne puisse être vérifiée ou identifiée avec succès par le système biométrique, elle
doit s’être fait préalablement enregistrer dans le système, c’est-à-dire que ses données biométriques
ont dû être enregistrées, traitées et stoquées. Comme la qualité de ces données biométriques
stoquées est cruciale pour les futures authentifications, il y a souvent plusieurs échantillons biométri-
ques (biometric samples) qui sont utilisés pour créer le profil maı̂tre de l’utilisateur (user’s
master template). Ce processus d’enregistrement d’un nouvel utilisateur est appelé l’enrôlement
(enrollment).

3.2.2    Que mesure un système biométrique ?
    La différence la plus significative entre la biométrie et les technologies traditionnelles se situe
dans la réponse d’un système biométrique à une requête de vérification ou d’identification. De tels
systèmes ne peuvent pas répondre simplement par oui ou non, comme le ferait un système tradi-
tionnel en vérifiant que le code PIN d’une carte banquaire correspond bien à une séquence donnée
telle que “1234”. Aucun système biométrique ne peut vérifier l’identité ou identifier une personne
avec une certitude absolue. Par certitude absolue, on entend une probabilité de vérification stric-
tement égale à 1. La signature d’une personne n’est jamais deux fois identique, tout comme la
position du doigt sur un lecteur d’empreintes digitales n’est jamais deux fois la même. C’est la rai-
son pour laquelle on ne peut qu’essayer de mesurer les similitudes entre les données biométriques
du protagoniste et celles de son profil qui est stocké dans la bases de données. Ainsi, le système
biométrique retourne la probabilité que ces deux échantillons biométiques proviennent de la même
personne.

    Les systèmes biométriques peuvent être divisés en deux catégories selon ce qu’ils mesurent :

    – Les systèmes basés sur les caractéristiques physiques de l’individu (comme les empreintes
      digitales , l’aspect de l’iris ou de la rétine, la morphologie de la main, du doigt ou du visage) ;

    – Les systèmes basés sur les caractéristiques comportementales de l’individu (comme la
      reconnaissance vocale ou la dynamique de la signature manuscrite ou des frappes au clavier).
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
3   BASES THÉORIQUES                                                                                     4

    Les systèmes biométriques de la première catégorie sont généralement plus fiables et plus précis,
car les caractéristiques physiques sont plus facilement reproductibles et ne sont souvent pas affectées
par les conditions mentales de la personne au moment de l’enrôlement.

    Si l’on construisait un système requérant 100% de concordance à chaque fois, alors évidemment
ce système serait pratiquement inutilisable, puisque seulement une petite minorité des utilisateurs
(et encore) pourrait l’utiliser. La plupart d’entre eux serait rejetée à chaque tentative, comme les
résultats des mesures ne seraient jamais les mêmes.

    Ainsi, il faut tenir compte de la variabilité des données biométriques, car il n’est pas tolérable
qu’un système biométrique rejète trop souvent les véritables utilisateurs. Cependant, plus la varia-
bilité tolérée sera grande, plus la probabilité qu’un imposteur possédant des données biométriques
similaires soit accepté sera grande.

3.2.3   Les taux d’erreur et leur utilité
    Un système biométrique peut faire deux types d’erreurs :

    – Une erreur de faux rejet (ou erreur de type 1), qui survient lorsqu’un utilisateur légitime
      est faussement rejeté, parce que le système trouve que ses données biométriques ne sont pas
      suffisamment similaires à celles du profil maı̂tre (master template) de la base de données ;

    – Une erreur de fausse acceptation (ou erreur de type 2), qui survient quand un imposteur
      est malencontreusement accepté en tant qu’utilisateur légitime, parce que le système trouve
      que ses données biométriques sont suffisamment similaires à celles du profil maı̂tre de la base
      de données.

     Dans un système idéal, il n’y a pas de faux rejet et de fausse acceptation. Dans un système
réel cependant, leur nombre n’est pas nul et peut prendre des valeurs non négligeables lorsque les
modalités et conditions d’utilisation augmentent la variabilité des données. Les taux de faux rejet
et de fausse acceptation dépendent du seuil de sécurité T . Plus la valeur du seuil sera grande, plus
il y aura de faux rejets et moins de fausses acceptations, et inversément, plus la valeur du seuil
sera petite, moins il y aura de faux rejets et plus de fausses acceptations. Le nombre de faux rejets
et celui de fausses acceptations sont inversément proportionnels. Le choix de la valeur de seuil
T (pour threshold ) à utiliser dépend principalement de la finalité du système biométrique. Cette
valeur est choisie de manière à faire un compromis adéquat entre la sécurité et l’utilisabilité du
système. Par exemple, un système biométrique aux portes d’un parc d’attraction comme Disney-
land appliquera typiquement un seuil beaucoup plus petit qu’un système biométrique aux portes
des quartiers généraux de la NSA.

   Le nombre de faux rejets (resp. de fausses acceptations) est habituellement exprimé en un
pourcentage par rapport au nombre total de tentatives d’accès autorisés (resp. non autorisés). Ces
taux sont appelés taux de faux rejet (false reject rate, abrégé par FRR) et taux de fausse
acceptation (false acceptation rate, abrégé par FAR) et sont donc liés à une certaine valeur de
seuil T .

    Certains appareils biométriques (ou les logiciels les accompagnant) prennent le seuil de sécurité
désiré comme paramètre du processus de décision. Les autres appareils biométriques retournent un
score S (borné) sur la base duquel la décision d’accepter ou de rejeter l’utilisateur va être prise
par l’application elle-même. En général, si le score S est plus grand ou égal au seuil T , l’utilisateur
va être accepté et, si le score est plus petit, il sera rejeté.

    Dans le cas où le dispositif biométrique retourne un score, on peut générer un graphe indiquant
la dépendance des taux de fausse acceptation (FAR) et de faux rejets (FRR) au seuil (T ). La figure
2 montre un exemple d’un tel graphe, qu’on appelle graphe T-FA/T-FR.
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
3   BASES THÉORIQUES                                                                                   5

                              Fig. 2 – Exemple de graphe T-FA/T-FR

    Les courbes des FAR et FRR se coupent en un point où les taux de fausse acceptation et de faux
rejet sont égaux ; la valeur en ce point est appélée equal error rate (EER) ou aussi crossover
accuracy. Cette valeur n’a presque pas d’utilité pratique car on ne souhaite généralement pas que
le FAR et le FRR soient les mêmes, mais elle constitue un bon indicateur de la précision du dispositif
biométrique. Par exemple, si l’on a deux appareils avec des equal error rates de 1% et 10%, on sait
alors que le premier est plus précis (i.e. qu’il fait moins d’erreurs) que le second. Pourtant, de telles
comparaisons ne sont pas aussi simples en réalité. D’une part, les valeurs fournies par les fabricants
sont incomparables parce que ces derniers ne publient habituellement pas les conditions exactes de
leurs tests, et d’autre part, même s’ils le font, les tests dépendent vraiment du comportement des
utilisateurs et d’autres influences extérieures, telles que la qualité des senseurs ou l’utilisation de
ceux-ci.

3.3     Différents types de courbes de performance
     Il a été vu au paragraphe précédent que les performances d’un système biométrique peuvent
être mesurées en reportant ses taux de fausse acceptation (FAR) et de faux rejet (FRR) pour
différentes valeurs de seuil (threshold T ). A partir de ce triplet (T, F AR, F RR), diverses courbes
de performance peuvent être calculées et tracées. Celles qui sont décrites ci-dessous sont les plus
prépondérantes dans la recherche sur la biométrie et leurs modèles ont été implémentés dans le
projet DET4J.

3.3.1   Courbe T-FA/T-FR
   La représentation de ce type de courbe est la plus simple à comprendre (voir figure 3). On fait
varier la valeur du seuil (threshold T ) sur l’axe des abscisses et les taux de fausse acceptation (FAR
in % ) et de faux rejet (FRR in % ) sur l’axe des ordonnées, ce qui donne au final deux courbes
qui se coupent au point de l’equal error rate (FRR et FRR égaux). Quand la valeur du seuil est
petite, les taux respectifs de faux rejet et de fausse acceptation sont l’un petit et l’autre grand, et
inversément quand la valeur du seuil est grande.
DET4J D eveloppement Java d'un outil de visualisation de courbes de performance biom etriques
3   BASES THÉORIQUES                                                                                    6

                              Fig. 3 – Exemple de courbe T-FA/T-FR

3.3.2   Courbe ROC (Receiver Operating Characteristic)
    Pour obtenir ce type de courbe (représenté à la figure 4), on fait varier intrinsèquement la valeur
du seuil (threshold T ) et les points de l’unique courbe obtenue sont alors constitués des taux de
fausse acceptation (FAR in % ) et de faux rejet (FRR in % ) resp. en abscisses et en ordonnées.
L’échelle est linéaire. L’equal error rate (EER) est obtenu à l’intersection de la courbe et de la
diagonale partant de (0, 0) et arrivant en (100, 100). Les avantages de ce type de courbe sont que
l’on obtient une représentation compacte des performances d’un système biométrique au travers
d’une seule courbe, et que l’on peut ainsi comparer des systèmes biométriques différents (la courbe
la plus proche du coin inférieur gauche est la meilleure).

                                  Fig. 4 – Exemple de courbe ROC
3    BASES THÉORIQUES                                                                                          7

3.3.3        Courbe DET (Detection Error Tradeoff )
   Une courbe DET n’est par essence qu’une courbe ROC dont on a remplacé l’échelle linéaire par
une échelle basée sur une distribution normale1 [1] pour la rendre plus lisible et plus exploitable
(voir la figure 5). Comme les scores de vraisemblance se distribuent généralement selon une loi
normale, la courbe de performance s’aplatit et tend vers une droite. Les avantages des courbes
DET sont les mêmes que ceux des courbes ROC, mais elles permettent en plus de comparer des
systèmes biométriques qui ont des performances similaires.

                                         Fig. 5 – Exemple de courbe DET

3.3.4        Courbe semi-logarithmique
     À l’instar de la courbe DET, la courbe semi-logarithmique est une courbe ROC dont on a modifié
l’échelle (linéaire). L’échelle de l’axe des abscisses est simplement remplacée par une échelle semi-
logarithmique, tandis que celle de l’autre axe reste linéaire. De plus, on représente sur l’axe des
ordonnées le genuine acceptation rate (GAR), qui est égal à 1 − F RR. On obtient finalement une
courbe qui a l’allure de celle de la figure 6. Les courbes semi-logarithmiques, utilisées par certains
chercheurs en biométrie, permettent une lisibilité et une interprétation différente [2].

3.3.5        Courbe de coût (Cost)
    La courbe de coût (cost) est une courbe particulière en ce sens qu’elle permet de donner des
poids variables (facteurs WF A et WF R ) aux taux de faux rejet et de fausse acceptation pour en
faire ressortir en quelque sorte un coût général du sytème biométrique pour un certain seuil. Les
points qui composent une telle courbe prennent en abscisse une valeur de seuil T et en ordonnée
la valeur Cost(T ) retournée par la fonction de coût pour ce seuil (voir la figure 7). L’expression
mathématique de cette fonction est donnée par :

                Cost(T ) = WF A ∗ F AR(T ) ∗ P (Impostor) + WF R ∗ F RR(T ) ∗ P (Genuine)

              WF A , W F R ≥ 0   ;   P (Impostor), P (Genuine) ∈ [0,1]   ;   P (Genuine) = 1 − P (Impostor)

    1 Pour   plus d’informations sur les distributions normales : http://en.wikipedia.org/wiki/Normal distribution
3   BASES THÉORIQUES                                              8

                   Fig. 6 – Exemple de courbe semi-logarithmique

                        Fig. 7 – Exemple de courbe de coût
3    BASES THÉORIQUES                                                                                    9

    Dans une banque par exemple, un dispositif de reconnaissance vocal sur le système téléphonique
induira un coût de FRR élevé et un coût de FAR petit, car si les personnes qui veulent téléphoner se
font sans cesse rejeter, elles vont être frustrées et risquent de rompre leur relation avec la banque,
ce qui va coûter beaucoup plus cher à cette dernière que si quelques personnes non autorisées
se font un peu trop facilement accepter. Au contraire, un système biométrique sur un coffre fort
induira un coût de FRR petit et un coût de FAR élevé, car si une personne autorisée veut accéder
au coffre (ce qu’elle ne fait en général qu’à de rares occasions) et qu’elle se fait rejeter, ce ne sera
pas grave. Elle va recommencer le processus de vérification peut-être une fois ou deux jusqu’à ce
qu’elle soit acceptée. Elle sera même ravie de la réticence du système à accepter toute personne et
finira par avoir accès à ses biens, ce qui ne va pas coûter grand chose à la banque. Par contre, si
un imposteur se fait malencontreusement accepter, il pourra avoir accès au contenu du coffre et le
voler, ce qui va coûter cher à la banque qui va devoir dédommager son client.

3.4          Le format de fichier Ragga
3.4.1        Définition du format
    Le format de fichier dénommé Ragga est un format de fichier de scores biométriques au format
XML (eXtended Markup Language) qui a été défini dans le cadre du projet européen BioSecure2 .
Ce format va être poussé et finalisé dans le consortium du projet afin qu’il devienne un standard
et que la plupart des laboratoires l’utilisent. Ce format de fichier contient aussi plus de méta-
informations que les autres formats de fichier employés par les outils de scoring actuels. On peut
donc potentiellement en faire plus de choses (par exemple, faire une analyse par client et non
plus une analyse globale, etc...). Ce format permet également d’inclure des informations de type
“observateur” sur les données de test. Ces observateurs peuvent par exemple donner un indice de
qualité sur les données (niveau de bruit ou autre).

3.4.2        Structure
     La structure du contenu d’un fichier Ragga est rerésentée à la figure 8.

3.4.3        Description de quelques éléments importants
   Dans un fichier Ragga, les éléments importants sont définis par des balises XML dont les prin-
cipales sont :

     – eval : Un élément eval constitue une séquence de tests ;

         ... 

     – moduleInformation : Les éléments moduleInformation fournissent des informations supplé-
       mentaires au sujet des systèmes utilisés pour produire les scores ou les meta-data. Ils sont
       liés à un module spécifique qui est soit un classifier, soit un observer. Tous les sous-éléments
       institution, version, features et notes sont optionnels ;

         ... 

     – test : Les éléments test définissent un accès unique qui peut être un accès vrai ou un accès
       imposteur. Un test est défini par un nom de frichier (fileName), un modèle de test (testModel )
       utilisé sur le nom de fichier, et éventuellement le modèle véritable (trueModel ) correspondant
       au fichier testé. Un attribut facultatif est la longueur du fichier (fileLength) ;

         ... 

    2 Site   web du projet BioSecure : http://www.biosecure.info
3   BASES THÉORIQUES                                               10

                   Fig. 8 – Exemple de contenu d’un fichier Ragga
4    MÉTHODOLOGIE ET DESIGN                                                                             11

     – classifier : Les éléments classifier définissent les scores biométriques du fichier sous un test.
       Le format Ragga permet de sortir des scores globaux du fichier sous un test ou une séquence
       de scores individuels avec des timestamps spécifiant à partir de quel instant et jusqu’à quel
       instant dans le temps un score individuel s’applique. Une finalité pourrait être par exemple
       qu’un classifier retourne des scores individuels pour chaque trame de 10 ms dans le cas de la
       biométrie sur le signal de parole ;

         ... 

                                      Fig. 9 – Structure d’un classifier

     – score : Un élément de type score représente le score de vraisemblance issu du module de
       comparaison. De façon générale, ce score est directement ou indirectement lié à la probabilité
       que les données biométriques observées correspondent à l’identité prétendue. En pratique, ce
       score est une valeur de type float qui peut être négative ou positive suivant son domaine de
       représentation (logarithmique ou linéaire).

4       Méthodologie et design
4.1          Management du projet
4.1.1        Meetings et méthode de travail
    Concernant le management du projet, il a été décidé avec le Dr Jean Hennebert et l’assistant
Bruno Dumas au début de l’année académique de faire des meetings environ toutes les deux se-
maines, ce qui en totalise une quinzaine durant l’année. Lors de ces réunions, Jean Hennebert
supervisait l’avancement du projet selon une méthode bien connue en entreprise qui s’appelle eX-
treme Programming 3 (abrégé XP ). Cette méthode de développement de programmes informatiques
(softwares) procède sommairement de la manière suivante :

    1. Analyse de l’architecture et des fonctionnalités (features) du futur programme informatique.
       Définition de priorités sur les fonctionnalités à implémenter ;
    2. Elaboration d’un planning sur la durée totale estimée du projet et selon les priorités des
       fonctionnalités à implémenter ;
    3. Meetings (itérations) pendant lesquels le travail effectué est inspecté et les tâches suivantes
       fixées. Pour chaque tâche, le temps de réalisation nécessaire est estimé, et s’il n’est pas
    3 Site   web de XP : http://www.extremeprogramming.org
4    MÉTHODOLOGIE ET DESIGN                                                                       12

        encore possible de le déterminer précisément, un travail de prospection appelé spike est
        préalablement agendé ;
    4. Tests d’acceptation et correction des bugs ;
    5. Première sortie du programme (small release).

     La figure 10 représente de manière plus précise ces différentes étapes :

               Fig. 10 – Déroulement d’un projet selon la méthode eXtreme Programming

4.1.2        Subversion (SVN)
    Il était demandé de faire régulièrement des sauvegardes des fichiers du projet en cours sur le
répertoire de sauvegardes (repository) du serveur du groupe DIVA du département d’informatique
en utilisant le logiciel de contrôle de versions appelé Subversion 4 (SVN ).

4.1.3        Présentations et rapport final
    À la fin de chaque semestre, tous les étudiants accomplissant leur travail de Bachelor dans
le groupe DIVA devaient faire une présentation intermédiaire de leur projet et principalement de
son état d’avancement. A la fin de l’année académique (en l’occurence le 19 juillet 2006), une
présentation finale était exigée pour couronner l’aboutissement du projet et profiter des remarques
de dernière minute faites par le professeur et les assistants pour effectuer les dernières retouches
au programme et au rapport final (à rendre dans les deux semaines au plus tard).

4.2          Choix technologiques
4.2.1        Langage de programmation
    Java5 (de Sun Microsystems) est le langage de programmation qui a été choisi pour le projet
DET4J. Les raisons de ce choix sont que Java est un langage multiplateforme, de haut niveau
(orienté objet), très répandu et apprécié des programmeurs pour sa convivialité (notamment sous
l’environnement de programmation Eclipse6 ).
    4 Site web du projet Subversion : http://subversion.tigris.org
    5 Site web du projet Java : http://java.sun.com
    6 Site web du projet Eclipse : http://www.eclipse.org
4    MÉTHODOLOGIE ET DESIGN                                                                                13

4.2.2        Parsing
     Le choix du parseur de fichier XML a été porté sur SAX7 . JDOM8 constituait l’autre parseur
potentiel, mais SAX lui a été préféré car, contrairement à JDOM, c’est un modèle de parseur
événementiel qui est très peu gourmand en mémoire puisqu’il n’a pas besoin de charger tout le
fichier en mémoire, ce qui n’est pas du tout négligeable, sachant qu’un fichier Ragga possède une
taille moyenne d’une vingtaine de méga-octets environ. JDOM est très gourmand en mémoire car
il doit d’abord générer l’arbre du document entier pour pouvoir ensuite accéder aux éléments par
des opérations classiques de navigation dans les arbres, tandis que SAX accède aux éléments de
manière séquentielle, ce qui ne demande que peu de mémoire.

4.2.3        GUI
    Une grande partie de la programmation de DET4J portait sur la réalisation de l’interface
graphique utilisateur (GUI), c’est la raison pour laquelle il était important d’utiliser une bonne
bibliothèque graphique telle que Swing pour le langage Java. Swing offre la possibilité de créer
des interfaces graphiques identiques quel que soit le système d’exploitation sous-jacent, au prix de
performances moindres qu’en utilisant Abstract Window Toolkit (AWT). En effet, AWT fournit une
API indépendante du système d’exploitation pour mettre en oeuvre des composants graphiques.
Dans AWT, chaque composant est dessiné et contrôlé par un composant tiers natif spécifique au
système d’exploitation. C’est pourquoi les composants d’AWT sont appelés composants lourds. Au
contraire, les composants Swing sont décrits comme légers, car ils ne requièrent pas d’allocation
de ressources natives de la part du gestionnaire de fenêtres sous-jacent, mais “empruntent” les
resources de leurs ancètres. Une grande partie de l’API Swing est une extension complémentaire à
AWT plutôt qu’un remplaçant direct. L’affichage est fourni par Java2D. Finalement, Swing utilise
le principe Modèle-Vue-Contrôleur9 (MVC) et dispose de plusieurs choix d’apparence (de vue)
pour chacun des composants standard.

4.3          Architecture du programme
    Le programme DET4J se décompose en trois différents paquetages (packages) Java dont voici
les descriptions :

4.3.1        biosecure.det4j
   biosecure.det4j est le package principal. Il est constitué de toutes les classes qui sont l’essence
même de l’application DET4J. Ce package comprend :

     – Det4J.java, qui est la classe principale du programme DET4J. Elle lance le programme et
       instancie les différentes classes pour, entre autres, créer les trois fenêtres du GUI et le menu,
       lancer le parseur SAX et extraire les différentes données utiles pour l’affichage et la manipu-
       lation des courbes de performance ;

     – SettingsWindow.java, qui contient les méthodes pour créer une fenêtre permettant d’effectuer
       divers réglages ainsi que de manipuler les classifiers et leurs courbes ;

     – ConsoleWindow.java, qui contient les méthodes pour créer une fenêtre de console qui affiche
       des informations sur les actions et événements importants qui se produisent durant l’utilisa-
       tion du logiciel ;

     – JCanvas.java, qui contient les méthodes pour créer dans la fenêtre principale de DET4J le
       graphique (canvas) contenant les courbes, la grille, les labels, le titre, la légende, etc... C’est
       ce canvas qui constitue la finalité de l’utilitaire et qui va pouvoir être imprimé ou exporté ;

    7 Siteweb du projet SAX : http://www.saxproject.org
    8 Siteweb du projet JDOM : http://www.jdom.org
    9 Pour plus d’informations sur la démarche MVC : http://fr.wikipedia.org/wiki/Modèle-Vue-Contr^
                                                                                                    oleur
4   MÉTHODOLOGIE ET DESIGN                                                                              14

    – CanvasObject.java, qui décrit un objet représentant une certaine zone du graphique (canvas)
      et mémorisant les caractéristiques de cette dernière pour pouvoir détecter les événements de
      la souris (clics et glissements) et permettre de réagir en conséquence ;

    – ActiveZoneDescriptors.java, qui crée un objet contenant la liste de tous les CanvasObjects
      qui vont réagir aux actions de la souris ;

    – CDF Normal.java, qui contient les routines nécessaires au calcul de la fonction de distribu-
      tion normale cumulative (CDF) et de sa fonction inverse. Ces routines sont utilisées dans la
      représentation de courbes de performance de type DET (cf. §3.3) ;

    – ClassifierDETCurveData.java, qui décrit une structure de données pour contenir les ca-
      ractéristiques de la courbe d’un classifier. Ces caractéristiques sont le nom du classifier, le
      nom de la courbe dans la légende, le vecteur contenant les coordonnées de tous ses points, sa
      couleur, son type et son épaisseur, la valeur de son equal error rate (EER) et celle du seuil
      associé (T (EER)). Cette classe contient aussi les méthodes qui calculent le vecteur des points
      de la courbe (la dimension de ce vecteur est donnée constitue la résolution de la courbe, i.e.
      le nombre de points qui la compose), son EER et le seuil associé T (EER) ;

    – ClassifierScores.java, qui a pour fonction de créer la liste des scores bruts d’un classifier ;

    – Coordinate.java, qui crée une structure de données pour contenir les coordonnées d’un point
      d’une courbe de performance et du seuil associé ;

    – PrintUtilities.java, qui est une classe utilitaire permettant d’imprimer un composant (com-
      ponent) quelconque, tel que le graphique (canvas) dans notre cas ;

    – RaggaException.java, qui retourne une exception spécifique lorsqu’une erreur survient lors du
      parsing d’un fichier Ragga.

4.3.2    biosecure.det4j.model
   Ce package a comme fonction de représenter le modèle interne d’un fichier Ragga et contient
une classe pour chaque élément structurel du format (cf. 3.4). Ces classes sont bien évidemment
employées par le parseur SAX et sont AuxiliarySignal.java, Classifier.java, Eval.java, Generic.java,
MetaData.java, ModuleInformation.java, Observer.java, Score.java et Test.java.

4.3.3    biosecure.det4j.parser
   Ce package est celui du parseur de fichiers Ragga (XML) et contient l’unique classe RaggaSax-
Parser.java qui est utilisée pour lire et parser un fichier (XML) au format Ragga au moyen de
SAX.

4.4     Description du GUI
   Lors de la réflexion sur le layout final de l’utilitaire DET4J, il a été décidé que l’interface gra-
phique utilisateur (GUI) serait composé de trois fenêtres indépendantes (voir la figure 11) :

    1. Une première fenêtre, la principale, pour contenir et interagir avec le graphique. Elle contient
       aussi l’unique barre de menus ;
    2. Une deuxième fenêtre pour effectuer les réglages les plus importants et qui s’appliquent
       directement aux courbes des classifiers ;
    3. Une troisième fenêtre pour la console permettant d’afficher les informations à propos des
       actions et erreurs pouvant survenir durant l’utilisation.
4   MÉTHODOLOGIE ET DESIGN                                                                             15

                          Fig. 11 – Aperçu du GUI de l’application DET4J

    Dans la fenêtre principale “Det4J”, il a été souhaité que le plus grand nombre possible de
manipulations soient réalisables intuitivement et directement sur le graphique au moyen de la sou-
ris (par clics et glissements). Cela comprend la majorité des manipulations d’édition des titres,
des labels et de la légende. Les opérations restantes et les options typiques des menus (comme
l’ouverture de fichiers, l’impression, l’exportation, etc...) sont accessibles via la barre de menus.
Les menus disponibles sont : “Det4J”, “File”, “Edit” et “Window”. Le menu “Det4J” contient les
options relatives au programme lui-même (About, Quit), le menu “File” les options relatives au
fichier (Open, Export, Print), le menu “Edit” les options relatives à l’édition du graphique, et le
menu “Window” les options relatives aux fenêtres annexes (Show, Hide).

    Dans la deuxième fenêtre, il a été décidé de placer deux compartiments principaux. Le pre-
mier, “Settings”, permet de faire les deux réglages principaux relatifs à toutes les courbes de
performance, c’est-à-dire de changer par un menu déroulant le type de courbes à visualiser, et
d’augmenter/réduire avec un “slider” la résolution des courbes (i.e. le nombre de points calculés
pour chacune d’entre elles). Le second compartiment, “Classifiers”, permet d’effectuer des réglages
et de voir des informations propres à chaque classifier. Un troisième compartiment s’intercale entre
les deux premiers quand le type de courbe sélectionné dans le menu déroulant est la courbe de
coût (cf. §3.3). Ce dernier compartiment offre à l’utilisateur la possibilité de modifier directement
les paramètres de la fonction de coût.

    L’éventualité de créer une application DET4J réunissant ces trois fenêtres en une unique fenêtre
principale a longuement été discutée, mais finalement abandonnée, et ceci pour les raisons suivantes.
La programmation de la création, de la séparation, de la hiérarchisation, de l’affichage et de l’exploi-
tation de plusieurs zones de fonctionnalités diverses au sein d’une même fenêtre est extrêmement
fastidieuse avec Swing et donc plus sujette aux bugs et aux pertes de temps. Finalement, la création
d’un GUI avec fenêtres séparées — comme c’est le cas dans DET4J — permet à l’utilisateur de
masquer à souhait celles dont il n’a pas l’utilité ou qu’il ne veut simplement pas voir s’afficher.
5   TRAVAIL EFFECTUÉ ET RÉSULTAT                                                                          16

5     Travail effectué et résultat
5.1    Fonctionnalités du programme
    Dans sa version actuelle, l’utilitaire DET4J est doté de multiples fonctionnalités. Voici les des-
criptions de celles qui paraissent essentielles :

Support du nouveau format de score Ragga : Il était primordial que DET4J supporte ce fu-
    tur standard de format de fichier de scores biométriques élaboré récemment par le consortium
    du projet européen BioSecure ;

Chargement et fermeture de plusieurs fichiers Ragga : Il est possible d’ouvrir plusieurs fi-
    chiers Ragga l’un après l’autre. Chaque fichier peut contenir un ou plusieurs classifiers. Les
    courbes de performance respectives seront alors affichées sur le même graphique dans DET4J.
    Ce dernier permet de désactiver à la volée l’affichage des courbes des classifiers chargés en
    décochant la case prévue à cet effet à côté de leur nom dans la fenêtre des réglages. No-
    tons que DET4J gère les fichiers Ragga d’après les classifiers qu’ils contiennent. Ainsi, il est
    possible de se débarasser de tout classifier (qui a été chargé) indépendamment des autres
    classifiers pouvant appartenir au même fichier Ragga. En réouvrant le même fichier Ragga,
    le classifier perdu va être rechargé sans que les autres classifiers, déjà chargés, ne le soient à
    leur tour (un message d’avertissement va alors nous en informer) ;

Création du GUI : L’interface graphique utilisateur (GUI), dont les principes sous-jacents ont
     été discutés au paragraphe 4.4, a été réalisé avec Swing et a représenté une partie considérable
     du projet (création des fenêtres, des menus, boutons, sliders, etc..). Il est à noter que divers
     “tool-tips” ont été implémentés pour afficher des messages d’aide quand l’utilisateur déplace
     le pointeur de la souris sur certains éléments du GUI ;

Calcul et affichage des courbes ROC, DET, Semi-Log, T-FA/T-FR et Cost : Le calcul
    et l’affichage de ces divers types de courbes, dont les modèles ont été discutés au para-
    graphe 3.3, se font entièrement dans la classe JCanvas.java. Le mode d’affichage désiré est
    sélectionnable au moyen le menu déroulant “Curve types” dans la fenêtre des réglages ;

Optimisation de l’affichage des courbes : Lors du calcul des coordonnées F AR et F RR des
    points de chaque courbe, on a remarqué que la répartition de ces points n’était pas uniforme
    (bien que le seuil de sécurité T varie linéairement). En effet, la majeure partie des points se
    situaient aux extrémités du graphe, si bien que beaucoup d’entre eux étaient dessinés sur le
    même pixel. L’affichage des courbes devenait donc lourd et lent. C’est la raison pour laquelle,
    lors du calcul et de l’affichage des points d’une courbe, on supprime ceux qui sont inutilement
    trop proches. De plus, une fonction d’anti-aliasing (i.e. de lissage des pixels) applicable aux
    courbes a été implémentée. L’anti-aliasing est désactivé par défaut, mais peut être activé par
    une commande du menu “Edit” ;

Exportation dans un grand nombre de formats : Grâce au package VectorGraphics (cf. §
    5.3.2), il est possible d’exporter le graphique dans un grand nombre de formats, tels png,
    jpg, gif, bmp, pdf, ps, eps, svg (la liste exhaustive est donnée à la figure 20 du Guide de
    l’Utilisateur en annexe). L’exportation se fait via la commande “Export” du menu “File” ;

Impression : Il est possible d’imprimer le graphique via la commande “Print” du menu “File”.
    C’est la classe PrintUtilities.java qui en est responsable (cf. §4.3) ;

Calcul et affichage de l’equal error rate : Les valeurs de l’equal error rate (EER) de tous
    les classifiers chargés s’affichent à côté de leurs noms respectifs dans la fenêtre des réglages.
    En outre, dans quatre des cinq visualisations implémentées (toutes sauf celle de la courbe de
5   TRAVAIL EFFECTUÉ ET RÉSULTAT                                                                        17

      coût), il est possible d’afficher, via le menu “Edit”, les points des equal error rates sur les
      différentes courbes de performance activées ;

Calcul du seuil de l’equal error rate : De manière analogue, les seuils associés aux equal error
    rates respectifs des classifiers (T (EER)) sont affichés à côté des noms dans la fenêtre des
    réglages ;

Calcul et affichage des points de coût minimal, seuil optimal : Si la visualisation en mode
    “Courbe de coût” est sélectionnée, le troisième compartiment permettant de modifier à la
    volée les paramètres de la fonction de coût apparaı̂t dans la fenêtre des réglages. De plus,
    on peut afficher le point de coût minimal (le seuil associé est par conséquent optimal) sur
    la courbe de chaque classifier, et un tableau contenant les coordonnées de ces points (Topt ,
    Cmin = C(Topt )) pour chaque classifier est imprimé dans la console. Ce tableau est réimprimé
    après tout changement de résolution ou de paramètre de la fonction C(T ). Notons que ce
    tableau n’est pas mis à jour, mais réimprimé, ce qui permet de faire des comparaisons entre
    tableaux de configurations différentes ;

Gestion des événements de la souris : La gestion des événements de la souris sur le graphique
     (canvas) de la fenêtre principale de DET4J permet de repérer et d’identifier les actions po-
     tentielles de la souris (clics et glissements) aux endroits spécifiques du canvas pour pouvoir
     réagir en conséquence. Comme il l’a été vu au paragraphe 4.3, ce sont les classes CanvasOb-
     ject.java et ActiveZoneDescriptors.java qui en sont responsables ;

Déplacement de la légende par “drag and drop” : La légende est déplaçable par un glisser-
     déposer (drag and drop) de la souris au sein-même du graphique. Notons qu’il est possible
     de masquer la légende si on le souhaite ;

Affichage des coordonnées d’un point en fonction d’un clic dans la grille : Lorsqu’un clic
     de la souris est effectué à l’intérieur du cadran contenant les courbes, un point muni d’un
     cadre contenant ses coordonnées est dessiné à l’endroit du clic. La couleur du fond de ce cadre
     est modifiable au moyen d’un “color-chooser” accessible par une commande du menu “Edit” ;

Edition des labels des axes, titre, légende et noms des classifiers : Les labels des axes, le
     titre, la légende et les noms des classifiers sont éditables soit via le menu “Edit”, soit en
     cliquant directement sur l’élément concerné dans le graphique. Les valeurs par défaut de tous
     les éléments sont restaurables par l’intermédiaire des commandes appropriées dans le menu
     “Edit” ;

Gestion du redimensionnement de la fenêtre (canvas) : La gestion du redimensionnement
     de la fenêtre principale de DET4J, et par conséquent du canvas, constituait une lourde tâche.
     En effet, il n’a pas été aisé de faire que le graphique reste consistant, utilisable et présentable,
     et que les événements de la souris continuent de fonctionner lors des redimensionnements de
     la fenêtre. DET4J impose une taille minimale de la fenêtre au-delà de laquelle il n’est pas
     possible d’aller. Notons aussi que le redimensionnement constitue une sorte de zoom qui peut
     être utile ;

Edition de la couleur, de l’épaisseur et du type de trait des courbes : Il est possible de
     changer la couleur de chaque courbe de performance par l’intermédiaire d’un “color-chooser”
     qui apparaı̂t lorsqu’on clique sur le bouton adéquat à droite du nom du classifier dans la
     fenêtre des réglages. L’épaisseur (de 1 à 10 pixels) et le type de trait (continu, pointillé, petit
     ou grand traitillé) est modifiable d’une façon analogue. Ces changements sont aussi pris en
     considération par les symboles dans la légende.
5     TRAVAIL EFFECTUÉ ET RÉSULTAT                                                                       18

5.2           Rédaction de la Javadoc
   Pendant la durée du projet DET4J, une partie non négligeable du temps de travail a été
consacrée à la rédaction de la documentation de l’API au format HTML (Javadoc). L’environne-
ment de programmation Eclipse dispose d’un outil de création de Javadoc à partir du code source
(dans lequel on insère certaines commandes spécifiques). Le code de l’application DET4J est donc
entièrement commenté et prêt à être consulté. C’est la raison pour laquelle l’auteur de ce rapport
ne va pas s’attarder sur le code et l’implémentation.

5.3           Packages utilisés
5.3.1         Xerces et JDOM
   Il a été vu au paragraphe 4.2 que SAX a été choisi pour effectuer le parsing des fichiers XML au
format Ragga. SAX, dont l’acronyme veut dire “Simple API for XML”, a été le premier API pour
XML à être largement adopté par la communité des programmeurs Java, et constitue “de facto”
un standard à l’heure actuelle. La dernière version stable de SAX est la 2.0.1 (SAX2). SAX2 est
gratuit et il n’est pas possible d’en posséder une license car il fait partie du domaine public.

    Pour utiliser SAX2, il est nécessaire d’installer un parseur XML pour Java qui supporte les in-
terfaces de SAX2, comme Xerces-J10 . Xerces fait partie du projet XML d’Apache. Le programme
DET4J requiert aussi l’installation de JDOM11 dont le parseur SAX utilise certaines classes (no-
tamment pour représenter les modèles des éléments XML dans Java). Par conséquent les fichiers
xerces.jar et jdom.jar doivent être ajoutés au CLASSPATH de Java.

5.3.2         VectorGraphics
Description du package
   Le package VectorGraphics de la bibliothèque Java FreeHEP12 est mis à dispostion et utilisable
sous les termes de license LGPL. Il permet à tout programme Java d’exporter dans une variété de
formats graphiques vectoriels et bitmap. La gamme des formats vectoriels recense entre autres les
formats PostScript, PDF, EMF, SWF et CGM, tandis que celle des formats bitmap les formats
GFI, PNG, JPG and PPM. Ce package utilise la classe standard java.awt.Graphics2D comme
interface pour le programme utilisateur, ce qui rend plutôt facile son couplage à un quelconque
programme Java. En outre, il met à disposition une boı̂te de dialogue qui permet à l’utilisateur
de choisir entre les différents formats mentionnés ci-dessus et de fixer les paramètres propres à
chaque format. Finalement, VectorGraphics contient un ensemble de classe basiques pouvant être
étendues pour gérer des nouveaux formats de sortie qui viendraient à faire leur apparition. La
figure 12 montre un schéma de l’architecture du package et ce qui suit est extrait du manuel13 .

Comment utiliser le package ?
   En Java, c’est la méthode paint(Graphics g) d’un component qui permet de dessiner un gra-
phique. Dans le corps de cette méthode, l’utilisateur appelle séquentiellement plusieurs méthodes
d’un contexte java.awt.Graphics ou de java.awt.Graphics2D pour réaliser le dessin. Le package
VectorGraphics étend la classe Graphics2D pour permettre aux utilisateurs de continuer de des-
siner vers le même ancien contexte Graphics2D qui leur est familier. Cependant, cette exten-
sion ajoute la gestion des nouveaux formats de sortie. Le code de l’utilisateur pour dessiner
un graphique reste donc le même, autant pour ce qui concerne l’affichage à l’écran que pour
ce qui est de l’écriture dans un format quelconque. Pour utiliser le package VectorGraphics, le
programmeur doit ajouter le code pour afficher la boı̂te de dialogue d’exportation (ExportDia-
log) afin que l’utilisateur puisse sélectionner un format. Cet ajout peut se faire dans un Me-
nuItem (voir l’exemple du manuel en ligne). Pour lancer le programme dont le code employe
ce package, il est impératif d’ajouter au CLASSPATH les fichiers jar suivants : freehep-base.jar,
    10 Siteweb du projet Xerces : http://xerces.apache.org/xerces-j
    11 Siteweb du projet JDOM : http://www.jdom.org/
    12 The FreeHEP Java library : http://java.freehep.org
    13 Manuel en ligne de VectorGraphics : http://java.freehep.org/freehep1.x/vectorgraphics/Manual.html
5   TRAVAIL EFFECTUÉ ET RÉSULTAT                                                                     19

                         Fig. 12 – Architecture du package VectorGraphics

freehep-graphics2d.jar, freehep-graphicsio.jar, qui incluent les formats bitmap de base JPG, PNG
et PPM. Pour inclure en plus le format GIF ainsi qu’un ou plusieurs formats vectoriels, les fi-
chiers jar suivants doivent aussi être ajoutés : freehep-graphicsio-gif.jar, freehep-graphicsio-cgm.jar,
freehep-graphicsio-emf.jar, freehep-graphicsio-pdf.jar, freehep-graphicsio.ps.jar, freehep-graphicsio-
svg.jar et freehep-graphicsio-swf.jar. Le cas échéant, la boı̂te de dialogue d’exportation va auto-
matiquement détecter tous les formats dont les fichiers jar ont été ajoutés au CLASSPATH et
permettre à l’utilisateur de les sélectionner.

Comment dessiner dans un contexte VectorGraphics ?
  Afin d’utiliser les méthodes du package pour dessiner, l’utilisateur a besoin de convertir le
contexte standard java.awt.Graphics en un contexte VectorGraphics. Pour ce faire, on dispose
de la méthode VectorGraphics.create(Graphics g), qui va retourner g si ce dernier est déjà une ins-
tance de VectorGraphics ou alors encapsuler g dans une instance de VectorGraphics (un exemple
de code est disponible dans le manuel en ligne). On pourra ainsi faire appel à toutes les méthodes
de Graphics2D et aux méthodes additionnelles de VectorGraphics.

Fonctionnalités additionnelles du package ?
  La classe VectorGraphics étend Graphics2D avec un certain nombre de fonctionnalités permet-
tant d’écrire de meilleurs formats de sortie. Ces fonctionnalités sont :
   – Les méthodes Draw, Fill, Clear, Clip,... : Ces méthodes (drawLine(), fillOval(), clear-
      Rect(), clipRect(),...) qui prennent normalement en paramètres des nombres entiers ont été
      surchargées avec des méthodes dont les noms sont les mêmes mais qui prennent en paramètres
      des double. Ceci permet de dessiner avec une plus grande précision en continuant d’utiliser
      ces méthodes simples. Une telle précision est requise par les formats vectoriels, souvent des-
      tinés à être exploités par des périphériques demandant une résolution plus haute que celle
      d’un écran (une imprimante par exemple). Les méthodes setLineWidth() et getLineWidth()
      permettent de changer la largeur du trait sans créer explicitement un objet de type Stroke.
   – Les objets PrintColors : La classe PrintColor étend java.awt.Color pour tenir compte des
Vous pouvez aussi lire