FR 3145822 A1 20240816 FR 2301212 A 20230209 L’invention se rapporte à un procédé d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste, comprenant, en phase d’inférence et pour une donnée d’inférence (108) injectée dans le réseau de neurones : S50) extraire un ensemble de valeurs caractéristiques (1071) pour une pluralité de couches (1011) du réseau de neurones multicouches (100), pour chaque donnée d’inférence (108) injectée dans le réseau de neurones , S60) prédire une classe (104) de la donnée d’inférence (108) ; S70) déterminer une signature courante pour la donnée d’inférence (108), la signature courante comprenant : la classe de la donnée d’inférence (108) ; un vecteur courant (300) ; Un score courant (400) calculé à partir des valeurs du vecteur courant ; S80) valider ou non la donnée d’inférence (108) et la classe associée (104), en fonction de la position du score courant dans la distribution des scores de référence associés à la classe prédite. Figure pour l’abrégé : Fig. 5 Procédé de robustification des réseaux de neurones multicouches par hybridation avec la commande prédictive MPC vis-à-vis d’une attaque antagoniste, utilisant une base de données de signatures de référence La présente invention se rapporte à un procédé et un système de construction d’une base de données de référence à partir d’un réseau de neurones multicouches, ainsi qu’à un procédé et un système d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste. L’avionique des aéronefs propose plusieurs équipements de géolocalisation. Les plus courants sont ceux utilisant les signaux satellite de positionnement (GPS) ou encore les équipements de suivi de la variation de l’inertie du véhicule se référençant à un lieu géographique particulier puis proposant une position géographique par intégration des variations de l’inertie du véhicule. Dans le cas des très petits aéronefs comme des drones, ces équipements sont trop encombrants pour être cumulés lors de la mission. L’avionique privilégie donc les équipements de type GPS pour mettre à disposition la position du drone. En revanche, la fiabilité des équipements GPS ne suffit pas à assurer le niveau de sureté de fonctionnement global, et pour l’atteindre, il est connu d’ajouter un équipement de reconnaissance de position par capture et analyse d’image géographique en la comparant à un ensemble d’image dont le géo-référencement est connu. La comparaison d’image s’envisage par l’utilisation de l’apprentissage automatique de classe de forme et par corrélation entre les classes des images géoréférencées. L’apprentissage automatique utilise des réseaux de neurones artificiels et en particulier les réseaux à convolution (CNN). Lors d’une phase d’apprentissage, chaque prise de vue aérienne est classée afin de lui attribuer des coordonnées terrestres. Lors de la phase d’inférence, une nouvelle photographie est prise, et le réseau de neurones attribue une classe à la nouvelle photographie, ce qui permet de géoréférencer l’image. L’acquisition d’une même zone sous différents angles de prise de vue permet ensuite de déterminer la position de l’aéronef, selon une technique bien connue de l’homme du métier. Cependant, les réseaux de neurones peuvent faire l’objet d’attaques malveillantes, en particulier selon une technique dit antagoniste. Une attaque antagoniste ou adverseriale est une méthode consistant à apporter de petites modifications aux objets de telle sorte que le modèle d'apprentissage automatique commence à les classer de manière erronée. Les réseaux de neurones sont connus pour être vulnérables à de telles attaques. La recherche de méthodes contradictoires a historiquement commencé dans le domaine de la reconnaissance d'images. Il a été démontré que des changements mineurs dans les images, tels que l'ajout d'un bruit insignifiant, peuvent entraîner des changements conséquents dans les prédictions des classificateurs et même complètement confondre les modèles. Par exemple, l’éblouissement d’une caméra par un laser, un oiseau dans le fond de l’image acquise, un défaut de la caméra (irisation par exemple), de la neige ou encore de la pluie peuvent fortement perturber les prédictions du classificateur. Ainsi, l’utilisation de réseaux de neurones pour effectuer de la géolocalisation n’est pas satisfaisante car elle ne permet pas de produire le niveau de confiance équivalent à celui nécessaire au domaine aéronautique. L’invention vise à surmonter les inconvénients précités. Un objet de l’invention est donc un procédé de construction d’une base de données de signatures de référence à partir d’un réseau de neurones multicouches, comprenant, des étapes consistant à : S10) extraire un ensemble de valeurs caractéristiques pour une pluralité de couches du réseau de neurones multicouches, pour chaque donnée d’entraînement injectée dans le réseau de neurones , S20) prédire une classe de la donnée d’entraînement ; S30) calculer une moyenne (MxLi) entre les ensemble de valeurs caractéristiques pour les couches de même rang, la moyenne étant calculée pour les données d’entraînement ayant la même classe ; S40) déterminer une signature de référence pour chaque donnée d’entraînement, la signature de référence comprenant : la classe de la donnée d’entraînement ; - un vecteur de référence, composé d’autant de valeurs qu’il y a de couches à extraire, chaque valeur du vecteur de référence étant calculée à partir d’une distance entre la moyenne des ensembles de valeurs caractéristiques pour ladite couche pour la classe prédite et l’ensemble de valeurs caractéristiques de ladite couche pour la donnée d’entraînement ; - un score de référence basé sur une métrique calculée à partir des valeurs du vecteur de référence ; la base de données de signatures de référence étant composée des signatures de référence. Avantageusement, le réseau de neurones multicouches est du type CNN, l’ensemble de valeurs caractéristiques étant, pour chaque couche, la matrice médiane des cartes d’activation de la couche, et dans lequel, dans l’étape S10), les matrices médianes sont moyennées pour tous les données d’entraînement de façon à obtenir une matrice 2D par couche pour chaque classe. Avantageusement, dans l’étape S10), les données d’entraînement sont issues d’un sous-ensemble de données d’entraînement correctement prédites par le réseau de neurones, les données d’entraînement dudit sous-ensemble étant ensuite triées en fonction de leur probabilité d’appartenir à une des classes, et sélectionnées en prenant une proportion prédéfinie du sous-ensemble trié. L’invention se rapporte aussi à un procédé d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste, comprenant, en phase d’inférence et pour une donnée d’inférence injectée dans le réseau de neurones : S50) extraire un ensemble de valeurs caractéristiques pour une pluralité de couches du réseau de neurones multicouches, pour chaque donnée d’inférence injectée dans le réseau de neurones , S60) prédire une classe de la donnée d’inférence ; S70) déterminer une signature courante pour la donnée d’inférence, la signature courante comprenant : - la classe de la donnée d’inférence ; - un vecteur courant, chaque valeur du vecteur courant correspondant à une couche et étant calculée à partir d’une distance entre l’ensemble de valeurs caractéristiques de ladite couche pour la donnée d’inférence et la moyenne des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement ayant la même classe, ladite moyenne des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement ayant la même classe étant obtenue conformément au procédé précité de construction d’une base de données de signatures de référence ; - Un score courant calculé à partir des valeurs du vecteur courant ; S80) valider ou non la donnée d’inférence et la classe associée, en fonction de la position du score courant dans la distribution des scores de référence associés à la classe prédite, les scores de référence étant obtenus conformément au procédé précité de construction d’une base de données de signatures de référence. Avantageusement, dans l’étape S80), la donnée d’inférence et la classe associée sont validées si le score courant se situe dans les p centiles de la distribution des scores de référence associés à la classe prédite, où p est un seuil prédéfini. Avantageusement le seuil prédéfini est déterminé de façon à maximiser le taux de vrais positifs et/ou à minimiser le taux de faux positifs, le taux de vrais positifs et le taux de faux positifs étant respectivement calculés avec des données d’inférence ayant fait l’objet d’une attaque antagoniste et des données d’inférence correctement prédites par le réseau de neurones. Avantageusement, p=95. Avantageusement, chacune des distances est une distance L1 ou une distance L2. Avantageusement, le nombre de couches extraites est défini en fonction d’un taux d’erreurs résiduelles de la signature courante. Avantageusement : - 10 couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -3 ; - 17 couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -5 ; - 24 couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -7 ; - 33 couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -9 . L’invention se rapporte aussi à un produit programme d’ordinateur comprenant des instructions de code pour la mise en œuvre du procédé précité lorsqu’il est exécuté par un ordinateur. L’invention se rapporte aussi à un support de stockage lisible par ordinateur stockant des instructions qui, lorsqu’elles sont exécutées par un ordinateur, impliquent que l’ordinateur mette en œuvre le procédé précité. L’invention se rapporte aussi à un système de construction d‘une base de données de référence à partir d’un réseau de neurones multicouches, le système étant configuré pour : - extraire un ensemble de valeurs caractéristiques pour une pluralité de couches du réseau de neurones multicouches, pour chaque donnée d’entraînement injectée dans le réseau de neurones , - prédire une classe de la donnée d’entraînement ; - calculer une moyenne entre les ensemble de valeurs caractéristiques pour les couches de même rang, la moyenne étant calculée pour les données d’entraînement ayant la même classe ; - déterminer une signature de référence pour chaque donnée d’entraînement, la signature de référence comprenant : - la classe de la donnée d’entraînement ; - un vecteur de référence, composé d’autant de valeurs qu’il y a de couches à extraire, chaque valeur du vecteur de référence étant calculée à partir d’une distance entre la moyenne des ensembles de valeurs caractéristiques pour ladite couche pour la classe prédite et l’ensemble de valeurs caractéristiques de ladite couche pour la donnée d’entraînement ; - un score de référence basé sur une métrique liée aux valeurs du vecteur de référence ; la base de données de signatures de référence étant composée des signatures de référence. L’invention se rapporte aussi à un système d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste, ledit système étant configuré pour : S50) extraire un ensemble de valeurs caractéristiques pour une pluralité de couches du réseau de neurones multicouches, pour chaque donnée d’inférence injectée dans le réseau de neurones , S60) prédire une classe de la donnée d’inférence ; S70) déterminer une signature courante pour la donnée d’inférence, la signature courante comprenant : - la classe de la donnée d’inférence ; - un vecteur courant, chaque valeur du vecteur courant correspondant à une couche et étant calculée à partir d’une distance entre l’ensemble de valeurs caractéristiques de ladite couche pour la donnée d’inférence et la moyenne des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement ayant la même classe, ladite moyenne des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement ayant la même classe étant obtenue avec le système précité de construction d’une base de données de signatures de référence ; - Un score courant calculé à partir des valeurs du vecteur courant ; S80) valider ou non la donnée d’inférence et la classe associée, en fonction de la position du score courant dans la distribution des scores de référence associés à la classe prédite, les scores de référence étant obtenus avec système précité de construction d’une base de données de signatures de référence. Description des figures D’autres caractéristiques, détails et avantages de l’invention ressortiront à la lecture de la description faite en référence aux dessins annexés donnés à titre d’exemple. La représente un schéma d’un exemple de réseau de neurones artificiel. La illustre les différentes étapes des procédés selon l’invention. La illustre un exemple de calcul de la moyenne entre les ensembles de valeurs caractéristiques pour les couches de même rang, dans la base de données de signatures de référence. La illustre un exemple de calcul du vecteur de référence, dans la base de données de signatures de référence. La illustre le traitement d’un cas normal en inférence. La illustre le traitement d’un cas anormal en inférence. La représente un schéma général d’un réseau de neurones artificiels 100, par exemple un réseau de neurones complètement connecté encore appelé réseau dense. De façon générale, chaque couche intermédiaire d’un réseau peut être connectée totalement ou partiellement à une autre couche. Un réseau de neurones est classiquement composé de plusieurs couches (125, 126, 127, 128) de neurones interconnectés. Le réseau comporte au moins une couche d’entrée 125 et une couche de sortie 128 et plusieurs couches intermédiaires (126, 127) encore appelées couches cachées. Les neurones 129 de la couche d’entrée 125 reçoivent des données d’entrée. Les données d’entrée peuvent être de natures différentes selon l’application visée. Par exemple, les données d’entrée sont des pixels d’une image. Un réseau de neurones a pour fonction générale d’apprendre à résoudre un problème donné, par exemple un problème de classification ou de régression. Un réseau de neurones est, par exemple, utilisé dans le domaine de la classification d’image ou de la reconnaissance d’image ou plus généralement la reconnaissance de caractéristiques qui peuvent être visuelles, audio, textuelles. Chaque neurone d’une couche est connecté, par son entrée et/ou sa sortie, à quelques neurones de la couche précédente ou suivante pour les réseaux de neurones convolutifs (appelés par la suite CNN pour « Convolution Neural Network »), voire à tous les neurones de la couche précédente ou suivante (pour les réseaux de neurones denses ou « fully connected »). Les connexions entre deux neurones 129-130 de deux couches successives se font à travers des synapses artificielles 131. Ainsi, le neurone est juste une fonction qui fait la somme pondérée de ses entrées puis applique une fonction d’activation simple (par exemple force le résultat à zéro s’il est négatif, et le laisse en l’état s’il est positif). Ce résultat sert ensuite d’entrée pour d’autres neurones. Le synapse est donc un poids, un coefficient appliqué à chaque entrée. De façon alternative, il est possible d’implémenter le réseau de neurones de façon matérielle, par exemple via des dispositifs memristifs. Les coefficients des synapses sont optimisés grâce à un mécanisme d’apprentissage du réseau de neurones. Le mécanisme d’apprentissage a pour objectif l’entrainement du réseau de neurones à résoudre un problème défini. Ce mécanisme comporte deux phases distinctes, une première phase de propagation de données de la couche d’entrée vers la couche de sortie et une seconde phase de rétro-propagation d’erreurs de la couche de sortie vers la couche d’entrée avec, pour chaque couche, une mise à jour des poids des synapses. Les erreurs calculées à partir des neurones de sortie à l’issue de la phase de propagation de données sont liées au problème à résoudre. Il s’agit, de manière générale, de déterminer une valeur appelée logit (une prédiction). Lors de la première phase de propagation de données, des données d’apprentissage, par exemple des images ou séquences d’images de référence, sont fournies en entrée des neurones de la couche d’entrée et propagées dans le réseau. Chaque neurone met en œuvre, pendant cette première phase, une fonction d’intégration des données reçues qui consiste à calculer une somme des données reçues pondérées par les coefficients des synapses. Dans le cas d’un CNN, on définit la convolution comme étant le déplacement d’un filtre (matrice de coefficients, les « synapses ») « au-dessus » d’une couche donnée (matrice). Ainsi chaque neurone réalise un produit matriciel entre le filtre et la zone de la couche précédente (sous-matrice de neurones) située sous le filtre. Chaque neurone propage ensuite ce résultat vers les neurones de la couche suivante via d’autres convolutions. Selon les modèles de neurones choisis, la fonction d’intégration qu’il réalise peut varier. L’erreur entre la valeur de sortie des neurones 132 et une valeur attendue ou une valeur cible qui correspond à l’état final des neurones de la couche de sortie que l’on souhaite obtenir en relation avec les données d’entrée d’apprentissage et le problème à résoudre par le réseau est calculée. Par exemple, si le réseau doit résoudre un problème de classification, le neurone qui correspond à la classe qu’il est censé identifier dans les données d’entrée doit être celui qui a le logit maximal parmi tous les autres neurones (correspondants aux autres classes). Plus généralement, à chaque problème particulier à résoudre (classification, régression) on associe une ou plusieurs fonction(s) de coût ou fonction objective à optimiser (par minimisation ou maximisation). Un objectif de la phase de rétro-propagation d’erreurs est de rechercher les paramètres du réseau qui minimisent l’erreur. La fonction objective dépend des coefficients du réseau de neurones. Lors de la seconde phase de rétro-propagation d’erreurs, on calcule l’erreur à partir des neurones de la couche de sortie 128 ; cette erreur est une fonction des poids (coefficients) de toutes les couches du modèle. Puis cette erreur est recalculée localement pour chaque couche en tenant compte des coefficients propres à chaque couche (rétropropagation d’erreur). Ensuite, les coefficients de chaque couche (et de chaque neurone) sont mis à jour de sorte à réduire l’erreur globale finale. Le processus se poursuit pour chaque couche de neurones jusqu’à la dernière couche. Les données d’entrée du réseau peuvent être organisées sous la forme de matrices. Le réseau peut être configuré pour générer en sortie un score ou une information de classification ou tout autre type de sortie adaptée selon le problème à résoudre. Par exemple, si les données d’entrée sont des images ou des caractéristiques extraites d’images ou de séquences d’images, un réseau de neurone peut être configuré pour reconnaitre les objets extraits des images et les classifier selon différentes classes ou catégories prédéfinies. Le problème résolu par le réseau est alors un problème de classification. La illustre les principales étapes du procédé de construction d’une base de données de signatures de référence, et les principales étapes du procédé d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste conforme à l’invention. Ces étapes sont également illustrées par les figures 3 et 4 (pour la construction d’une base de données de signatures de référence) et par les figures 5 et 6 (pour le procédé d’amélioration de la robustesse d’un réseau de neurones multicouches, en inférence). Une donnée d’entraînement 102 est injectée dans le réseau de neurones 100. La donnée d’entraînement peut être tout type de signal pour lequel le réseau de neurones peut être entraîné, en particulier une image 2D, une image 3D, un fichier audio. Sur les figures 3 à 6, les données sont des images 2D, la tâche étant de reconnaître individuellement chaque chiffre de l’image. Cette tâche peut être étendue à tout type de signal (en particulier des images à géoréférencer). Il est essentiel que le réseau de neurones comprenne plusieurs couches. Le réseau de neurones peut être un réseau de neurones convolutif (CNN pour « Convolutional Neural Network »), ou tout autre type de réseau multicouche. Une couche supplémentaire peut être ajoutée en sortie du réseau de neurones, en particulier pour une application de recherche d'images à des fins de géolocalisation, par exemple la couche NetVLAD, inspirée de la représentation d'image "Vector of Locally Aggregated Descriptors" couramment utilisée dans la recherche d'images. Pour chaque donnée d’entraînement 102 (sur les figures, la donnée d’entraînement est un caractère représentant un chiffre de 0 à 9), un ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) est extrait des couches (1011, 1012, 1013, 1014, 1015) du réseau de neurones (étape S10). Par exemple l’ensemble de valeurs caractéristiques 1061 est extrait de la couche 1011. Pour chaque donnée d’entrainement, la valeur caractéristique d’une couche est la matrice médiane des cartes d’activation de ladite couche. Dans le cas où le réseau de neurones multicouches est du type CNN, l’ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) comprend des cartes d’activation. Pour chaque couche et chaque donnée d’entrainement, on calcule la matrice 2D médiane des cartes d’activation. Puis pour chaque couche, on calcule la matrice 2D moyenne des matrices médianes pour toutes les données d’entrainement d’une classe donnée, de façon à obtenir une matrice 2D moyenne par couche pour chaque classe. La dimension des matrices 2D peut être réduite en utilisant un hachage sensible local tel que décrit notamment dans l’article « Near-optimal hashing algorithms for approximate nearest neighbor in high dimensions » (A. Andoni and P. Indyk, Foundations of Computer Science, 2006. FOCS’06. 47th Annual IEEE Symposium on. IEEE, 2006, pp. 459–468). Dans une deuxième étape S20), la classe de la donnée d’entraînement est prédite. Il peut être noté que la prédiction finale du réseau de neurones n’est pas composée d’une seule et unique prédiction mais plutôt d’un vecteur comprenant une probabilité (ou score) pour chaque classe. La prédiction finale du réseau de neurones est généralement la classe ayant la probabilité la plus élevée. Selon un mode de réalisation avantageux, seules les données d’entraînement 102 correctement prédites sont sélectionnées, c’est-à-dire celles pour lesquelles la probabilité maximale est associée à la bonne classe attendue. Une fois que toutes les données correctes ont été obtenues, elles sont triées selon leurs probabilités maximales dans l’ordre décroissant, c’est-à-dire de la « meilleure prédiction » à la « moins bonne ». Il peut ensuite être défini de ne construire la base qu’avec un pourcentage prédéfini du nombre total de données d’entraînement 102, à partir du tri précité, selon l’ordre décroissant. Le pourcentage peut être défini de façon empirique, en procédant à des séries de mesures de vrais positifs et/ou faux positifs (TP/FP) avec des pourcentages différents, en retenant le pourcentage qui aura donné les meilleures résultats en termes de mesures de TP/FP. Cela permet de construire la base de données de référence avec des données très fiables. Dans une troisième étape S30), les données d’entraînement 102 pour lesquelles la même classe a été prédite sont identifiées comme telles. Sur la , cela correspond par exemple à tous les caractères pour lesquels le même chiffre a été identifié. Pour ces données ayant la même classe prédite, une moyenne entre les ensembles de valeurs caractéristiques est calculée, pour des couches de même rang. Par exemple pour la couche 1011, la moyenne est calculée entre les ensembles de valeurs caractéristiques 1061 pour différentes données d’entraînement 102 pour lesquelles le même chiffre a été prédit. Dans le cas particulier où le réseau de neurones multicouches est du type CNN, chaque ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) est la matrice 2D médiane des cartes d’activation. Puis les matrices médianes sont moyennées de façon à obtenir une matrice 2D par couche pour chaque classe. Dans l’étape S30), les matrices 2D sont donc moyennées pour chaque couche, pour les données d’entraînement ayant la même classe. Sur la , on retrouve ainsi une moyenne M1L1 pour la couche 1011 et la classe 1 (correspondant au chiffre « 1 » reconnu par le réseau de neurones), une moyenne M1L2 pour la couche 1012 et la classe 1, une moyenne M1L3 pour la couche 1013 et la classe 1, une moyenne M1L4 pour la couche 1014 et la classe 1, et une moyenne M1L5 pour la couche 1015 et la classe 1. En généralisant, on obtient des moyennes MxLi, x étant la classe, et i la couche. La illustre l’étape S40) du procédé de construction de la base de données de signatures de référence. Pour cette étape, les mêmes données d’entrainement que celles qui avaient été injectées pour les étapes S10) à S30) sont à nouveau injectées dans le réseau de neurones, et la classe est prédite pour cette deuxième passe. Pour chaque donnée d’entraînement, le réseau de neurones prédit la classe de la donnée d’entraînement. Puis, pour chaque donnée d’entraînement, une comparaison est effectuée, couche par couche, entre l’ensemble de valeurs caractéristiques de la couche et la moyenne des ensembles de valeurs caractéristiques pour la couche calculée lors de l’étape S30). Le résultat de la comparaison forme un vecteur de référence 200, composé d’autant de valeurs (201, 202, 203, 204, 205) qu’il y a de couches (1011, 1012, 1013, 1014 et 1015) à extraire. Dans le cas où le réseau de neurones multicouches est du type CNN, chaque valeur du vecteur de référence 200 est calculé en comparant la matrice 2D moyenne des matrices médianes de la classe pour cette couche et la matrice 2D médiane pour cette couche (matrice 2D médiane propre à la donnée d’entraînement). La distance, permettant de mesurer chaque valeur (201, 202, 203, 204, 205) du vecteur de référence 200, peut être une distance L1 ou une distance L2. En particulier, la distance L2 peut être définie de la façon suivante : valeur = (matrice 2D moyenne des matrices médianes de la classe pour cette couche)² - (matrice 2D médiane pour cette couche)². Un score de référence 210 est calculé pour chaque donnée de référence. Le score courant est une métrique calculée à partir des valeurs du vecteur courant. Selon un mode de réalisation, le score de référence 210 est calculé en mettant au carré chaque valeur (201, 202, 203, 204, 205) du vecteur de référence 200, puis en additionnant les valeurs mises au carré. Il s’agit d’une distance L2, mais le score de référence 210 pourrait également être calculé avec une distance L1, en additionnant les valeurs absolues des valeurs (201, 202, 203, 204, 205) du vecteur de référence 200, ou encore en utilisant une autre distance L2. Les meilleurs résultats sont obtenus en sommant les carrés. Ainsi, la signature de référence, pour chaque donnée d’entraînement, courante comprend la classe de la donnée d’entraînement, le vecteur de référence, et le score de référence. La base de données de signatures de référence 220 est composée des signatures de référence. Sur la , la base de données de signatures de référence 220 comprend l’association de chaque classe 104 avec les vecteurs de référence et les scores de références 210 des données d’entraînement pour lesquelles cette classe est prédite. Il s’agit d’une autre façon de structurer la base de données de signatures de référence 220. La permet d’illustrer le procédé d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste, en phase d’inférence. Les principales étapes sont illustrées par la . La première étape S50) consiste à extraire un ensemble de valeurs caractéristiques (1071, 1072, 1073, 1074, 1075) pour une pluralité de couches (101) du réseau de neurones multicouches 100, pour chaque donnée d’inférence 108 injectée dans le réseau de neurones. Les ensembles de valeurs caractéristiques sont définis de la même façon que pour la phase d’entraînement. Dans une étape S60), la classe de la donnée d’inférence 108 est prédite. L’étape S70) consiste à déterminer une signature courante 109 pour la donnée d’inférence 108. La signature courante comprend : - la classe de la donnée d’inférence 108 ; - un vecteur courant 300, calculé de la même manière que le vecteur de référence. Chaque valeur (301, 302, 303, 304, 305) du vecteur courant 300 correspond à une couche (respectivement 1011, 1012, 1013, 1014, 1015) et est calculée à partir d’une distance entre l’ensemble de valeurs caractéristiques (1071, 1072, 1073, 1074, 1075) de ladite couche pour la donnée d’inférence 108 et la moyenne (M4L1, M4L2, M4L3, M4L4, M4L5) définie précédemment. - Un score courant 400 basée sur une métrique calculée à partir des valeurs du vecteur courant, de la même façon que durant la construction de la base de données de signatures de référence. Par exemple, pour la première couche 1011, l’ensemble de valeurs caractéristiques 1071 est comparé à la moyenne M4L1, ce qui fournit une valeur 301 du vecteur courant 300. Selon un mode de réalisation, le score courant 400 est calculé en mettant au carré chaque valeur (301, 302, 303, 304, 305) du vecteur courant 300, puis en additionnant les valeurs mises au carré. Il s’agit d’une distance L2, mais le score courant 400 pourrait également être calculé avec une distance L1, en additionnant les valeurs absolues des valeurs (301, 302, 303, 304, 305) du vecteur courant 300. Ainsi, la signature courante est composée de la classe de la donnée d’inférence, du vecteur courant et du score courant. Dans une étape S80), une recherche est effectuée dans la base de données de signatures de référence, afin de déterminer la position du score courant dans la distribution des scores de référence associés à la classe prédite. Les scores de référence sont extraits de la base de données de signatures de référence. Selon un mode de réalisation on détermine dans quel percentile se situe ce score courant dans la distribution des scores de référence 210 associés à la classe prédite. Si le score courant 400 se situe dans les p centiles de la distribution des scores de référence 210 associés à la classe prédite, où p est un seuil prédéfini, la donnée d’inférence, et la classe prédite pour la donnée d’inférence, sont validées : la donnée d’inférence est considérée comme étant normale. La illustre un tel cas. A contrario, si le score courant 400 ne se situe pas dans les p centiles, la donnée d’inférence est considérée comme étant corrompue, comme l’illustre la . Sur la , le chiffre « 7 » a été classifié comme étant un « 2 », ce qui a entraîné un calcul du score courant en dehors de la distribution des scores de référence associés à la classe « 2 ». Le seuil est empirique, et peut être déterminé de façon à maximiser le taux de vrais positifs et/ou à minimiser le taux de faux positifs, le taux de vrais positifs et le taux de faux positifs étant calculés respectivement avec des données d’inférence ayant fait l’objet d’une attaque antagoniste et avec des données « propres » pour lesquelles le réseau de neurone fait des prédictions correctes. Il peut être avantageux d’utiliser un seuil p=95. Le procédé selon l’invention ne requiert pas d’entraîner de réseau de neurones. Il nécessite uniquement de stocker une base de données de signatures de référence, ainsi que la base de données des moyennes de chaque couche de chaque classe (MxLi, où x est un indice de classe, et i un indice de couche), qui stocke la moyenne de chaque couche pour chaque classe (MxLi) calculée en phase de construction de la base des signatures de référence. Les bases de données sont peu volumineuses, et peuvent ainsi être embarquées dans des aéronefs tels que des drones. Par exemple, avec un réseau de neurones de type Resnet50/Imagenet (1 200 000 images entraînées, 1000 classes), la base de données de signature de référence a une taille égale à 87 Mo (1 200 000 x 19 (17 scores de référence + 1 classe + 1 score de référence) x 4 octets (format flottant 32 bits)/(1024*1024)). La base de données des moyennes de couches a une taille égale à 648 Mo (17 x 100 x 100 x 1000 (100 x 100 correspond à la taille des représentations internes) x 4 octets / (1024*1024)). De plus, le procédé selon l’invention ne requiert pas de mise à jour de l’architecture du réseau de neurones. En effet, il suffit d’ajouter, de façon externe, un module d’extraction des ensembles de valeurs caractéristiques. Enfin, la recherche proximité entre la signature courante et les signatures de référence est une comparaison qui n’a pas un coût algorithmique élevé. Ainsi, le procédé selon l’invention n’ajoute pas plus de temps de calcul que celui nécessaire pour comparer la signature de référence et la signature courante produite en temps réel. Le temps d’extraction du vecteur peut être rendu négligeable par utilisation d’unités de traitement graphiques ayant une architecture de traitement en parallèle (GPU). Le nombre de couches extraites pour les données d’entrainement et pour les données d’inférence peut être défini en fonction d’un taux d’erreurs résiduelles toléré. En effet, il est possible de calculer un mot de signature correspondant à une corrélation entre le vecteur courant et le vecteur de référence le plus proche du vecteur courant Ce mot de signature comprend L éléments correspondant au nombre de couches extraites. Dans le cas où, pour chaque couche, la corrélation vaut soit zéro soit un, le mot de signature représente valeurs possibles. Par convention, le mot de signature identité est un mot de L bits de valeur 1. Ainsi, le mot d’erreur représente le nombre de valeurs erronées corrélées qui représente valeurs possibles. TS est défini ainsi : TS = nombre d’erreurs/nombre total de valeurs = / Dans l’hypothèse d’une similarité (aucun bit du mot à zéro, 0 erreurs, x=0) et en relation avec la taille du réseau : nb couches TS 10 9,8E-04 -3 17 7,6E-06 -5 24 6,0E-08 -7 33 1,2E-10 -9 TS est le taux d'erreur de la signature, qui quantifie la fiabilité de l'ensemble du système de corrélation. La distance est un critère de valorisation de chaque bit du taux d'erreur TS par calcul : chaque bit du vecteur est valorisé à un quand la distance entre la signature de référence et la signature courante est nulle ou à zéro quand la distance est infinie (ou supérieur à un seuil). Ainsi, dix couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -3 . Dix-sept couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -5 . Vingt-quatre couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -7 . Trente-trois couches sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -9 . Lors du développement d’un système utilisant des réseaux de neurones, le nombre de couches extraites indique de quel niveau de criticité (ou DAL pour « Development Assurance Level ») le système est le plus proche. En effet, les standards Eurocae ED-12 (équivalent au standard RTCA DO-178) et Eurocae ED-80 (équivalent au standard RTCA DO-254) fixent les conditions de sécurité applicables respectivement aux logiciels critiques de l'avionique et aux équipements électroniques d'avionique. Les standards comprennent quatre niveaux de criticité (classés de A à D), définis de la façon suivante : Niveau A : Un défaut du système ou sous-système étudié peut provoquer un problème catastrophique - Sécurité du vol ou atterrissage compromis - Crash de l'avion (taux d’erreurs résiduelles inférieur à 10 -9 ) . Niveau B : Un défaut du système ou sous-système étudié peut provoquer un problème dangereux entraînant des dégâts sérieux voire la mort de quelques occupants (taux d’erreurs résiduelles inférieur à 10 -7 ) . Niveau C : Un défaut du système ou sous-système étudié peut provoquer un problème majeur entraînant un dysfonctionnement des équipements vitaux de l'appareil (taux d’erreurs résiduelles inférieur à 10 -5 ) . Niveau D : Un défaut du système ou sous-système étudié peut provoquer un problème mineur sans effet sur la sécurité du vol (taux d’erreurs résiduelles inférieur à 10 -3 ) . Ainsi, il est possible de définir un nombre de couches à extraire en fonction du niveau de criticité attendu. Par ailleurs le nombre de couches à extraire peut être adapté à la complexité du système utilisant le réseau de neurones, ce qui permet un ajustement de l’effort de calcul et la consommation des ressources associées selon le contexte d’utilisation de la solution (embarqué ou non). Selon un mode de réalisation, seules les couches 101 les moins corrélées entre elles, parmi l’ensemble des couches du réseau de neurones multicouches, sont extraites. Cela permet de n’utiliser que les couches qui susceptibles de fortement varier d’une donnée d’entraînement à l’autre. Le fait de disposer d’un niveau de confiance vérifiable pour la reconnaissance des formes dans une image permet de relier les informations géographiques de cette image à la position de l’aéronef avec un niveau de confiance quantifiable, de façon similaire à celui proposé par les systèmes de navigation par signaux satellite (GPS). Il est donc envisageable de contrôler la position de l’aéronef à partir d’images, ou de succession d’images, prises directement en opération et en cohérence avec la dynamique de l’aéronef. L’invention a été décrite pour des données d’entrée de type images 2D. Elle peut s’étendre à tout type de donnée d’entrée, par exemple de la voix, du texte, une image quelconque, ou tout type de donnée pour laquelle une classe doit être prédite par un réseau de neurones structuré en couches. L’invention peut être mise en œuvre en tant que programme d’ordinateur comportant des instructions pour son exécution. Le programme d’ordinateur peut être enregistré sur un support d’enregistrement lisible par un processeur. La référence à un programme d'ordinateur qui, lorsqu'il est exécuté, effectue l'une quelconque des fonctions décrites précédemment, ne se limite pas à un programme d'application s'exécutant sur un ordinateur hôte unique. Au contraire, les termes programme d'ordinateur et logiciel sont utilisés ici dans un sens général pour faire référence à tout type de code informatique (par exemple, un logiciel d'application, un micro logiciel, un microcode, ou toute autre forme d'instruction d'ordinateur) qui peut être utilisé pour programmer un ou plusieurs processeurs pour mettre en œuvre des aspects des techniques décrites ici. Les moyens ou ressources informatiques peuvent notamment être distribués ("Cloud computing"), éventuellement selon des technologies de pair-à-pair. Le code logiciel peut être exécuté sur n'importe quel processeur approprié (par exemple, un microprocesseur) ou cœur de processeur ou un ensemble de processeurs, qu'ils soient prévus dans un dispositif de calcul unique ou répartis entre plusieurs dispositifs de calcul (par exemple tels qu’éventuellement accessibles dans l’environnement du dispositif). Le code exécutable de chaque programme permettant au dispositif programmable de mettre en œuvre les processus selon l'invention, peut être stocké, par exemple, dans le disque dur ou en mémoire morte. De manière générale, le ou les programmes pourront être chargés dans un des moyens de stockage du dispositif avant d'être exécutés. L'unité centrale peut commander et diriger l'exécution des instructions ou portions de code logiciel du ou des programmes selon l'invention, instructions qui sont stockées dans le disque dur ou dans la mémoire morte ou bien dans les autres éléments de stockage précités. L’invention peut être implémentée sur un dispositif de calcul basé, par exemple, sur un processeur embarqué. Le processeur peut être un processeur générique, un processeur spécifique, un circuit intégré propre à une application (connu aussi sous le nom anglais d’ASIC pour « Application-Specific Integrated Circuit ») ou un réseau de portes programmables in situ (connu aussi sous le nom anglais de FPGA pour « Field-Programmable Gate Array »). Le dispositif de calcul peut utiliser un ou plusieurs circuits électroniques dédiés ou un circuit à usage général. La technique de l'invention peut se réaliser sur une machine de calcul reprogrammable (un processeur ou un micro-contrôleur par exemple) exécutant un programme comprenant une séquence d'instructions, ou sur une machine de calcul dédiée (par exemple un ensemble de portes logiques comme un FPGA ou un ASIC, ou tout autre module matériel). L’invention peut aussi être implémentée dans un système de localisation embarqué dans un porteur mobile comprenant en outre un ou plusieurs dispositifs d’acquisition d’image. La position du porteur mobile calculée par l’invention peut être restituée à un utilisateur via une interface homme machine. Procédé de construction d’une base de données de signatures de référence à partir d’un réseau de neurones multicouches, comprenant, des étapes consistant à : S10) extraire un ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) pour une pluralité de couches (1011, 1012, 1013, 1014, 1015) du réseau de neurones multicouches (100), pour chaque donnée d’entraînement (102) injectée dans le réseau de neurones , S20) prédire une classe de la donnée d’entraînement (102) ; S30) calculer une moyenne (MxLi) entre les ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) pour les couches de même rang, la moyenne (MxLi) étant calculée pour les données d’entraînement (102) ayant la même classe ; S40) déterminer une signature de référence pour chaque donnée d’entraînement (102), la signature de référence comprenant : la classe de la donnée d’entraînement (102) ; un vecteur de référence (200), composé d’autant de valeurs (201, 202, 203, 204, 205) qu’il y a de couches (1011, 1012, 1013, 1014, 1015) à extraire, chaque valeur (201, 202, 203, 204, 205) du vecteur de référence (200) étant calculée à partir d’une distance entre la moyenne (MxLi) des ensembles de valeurs caractéristiques pour ladite couche pour la classe prédite et l’ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) de ladite couche pour la donnée d’entraînement (102) ; un score de référence (210) basé sur une métrique calculée à partir des valeurs (201, 202, 203, 204, 205) du vecteur de référence ; la base de données de signatures de référence étant composée des signatures de référence. Procédé selon la revendication 1, dans lequel le réseau de neurones multicouches est du type CNN, l’ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) étant, pour chaque couche, la matrice médiane des cartes d’activation de la couche, et dans lequel, dans l’étape S10), les matrices médianes sont moyennées pour tous les données d’entraînement de façon à obtenir une matrice 2D par couche pour chaque classe (102). 3. Procédé selon l’une des revendications précédentes, dans lequel, dans l’étape S10), les données d’entraînement (102) sont issues d’un sous-ensemble de données d’entraînement (102) correctement prédites par le réseau de neurones (100), les données d’entraînement (102) dudit sous-ensemble étant ensuite triées en fonction de leur probabilité d’appartenir à une des classes (104), et sélectionnées en prenant une proportion prédéfinie du sous-ensemble trié.. Procédé d’amélioration de la robustesse d’un réseau de neurones multicouches vis-à-vis d’une attaque antagoniste, comprenant, en phase d’inférence et pour une donnée d’inférence (108) injectée dans le réseau de neurones : S50) extraire un ensemble de valeurs caractéristiques (1071, 1072, 1073, 1074, 1075) pour une pluralité de couches (1011, 1012, 1013, 1014, 1015) du réseau de neurones multicouches (100), pour chaque donnée d’inférence (108) injectée dans le réseau de neurones , S60) prédire une classe (104) de la donnée d’inférence (108) ; S70) déterminer une signature courante pour la donnée d’inférence (108), la signature courante comprenant : la classe de la donnée d’inférence (108) ; un vecteur courant (300), chaque valeur (301, 302, 303, 304, 305) du vecteur courant (300) correspondant à une couche et étant calculée à partir d’une distance entre l’ensemble de valeurs caractéristiques (1071, 1072, 1073, 1074, 1075) de ladite couche pour la donnée d’inférence (108) et la moyenne (ML1, ML2, ML3, ML4, ML5) des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement (102) ayant la même classe, ladite moyenne des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement (102) ayant la même classe étant obtenue conformément au procédé de construction d’une base de données de signatures de référence selon l’une des revendication 1 à 3 ; Un score courant (400) calculé à partir des valeurs du vecteur courant ; S80) valider ou non la donnée d’inférence (108) et la classe associée (104), en fonction de la position du score courant dans la distribution des scores de référence associés à la classe prédite, les scores de référence étant obtenus conformément au procédé de construction d’une base de données de signatures de référence selon l’une des revendication 1 à 3. Procédé selon la revendication 4, dans lequel, dans l’étape S80), la donnée d’inférence (108) et la classe associée (104) sont validées si le score courant se situe dans les p centiles de la distribution des scores de référence associés à la classe prédite, où p est un seuil prédéfini. 6. Procédé selon la revendication 5, dans lequel le seuil prédéfini est déterminé de façon à maximiser le taux de vrais positifs et/ou à minimiser le taux de faux positifs, le taux de vrais positifs et le taux de faux positifs étant respectivement calculés avec des données d’inférence ayant fait l’objet d’une attaque antagoniste et des données d’inférence correctement prédites par le réseau de neurones. Procédé selon l’une des revendications 5 ou 6, dans lequel p=95. 8. Procédé selon l’une des revendications 1 à 7, dans lequel chacune des distances est une distance L1 ou une distance L2. 9. Procédé selon l’une des revendications précédentes, dans lequel le nombre de couches extraites (101) est défini en fonction d’un taux d’erreurs résiduelles de la signature courante. 10. Procédé selon la revendication 9, dans lequel : - 10 couches (101) sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -3 ; - 17 couches (101) sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -5 ; - 24 couches (101) sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -7 ; - 33 couches (101) sont extraites pour un taux d’erreurs résiduelles inférieur à 10 -9 . 11. Produit programme d’ordinateur comprenant des instructions de code pour la mise en œuvre du procédé selon l’une des revendications 1 à 10 lorsqu’il est exécuté par un ordinateur. 12. Support de stockage lisible par ordinateur stockant des instructions qui, lorsqu’elles sont exécutées par un ordinateur, impliquent que l’ordinateur mette en œuvre le procédé selon l’une des revendications 1 à 10. 3Système (113) de construction d‘une base de données de référence à partir d’un réseau de neurones multicouches, le système étant configuré pour : - extraire un ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) pour une pluralité de couches (1011, 1012, 1013, 1014, 1015) du réseau de neurones multicouches (100), pour chaque donnée d’entraînement (102) injectée dans le réseau de neurones , - prédire une classe de la donnée d’entraînement (102) ; - calculer une moyenne (MxLi) entre les ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) pour les couches de même rang, la moyenne (MxLi) étant calculée pour les données d’entraînement (102) ayant la même classe ; - déterminer une signature de référence pour chaque donnée d’entraînement (102), la signature de référence comprenant : la classe de la donnée d’entraînement (102) ; un vecteur de référence (200), composé d’autant de valeurs (201, 202, 203, 204, 205) qu’il y a de couches (1011, 1012, 1013, 1014, 1015) à extraire, chaque valeur (201, 202, 203, 204, 205) du vecteur de référence (200) étant calculée à partir d’une distance entre la moyenne (MxLi) des ensembles de valeurs caractéristiques pour ladite couche pour la classe prédite et l’ensemble de valeurs caractéristiques (1061, 1062, 1063, 1064, 1065) de ladite couche pour la donnée d’entraînement (102) ; un score de référence (210) basé sur une métrique liée aux valeurs (201, 202, 203, 204, 205) du vecteur de référence ; la base de données de signatures de référence étant composée des signatures de référence. 4Système d’amélioration de la robustesse d’un réseau de neurones multicouches (115) vis-à-vis d’une attaque antagoniste, ledit système étant configuré pour : S50) extraire un ensemble de valeurs caractéristiques (1071, 1072, 1073, 1074, 1075) pour une pluralité de couches (1011, 1012, 1013, 1014, 1015) du réseau de neurones multicouches (100), pour chaque donnée d’inférence (108) injectée dans le réseau de neurones , S60) prédire une classe (104) de la donnée d’inférence (108) ; S70) déterminer une signature courante pour la donnée d’inférence (108), la signature courante comprenant : la classe de la donnée d’inférence (108) ; un vecteur courant (300), chaque valeur (301, 302, 303, 304, 305) du vecteur courant (300) correspondant à une couche et étant calculée à partir d’une distance entre l’ensemble de valeurs caractéristiques (1071, 1072, 1073, 1074, 1075) de ladite couche pour la donnée d’inférence (108) et la moyenne (MxLi) des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement (102) ayant la même classe, ladite moyenne des ensembles de valeurs caractéristiques pour ladite couche pour les données d’entraînement (102) ayant la même classe étant obtenue avec le système de construction d’une base de données de signatures de référence selon la revendication 13 ; Un score courant (400) calculé à partir des valeurs du vecteur courant ; S80) valider ou non la donnée d’inférence (108) et la classe associée (104), en fonction de la position du score courant dans la distribution des scores de référence associés à la classe prédite, les scores de référence étant obtenus avec le système de construction d’une base de données de signatures de référence selon la revendication 13.