Le cerveau des voitures autonomes : comment l'IA pilote les véhicules modernes
Les véhicules autonomes (VA), ou même les véhicules avec systèmes avancés d'aide à la conduite (ADAS), s'appuient sur des données provenant de nombreux capteurs — multiples caméras, lidar, radar, et parfois même sonar. Gérer les flux de données venant de cette panoplie de capteurs est une tâche énorme et, en même temps, critique. Toutes ces données doivent être transformées en information en temps réel pour être utilisées pour conduire la voiture au moins aussi bien que si un conducteur humain parfait était aux commandes. « Sur la route, les conducteurs humains doivent être conscients de leur environnement actuel, interagir avec d'autres conducteurs, et prendre des décisions. Comme les conducteurs humains, les VA devraient percevoir, interagir et prendre des décisions aussi. De plus, les VA devraient construire une bonne relation avec leurs passagers. »1
Ces fonctions s'appuient sur l'intelligence artificielle (IA) pour assimiler les données des différents capteurs et les combiner pour une image instantanée du véhicule et de son environnement dynamique — le processus appelé fusion de capteurs. De manière optimale pour l'usage automobile, l'IA emploie des réseaux de neurones profonds (DNN). Modélisés sur la façon dont l'information est traitée par le cerveau humain, les DNN apprennent comment traverser le monde réel de la conduite en apprenant de l'expérience, plutôt qu'en se faisant dire quoi faire par un programmeur. Le DNN fonctionne en acceptant de multiples entrées, en leur assignant différents poids et en tirant des inférences. Il nécessite une plateforme de calcul extrêmement performante mais économe en énergie pour faire tout cela en « temps réel ». Cela peut être accéléré en utilisant un accélérateur de traitement.
Mettre l'IA en action
Pour apprendre ce qui entre dans une plateforme haute performance pour l'IA automobile, j'ai interviewé Gil Abraham de CEVA, Inc. à propos de leurs outils pour l'implémenter.
L'unité Vision et IA de CEVA a ce qu'Abraham a appelé trois piliers : NeuPro-M, qui est le processeur IA ; SensPro, qui est un hub de capteurs processeur de signal numérique (DSP) haute performance ; et le logiciel CDNN-Invite. CDNN-Invite permet aux fabricants d'entrer leurs propres accélérateurs DNN propriétaires pour co-fonctionner avec le processeur IA NeuPro-M de CEVA ainsi que le DSP SensPro et profiter d'un système unifié qui peut être géré centralement par le même kit de développement logiciel (SDK) de mémoire et de flux.
Le DSP SensPro peut effectuer le traitement de signal sur les entrées de nombreux capteurs différents, incluant multiples lidars, radars et caméras et les convoluer — un processus appelé fusion de capteurs, qui rassemble les entrées de nombreux capteurs. C'est critique pour l'usage automobile car chaque capteur a ses propres limitations.
Par exemple :
Les caméras peuvent avoir une très haute résolution pour sentir les détails fins. Mais vous avez typiquement besoin de plus d'une pour couvrir les angles morts du véhicule, la vue arrière, la vue surround, et plusieurs caméras frontales avec différentes longueurs focales. Chaque caméra fournira un flux de données séparé. Aussi, les caméras ne peuvent pas être comptées pour bien fonctionner la nuit ou si elles font face au soleil.
Le radar fonctionne bien la nuit et peut fournir des mesures de distance. Mais il n'a pas une résolution assez élevée pour percevoir la position précise d'un objet ou distinguer entre plusieurs objets proches les uns des autres. Il peut échouer à détecter des objets stationnaires ou à mouvement lent et ne peut pas non plus détecter la « sémantique » de la scène : couleur et forme des objets — pour cela vous avez besoin de caméras.
Le lidar agit comme sa propre source de lumière donc il performe bien dans l'obscurité et la lumière du jour. Il fournit aussi des données de mesure rapides et précises avec une résolution assez haute pour une détection d'espace libre précise en temps réel tout en suivant plusieurs objets dans une scène. Mais pour avoir assez de points de données lidar, vous auriez besoin de cinq ou six de ces dispositifs coûteux montés sur un véhicule.
Le DSP SensPro peut prendre des entrées de ceux-ci, ainsi que des capteurs temps de vol (ToF), unités de mesure inertielle (IMU), traiter efficacement les algorithmes pour la localisation et cartographie simultanées (SLAM) et, en les utilisant tous, peut créer une « conscience contextuelle » — une image complète de la situation de l'automobile et de son environnement. Vous pouvez aussi ajouter un jeu d'instructions dédié dans le matériel pour obtenir une accélération supplémentaire d'autres traitements spécifiques si nécessaire.
Intégration du système
NeuPro-M adresse de nombreux défis clés des fonctions de véhicule autonome incluant opération à haute vitesse et faible latence scalable, faible consommation d'énergie, haute sécurité, et la capacité de répondre aux exigences fonctionnelles de la norme ISO 26262 pour les systèmes électriques/électroniques liés à la sécurité dans les véhicules de production routière. Il est aussi scalable, donc par exemple, il peut être utilisé pour des capteurs uniques, des grappes de capteurs dans une zone, ou il peut même être embarqué comme partie de l'unité de contrôle moteur (ECU) de l'automobile.
Architecture d'une plateforme IA automobile haute performance
La fonction du processeur IA CEVA NeuPro-M est de prendre des décisions de conduite de haut niveau. Ces décisions sont basées sur les entrées DNN qui fournissent une information situationnelle, telle que : Y a-t-il des voitures en approche ; l'automobile reste-t-elle dans sa voie ; quelle est la position absolue (SLAM) ?
Le processeur IA NeuPro-M est le décideur quant aux actions à entreprendre, étant donné l'information qu'il reçoit. L'IA nécessite un nombre massif de calculs pour prendre des décisions, et ceux-ci doivent être faits en temps quasi réel. Il faut donc un processeur puissant. Pour les applications automobiles, il est aussi nécessaire de minimiser la consommation d'énergie — car le nombre de calculs augmente et le temps pour les effectuer diminue, la puissance consommée augmente. La mesure de la performance du processeur peut être résumée en un nombre : téra opérations par seconde par watt (TOPS/watt) — plus le nombre est élevé, meilleure est la performance. L'efficacité énergétique du NeuPro-M est de 24 TOPS/watt, ce qui est significativement plus élevé que la plupart des autres processeurs IA automobiles.
La sécurité est d'une importance capitale — en fait, vous pouvez dire que la sécurité et la sûreté sont les exigences les plus importantes pour les applications automobiles. Le processeur IA dans un véhicule autonome est le conducteur en charge. Les réseaux de neurones qui effectuent le traitement IA assignent des poids à chacune de leurs entrées, et ces poids sont vulnérables à la falsification malveillante. Les systèmes de sécurité sont donc une pièce intégrale du processeur pour se protéger contre ces attaques.
Optimisation de la performance
Pour optimiser la performance, il est important de réaliser que peu importe à quel point le processeur est rapide, le système peut rencontrer un goulot d'étranglement à cause de limitations de bande passante sur le mouvement de l'information vers le processeur, principalement à cause de limitations d'interface système en termes de mémoire. Les unités de calcul travaillent beaucoup plus vite que le temps qu'il faut pour stocker et récupérer les énormes quantités de données pour informer la mémoire. Une façon d'adresser cela est de diriger un flux continu de données vers le processeur plutôt que d'attendre assez d'information pour effectuer un calcul particulier.
Une autre façon d'optimiser la performance est d'être adaptatif — d'utiliser une topologie adaptative modulaire. Les topologies du processeur peuvent être optimisées pour traiter différents types de capteurs et effectuer différents types d'opérations. Une fonction, par exemple, pourrait être d'optimiser l'efficacité du groupe motopropulseur, ce qui nécessite beaucoup de mathématiques, ou d'un autre côté cela pourrait juste être le traitement d'un seul capteur.
Si vous avez besoin de calculer quelque chose très précisément, vous pourriez utiliser l'arithmétique à virgule flottante au lieu de point fixe, à l'intérieur d'un processeur vectoriel. Une autre façon d'adresser la réduction de bande passante, est de compresser les données, donc vous n'avez pas à tout bouger dans le système. Ce sont des correctifs logiciels, mais vous devez aussi regarder à optimiser les DSP et le processeur IA, également, en faisant une plongée profonde pour adresser tous les goulots d'étranglement dans chacun de ces domaines.
Traitement parallèle
Le processeur NeuPro-M (NPM) a trois parties (Voir Figure 2) : Le contrôleur maître ; le sous-système commun NPM ; et le moteur NPM. Le processeur peut inclure de un à huit moteurs, qui peuvent être sélectionnés pour répondre aux besoins d'une application particulière. L'opération du processeur peut être mise à l'échelle en choisissant le nombre de moteurs. « C'est comme ça qu'on obtient de plus en plus de puissance », a dit Abraham.
Le sous-système commun NPM est en communication constante avec le moteur NPM. Ce canal est surveillé pour s'assurer qu'il ne devient pas un goulot d'étranglement — pour s'assurer que les données continueront à affluer dans le système. L'inférence IA s'exécute avec deux jeux de données : les données elles-mêmes, peut-être une image ; et le poids, qui est appliqué aux données pour faire l'inférence. Le sous-système commun garde le canal ouvert en appliquant la compression aux données et aux poids.
Le traitement parallèle peut être implémenté à la fois en utilisant plusieurs moteurs et en utilisant les coprocesseurs dans les moteurs, chacun contenant cinq coprocesseurs et une mémoire interne partagée.
Exemple — Contrôler un véhicule avec un NPM à quatre moteurs
La Figure 3 illustre une application automobile simple de traitement parallèle. Le côté gauche de la figure montre une image de la route, capturée par une caméra frontale. Un processeur dans le véhicule bloque la voie opposée pour simplifier les calculs nécessaires pour garder le véhicule centré sur son côté de la route et stocke l'image en mémoire. L'image stockée est entrée de la mémoire du véhicule au sous-système commun NPM, qui dans cet exemple sert quatre moteurs. Le logiciel décide alors quel est le cas d'usage — ce qui est nécessaire — et comment diviser l'image pour atteindre la performance maximale avec le minimum d'énergie (haute utilisation) pour la fonction désirée. Dans ce cas, le NPM divise l'image en quatre parties, avec un certain chevauchement, et chaque partie est envoyée à un moteur différent. L'inférence IA est ensuite exécutée sur chacun des quatre segments de la route. Les quatre segments sont ensuite recousus ensemble dans la mémoire du sous-système, d'où il est sorti vers la couche de perception ailleurs dans le SoC, pour effectuer les tâches désirées.
Cet exemple illustre les deux niveaux de traitement parallèle, un en utilisant les quatre moteurs pour travailler sur différents segments de l'image et dans chaque moteur, le traitement parallèle en partageant les calculs parmi les cinq coprocesseurs internes.
Optimisation via logiciel
L'IA fonctionne principalement par convolution, qui est une opération mathématique sur deux fonctions qui produit une troisième fonction exprimant comment la forme de l'une est modifiée par l'autre. Le mathématicien Shmuel Winograd a innové une nouvelle méthode de faire la convolution en la moitié du nombre habituel d'étapes. CEVA a implémenté cette idée théorique dans leurs processeurs pour atteindre la même précision qu'aurait été atteinte avec la convolution normale, mais avec une accélération près de 2x — un gain de performance avec une réduction de puissance. Cela peut être fait dans chacun des cinq coprocesseurs dans le moteur.
Une autre astuce est d'opérer différemment sur différents types de données, selon ce qui serait optimal pour une application particulière. Par exemple, la localisation et cartographie simultanées (SLAM), nécessite une très haute précision donc vous devez utiliser l'arithmétique à virgule flottante. Pour d'autres applications, un nombre fixe de bits serait parfait. De cette façon, le fabricant automobile peut choisir la méthode de calcul qui fonctionne le mieux pour chaque fonction dans le véhicule.
En utilisant à la fois la manipulation logicielle et l'optimisation matérielle, vous pouvez gagner une accélération significative — jusqu'à 16x avec NeuPro-M selon Abraham.
En résumé
Ceci a été un aperçu du fonctionnement interne d'un processeur IA particulier alors qu'il traite les données d'une variété de capteurs — radar, lidar, sonar, caméras — et prend des décisions. Le NPM est un processeur hétérogène — il peut opérer sur différents types de données et optimiser son opération mesurée par TOPS/watt en utilisant deux niveaux de traitement parallèle ainsi que la conception ciblée du logiciel.
- Fang Chen, PhD, SAE Edge Research Report — Unsettled Issues in Vehicle Autonomy, Artificial Intelligence, and Human-Machine Interaction.
Cet article a été écrit par Ed Brown, Éditeur de Sensor Technology. Pour plus d'informations, contactez Ed à cette adresse ou visitez ici.
Capteur
- Intelligence artificielle dans le retail : Bénéfices prouvés, pas un effet de mode
- Comment l'IA amplifie la puissance de l'Internet des objets
- Comment l'IA transforme le paysage de l'Internet des objets
- IA, apprentissage machine et deep learning : différences clés et fonctionnement
- Découvrir les meilleures applications de l'IA : maximiser l'efficacité et l'innovation
- Comment l'IA révolutionne la fabrication et l'usinage : perspectives de Matt Danford
- Robotique pilotée par l'IA : Machines intelligentes de pointe
- Les assistants IA transforment l'industrie du voyage : adopter les solutions intelligentes de demain
- Comment les capteurs transforment l'efficience et l'insight dans la manufacture