Le marché des véhicules autonomes est estimé à plus de 500 milliards d’euros à horizon 2035. Cependant, le développement de ce marché est fortement lié au dépassement de contraintes tant technologiques et matérielles qu’éthiques et sociétales. Ainsi, de nombreuses questions autour de la sécurité se posent.
Une étude réalisée en 2019 sur la perception de 51 pays concernant les voitures autonomes a montré qu'environ 44% des personnes interrogées pensent que les véhicules à conduite autonome sont sûrs. Pour 39%, ils seront suffisamment sûrs pour être utilisés dans moins de 5 ans {1}.
Parmi les défis, il faut arriver à démontrer la sûreté de fonctionnement des systèmes d’IA embarqués. Mais comment garantir la fiabilité des modèles ? Quels critères ont permis à l’IA de prendre sa décision ?
Cet article a pour but de répondre à ces problématiques en présentant, à travers des cas concrets, les fonctionnalités de l’outil Saimple pour assurer la confiance des modèles.
Un véhicule autonome est un véhicule conçu pour rouler sans l’intervention d’un conducteur. Il existe cinq niveaux d’autonomie, allant de l’aide à la conduite à une autonomie complète {2}. Aujourd’hui, la plupart des véhicules récents ont une certaine automatisation de la conduite comme par exemple pour l’aide au stationnement et au freinage d’urgence. Ces dispositifs utilisent des capteurs contenus dans le véhicule récoltant des données, en grande partie, sous forme d’images.
Mais avant de produire un véhicule entièrement autonome, il faut avoir un dispositif de confiance, robuste et répondant aux normes de sécurité en vigueur. Comme annoncé, plusieurs défis quant à la sûreté de fonctionnement de tels véhicules restent à relever.
Par exemple, comment garantir que la performance du système de conduite va se maintenir en cas d’une forte chute de neige, ce qui pourrait perturber les capteurs du véhicule ? Le nombre de cas à considérer est presque infini et il est impossible de tous les tester exhaustivement. Il est donc nécessaire de concevoir des systèmes d’IA qui puissent être robustes par construction.
Afin d’aider cette démarche, Numalis a développé Saimple, un outil qui permet de comprendre pourquoi un modèle (ici un réseau de neurones) a pris chacune de ses décisions. Il permet également de considérer différents types de bruits dans les images pour mesurer la robustesse du modèle aux perturbations auxquelles il peut être confronté. Ainsi, Saimple permettra d’aider à valider le système et d’accroître la confiance que l’utilisateur pourra avoir en celui-ci.
Le cas d’étude traite de la reconnaissance des panneaux de signalisation qui fait partie du cadre classique du développement de véhicules sans chauffeur.
Le jeu de données contient plus de 50.000 images. Il est composé de 43 classes distinctes représentant différents types de panneaux de signalisation allemands :
Ces images de panneaux sont très variées. En effet, dans une même classe, il est possible d’avoir la même image mais avec des variations de paramètres : luminosité, contraste, colorisation et résolution. De plus, elles sont de tailles diverses, allant de 30x30 à 140x140 pixels. Pour la plupart, les tailles d’images de 30x30, dites de petite taille, s’expliquent par le fait qu’elles sont destinées à être analysées par des réseaux embarqués dans des véhicules.
En dépit de la résolution des caméras actuelles, un tel choix de résolution s’explique par le fait que les panneaux doivent être détectés le plus loin possible par le véhicule pour que sa conduite s’y adapte dès que possible.
Ainsi, il est nécessaire de pouvoir classifier des images de panneaux de signalisation, même de petites résolutions, pour pouvoir mieux anticiper la décision du véhicule. Par exemple, dans le cas d’un panneau de signalisation représentant un panneau “stop”, le véhicule doit pouvoir s’arrêter à la ligne et donc commencer son freinage bien avant pour ne pas freiner brutalement juste devant.
Le jeu de données GTRSB utilisé est référencé ci-dessous : https://benchmark.ini.rub.de/?section=gtsrb&subsection=datas
Voici quatre images de la classe 0
Voici quatre images de la classe 21
Comme mentionné précédemment le jeu de données GTSRB est très riche, il contient environ 50 000 images et plus de 40 classes. Néanmoins, le jeu de données n’est pas parfaitement équilibré. Comme certains panneaux de signalisation sont plus rares que d’autres, il est normal d’avoir des classes n’ayant pas le même nombre d’images. Or, un réseau entraîné sur un jeu de données déséquilibré peut avoir des faiblesses pour reconnaître certaines classes trop peu représentées par rapport aux autres classes.
La data augmentation peut permettre de rééquilibrer les classes. Il s’agit d’une technique d’amélioration du jeu de données. Elle consiste à utiliser un échantillon d’images des classes sous représentées pour générer de nouvelles images et ainsi équilibrer le jeu de données.
Après avoir réalisé la data augmentation et ré-entraîné le réseau, on peut alors réexaminer ce dernier avec Saimple afin d’observer si cette dernière a été efficace, de montrer l’impact de la data augmentation sur le modèle et de déterminer si elle a permis de rendre le réseau plus robuste. Pour effectuer une data augmentation, il est possible d’utiliser de nombreuses méthodes de transformation des entrées comme :
Le graphique, ci-dessous, représente la répartition des classes après data augmentation. La couleur orange correspond à l’ajout d’images pour atteindre 500 images par classes.
Pour notre exemple, nous avons choisi d’équilibrer le jeu de données à 500 images par classes en modifiant le zoom, la luminosité et le contraste de certaines images.
Certaines transformations géométriques, comme par exemple la rotation, ne sont pas incluses pour ce cas d’usage.
En effet, il faut que le modèle ne prenne pas en compte des panneaux qui pourraient se refléter soit dans une vitre quelconque (la réflexion) ou soit dans une flaque d’eau (panneaux à l’envers). D’où l’intérêt d’avoir un autre modèle pour s’assurer que les panneaux détectés ne soient pas dans ce type de cas.
Il faut noter que dans ce cas d’étude, la transformation par perspective n’est volontairement pas prise en compte, elle sera utilisée par la suite pour tester le réseau et vérifier ses méthodes de classification c’est-à-dire sa capacité à généraliser.
Pour ce cas d’étude, un réseau de neurones convolutionnel est utilisé. Il s’agit du type de modèle le plus adapté à la classification d’images. Le réseau traite une image en entrée et attribue des scores (probabilités) de classification à chaque classe. Le score le plus élevé correspond à la classe reconnue par le modèle.
L’image choisie est ‘standard’ pour le réseau, elle ressemble aux images du jeu de données d’apprentissage dont le score d’apprentissage est de 96 %. En effet, l’image est un gros plan, centrée.
Maintenant que notre modèle est créé et fonctionnel, nous allons pouvoir le challenger.
Pour cela, nous allons modifier le jeu de données de test et créer de nouvelles images, plus complexes à classifier, que le modèle n’a jamais vu.
La transformation de perspective est une méthode qui consiste à modifier les propriétés d’une image de sorte à ce qu’elle semble être prise d’un autre point de vue. La même image peut donc aboutir à de nombreuses variations, ce qui est très intéressant pour mettre à l’épreuve notre réseau ou enrichir le jeu de données.
Dans les deux exemples qui suivent, un changement de perspective sur l’image est appliqué pour la différencier de notre jeu de données d’apprentissage. Le réseau n’étant pas entraîné sur des images de ce type, il a plus de chance de faire des erreurs et de montrer des signes de faiblesse.
Exemple de transformation d’images permettant d’enrichir le jeu de données, ou ici, de tester le réseau en partant d’images bien classées.
Le modèle a bien classé l’image représentant un panneau de signalisation de limitation de vitesse à 30km/h. Donc prenons une autre image ayant une perspective différente pour notre modèle.
Pour cette image « vue du dessous » , le réseau s’est trompé dans la classification. Il a confondu avec le panneau de limitation à 50km/h. Cette décision peut avoir des impacts sur la sécurité routière.
Mais pourquoi le modèle s’est trompé ?
On remarque que l’image vue du dessous est plus étirée vers le haut ainsi les chiffres sont moins centrés par rapport aux images bien classées.
Il semblerait donc que le modèle base principalement sa décision sur les pixels situés au centre de l’image. Par conséquent, un simple décalage vers le haut ou vers le bas pourrait entraîner une mauvaise classification du modèle. C’est l’hypothèse que nous allons chercher à vérifier par la suite.
Et maintenant, comment peut-on vérifier cette hypothèse ?
Notre réseau entraîné fournit certains résultats de classification, mais il est difficile d’interpréter ce résultat ou même d’appuyer une hypothèse concernant l’explication d’une décision. L’outil Saimple intervient précisément dans ce contexte. En effet, l’analyse de Saimple permet d’extraire des éléments d’explicabilité et d’interprétabilité, et ainsi de valider les suppositions avancées. De cette manière, les vulnérabilités sont identifiées et il est alors possible d’améliorer la robustesse des modèles et d’accélérer les phases d’entraînements des réseaux.
Saimple permet en outre d’identifier les pixels importants qui ont permis au modèle de classifier l’image. Pour chaque pixel, il est possible d’associer un score de relevance qui permet de déterminer l’impact de ce pixel sur la décision en sortie. Un pixel est dit important lorsqu’une valeur appelée relevance est plus élevée que la moyenne. Plus cette valeur est importante et plus le pixel est coloré en rouge ou en bleu suivant si la valeur de relevance est positive ou négative (le pixel influe favorablement pour reconnaître la classe ou au contraire pour diminuer le score de cette classe). Ce score de relevance se calcule en utilisant des méthodes formelles qui s’appuient sur le comportement du réseau sur l’image de départ mais également les images « voisines » (i.e. avec plus ou moins d’altération de ses pixels) de l’image de départ.
Sur l’exemple ci-dessous, les pixels rouges de la relevance correspondent aux pixels de l’image d’entrée qui ont des effets positifs sur la classification de l’entrée comme appartenant à la classe “Speed limit (30km/h)”. Quant aux pixels bleus de la relevance, ce sont les pixels de l’image d’entrée qui ont des effets négatifs dans la classification de l’entrée comme appartenant à la classe “Speed limit (30km/h)”.
Classification correcte
L’image, ci-dessous, a été transformée en changeant la perspective et a été correctement classifiée. Il est possible de remarquer les zones privilégiées par le réseau pour sa prise de décision. En effet, les pixels rouges peuvent être interprétés comme la recherche d’un pattern de chiffre.
Classification incorrecte
Pour l’image ci-dessous, nous avions émis l’hypothèse sur l’origine de la classification erronée. La seule différence avec les autres images bien classées était la position des chiffres dans l’image. On a supposé alors que le modèle fondait ses décisions sur les pixels situés au centre de l’image. Cependant sans moyen à notre disposition pour valider notre hypothèse, celle-ci serait restée à l’état de supposition.
Grâce au résultat produit par Saimple, cette hypothèse semble être vérifiée. En effet, la relevance montre que le modèle analyse en priorité les pixels au centre de l’image, où il a pour habitude de repérer les caractéristiques du panneau.
Ce biais identifié par Saimple peut, par la suite, mener le datascientist à adapter son jeu de données d’entraînement.
La classification d’images est aujourd’hui omniprésente dans le monde de l’intelligence artificielle, elle constitue une étape clé dans la conception de certains systèmes autonomes embarqués comme la voiture sans chauffeur. Ce type de véhicule base sa prise de décision sur les différentes données d’entrées fournies par ses nombreux capteurs (caméra, lidar…). Pour interpréter ces entrées, le système fait appel à plusieurs types d’IA qui se complètent (détecteurs, classifieurs, …). Chaque réseau a donc sa spécialité (classification d’images de véhicules, de routes, de panneaux de signalisation, …) et interagit avec d’autres systèmes (détection de panneaux, de véhicules, …).
Comme évoqué en introduction de ce cas d’utilisation, l’objectif principal est de vérifier que la classification faite par notre modèle sera identique indépendamment de la qualité de l’information qu’il traite. Une image en basse résolution d’un panneau ombragé devra être aussi bien classifiée qu’une image haute résolution d’un panneau bien visible. La notion de robustesse à certains bruits intervient donc dans ce cas. Ces bruits peuvent se caractériser par des changements de luminosité, de perspective, de la qualité de l’image ou de la taille de l’élément dans l’image (la distance du panneau par exemple). Il est donc essentiel de s’assurer que chaque IA interprète convenablement les informations et soit suffisamment robuste pour être mise en service.
Après avoir sélectionné et préparé son jeu de données, le datascientist crée ou récupère un modèle adapté à son besoin pour l’entraîner dessus. Une fois confronté aux résultats de son réseau, il est difficile d’identifier les éléments pertinents des données d’entrées. Les métriques statistiques classiques d’accuracy et de loss s’avèrent insuffisantes pour évaluer la robustesse d’un réseau de manière plus générale. Certains éléments pertinents pour l’humain seront écartés par l’IA lors de la classification et réciproquement. Saimple permet d’une part de visualiser ces éléments, de comprendre comment le réseau classifie, mais aussi d’analyser la robustesse de la classification obtenue.
{2} https://www.sae.org/news/2019/01/sae-updates-j3016-automated-driving-graphic
https://www.cerema.fr/system/files/documents/2020/07/vehicule_autonome.pdf
https://www.visite-medicale-permis-conduire.org/mises-au-point/vehicule-autonome-5-niveaux-autonomie
https://www.inria.fr/sites/default/files/2019-10/inrialivreblancvac-180529073843.pdf