Le pilote automatique de Tesla expliqué clairement ! Tesla AI Day en 10 minutes
Si vous vous demandez comment une voiture Tesla peut non seulement voir mais aussi naviguer sur les routes avec d'autres véhicules, voici l’article que vous attendiez. Il y a quelques jours se déroulait la première journée Tesla AI où Andrej Karpathy, directeur de l'IA chez Tesla, et d'autres ont présenté le fonctionnement du pilote automatique de Tesla, de l'acquisition d'images à travers leurs huit caméras au processus de navigation sur les routes.
Les voitures de Tesla ont huit caméras comme cette illustration ci-bas, permettant au véhicule de voir son environnement et loin devant. Malheureusement, vous ne pouvez pas simplement prendre toutes les informations de ces huit caméras et les envoyer directement à une IA qui vous dira quoi faire, car ce serait beaucoup trop d'informations à traiter en même temps et nos ordinateurs ne sont pas encore aussi puissants. Imaginez juste essayer de le faire vous-même, devoir tout traiter autour de vous. Honnêtement, j'ai du mal à tourner à gauche lorsqu'il n'y a pas de panneaux d'arrêt, et vous devez vérifier les deux côtés plusieurs fois avant de prendre une décision. Eh bien, c'est la même chose pour les réseaux de neurones, ou plus précisément pour les appareils informatiques comme les CPU et les GPU.
Pour attaquer ce problème, nous devons compresser les données tout en conservant les informations les plus pertinentes similaires à ce que notre cerveau fait avec les informations provenant de nos yeux. Pour ce faire, Tesla transfère les données de ces huit caméras dans un espace plus petit qu'ils appellent "l'espace vectoriel".
Cet espace est un espace en 3 dimensions qui ressemble à ceci et contient toutes les informations pertinentes dans le monde de la conduite automobile, comme les panneaux de signalisation, les voitures, les personnes, les lignes, etc. Ce nouvel espace est ensuite utilisé pour de nombreuses tâches différentes que la voiture devra accomplir. faire comme la détection d'objets, les tâches de feux de circulation, la prédiction de voie, etc.
Mais comment passent-ils de 8 caméras, ce qui signifierait huit fois des entrées tridimensionnelles composées d'images Rouge-Vert-Bleu, à une seule sortie en 3 dimensions? Ceci est réalisé en 4 étapes et effectué en parallèle pour les huit caméras, ce qui rend le processus extrêmement efficace.
Étape 1 — Caméras et module de rectification
Dans un premier temps, les images sont envoyées dans un module de rectification, qui prend les images, et les calibre en les traduisant en une représentation virtuelle. Cette étape améliore considérablement les performances du pilote automatique car elle rend les images plus similaires les unes aux autres lorsque rien ne se passe, permettant au réseau de comparer les images plus facilement et de se concentrer sur les composants essentiels qui ne font pas partie de l'arrière-plan typique.
Étape 2 — L'extraction des informations
Ensuite, ces nouvelles versions des images sont envoyées dans un premier réseau appelé RegNet. Ce RegNet n'est qu'une version optimisée de l'architecture de réseau neuronal convolutif CNN. Si vous n'êtes pas familier avec ce genre d'architecture, vous devriez faire une pause et regarder rapidement l'explication simple que j'ai faite. Fondamentalement, il prend ces images nouvellement créées, compresse l'information de manière itérative comme une pyramide où le début du réseau est composé de quelques neurones représentant certaines variations des images se concentrant sur des objets spécifiques, nous indiquant où il se trouve dans l'espace. Plus nous approfondissons, plus ces images seront petites, mais elles représenteront les images globales tout en se concentrant sur des objets spécifiques. Ainsi, à la fin de cette pyramide, vous vous retrouverez avec de nombreux neurones, chacun vous donnant des informations générales sur l'image globale, s'il contient une voiture, un panneau de signalisation, etc.
Étape 3 — Fusionner les fonctionnalités importantes
Afin d'avoir le meilleur des deux mondes, nous sélectionnons des informations à plusieurs niveaux de cette pyramide, qui peuvent également être considérées comme des représentations d'images à différentes échelles se concentrant sur des caractéristiques spécifiques de l'image d'origine. On se retrouve avec des informations locales et générales, toutes nous disant de quoi sont composées les images et où se trouvent les objets.
Ensuite, ces informations sont envoyées dans un modèle appelé BiFPN, qui forcera ces informations de différentes échelles à parler ensemble et extraira les connaissances les plus précieuses parmi les informations générales et spécifiques présentes. La sortie de ce réseau BiFPN sera l'information la plus intéressante et la plus utile de toutes ces différentes échelles des huit caméras. Il contient donc à la fois les informations générales sur les images, c'est-à-dire ce qu'elles contiennent, et les informations spécifiques, telles que l'endroit où elles se trouvent, leur taille, etc. Par exemple, il utilisera le contexte issu de la connaissance générale profondes extraites au sommet de la pyramide pour comprendre que "puisque ces deux lumières floues sont sur la route entre deux voies, elles sont probablement attachées à un objet spécifique qui a été identifié à partir d'une caméra dans les premières couches du réseau".
En utilisant à la fois ce contexte et en sachant qu'il fait partie d'un seul objet, on pourrait deviner avec succès que ces lumières floues sont attachées à une voiture.
Étape 4 — Fusionner les informations des 8 caméras en une seule représentation
Nous avons donc maintenant les informations les plus utiles provenant de différentes échelles pour les huit caméras. Nous devons maintenant compresser ces informations afin de ne pas avoir huit entrées de données différente. Cela se fait à l'aide d'un bloc “Transformer”. Si vous n'êtes pas familier avec les “Transformer”, je vous inviterai à regarder ma vidéo les couvrant dans les applications de vision par ordinateur. En bref, ce bloc prendra les informations condensées des huit images différentes que nous avons et les transférera dans l'espace tridimensionnel que nous voulons, l'espace vectoriel. Il va prendre cette information générale et spatiale, appelée ici la Clé (Key), calculer la Requête (Query), qui est de la dimension de notre espace vectoriel désiré, et essayer de savoir ce qui va où. Par exemple, l'une de ces requêtes pourrait être considérée comme un pixel de l'espace vectoriel résultant à la recherche d'une partie spécifique de la voiture devant nous. La valeur (Value) fusionnerait les deux en conséquence, nous indiquant où se trouve cet objet dans ce nouvel espace vectoriel. Ce bloque transformer peut être vu comme le pont entre les huit caméras et ce nouvel espace 3D faisant le lien entre toutes les interrelations entre les caméras.
Le problème du temps…
Maintenant que nous avons enfin condensé nos données en une seule représentation 3D, nous pouvons commencer le vrai travail. C'est l'espace où ils annotent les données qu'ils utilisent pour former leur réseau de navigation, car cet espace est beaucoup moins complexe que huit caméras et plus facile à annoter. D'accord, nous avons donc un moyen efficace de représenter nos huit caméras, mais nous avons toujours un problème : les entrées d'une seule image, même venant de 8 caméras, ne sont pas intelligentes. Si une voiture du côté opposé est obstruée par une autre voiture, nous avons besoin que le pilote automatique sache qu'elle est toujours là et qu'elle n'a pas disparu car une autre voiture est passée devant elle pendant une seconde. Pour résoudre ce problème, nous devons utiliser des informations temporelles ou, en d'autres termes, utiliser plusieurs images. Ils ont choisi d'utiliser une « file d'attente de fonctionnalités » et un « module vidéo ».
La file d'attente des fonctionnalités prendra quelques images et les enregistrera dans le cache. Ensuite pour chaque mètre que la voiture parcours, ou à toutes les 27 ms, elle enverra les images mises en cache au modèle. Ici, ils utilisent à la fois une mesure de temps et de distance pour couvrir lorsque la voiture se déplace et lorsqu’elle est en arrêt. Ensuite, ces représentations 3D des images que nous venons de traiter sont fusionnées avec leurs positions correspondantes et les données cinématiques de la voiture contenant l'accélération et la vitesse de la voiture, nous informant de son déplacement à chaque image.
Toutes ces précieuses informations sont ensuite envoyées dans le module vidéo. Ce module vidéo les utilise pour comprendre la voiture elle-même et son environnement dans les quelques images passées et celle dans le présent. Ce processus de compréhension est réalisé à l'aide d'un réseau de neurones récurrent qui traite toutes ces informations de manière itérative sur toutes les images au fil du temps pour mieux comprendre le contexte et enfin construire cette carte bien définie que vous voyez. Si vous n'êtes pas familier avec les réseaux de neurones récurrents, je vais à nouveau vous orienter vers une vidéo que j'ai réalisée pour les expliquer. Puisqu'il utilise des images du passé, le réseau dispose désormais de beaucoup plus d'informations pour mieux comprendre ce qui se passe, ce qui sera nécessaire pour les occlusions temporaires.
Voici l'architecture finale du processus de vision avec sa sortie à droite, et juste en dessous, vous pouvez voir certaines de ces sorties traduites en images pour montrer ce que la voiture voit dans notre représentation du monde, ou plutôt la représentation des huit caméras de celui-ci. Nous avons enfin cette sortie de module vidéo que nous pouvons envoyer en parallèle à toutes les tâches de la voiture, telles que la détection d'objets, la prédiction de voie, les feux de circulation, etc.
Résumons…
Si nous résumons cette architecture, nous avons d'abord les huit caméras qui prennent des photos. Ensuite, elles sont calibrées et envoyées dans un CNN condensant les informations, qui extrait les informations les plus pertinentes efficacement et fusionne le tout avant de les envoyer dans une architecture Transformer qui fusionnera les informations provenant des huit caméras en une seule représentation 3D. Enfin, cette représentation 3D sera sauvegardée dans le cache sur quelques trames puis envoyée dans une architecture RNN qui utilisera toutes ces trames pour mieux comprendre le contexte et sortir la version finale de l'espace 3D pour envoyer nos tâches qui pourront enfin être formés individuellement et peuvent tous travailler en parallèle pour maximiser les performances et l'efficacité.
Comme vous pouvez le voir, le plus grand défi pour une telle tâche est un défi d'ingénierie. Faire en sorte qu'une voiture comprenne le monde qui nous entoure aussi efficacement que possible grâce à des caméras et des capteurs de vitesse afin qu'elle puisse fonctionner en temps réel et avec une précision proche de la perfection pour de nombreuses tâches humaines complexes.
Bien sûr, ce n'était qu'une simple explication de la façon dont le pilote automatique Tesla voit notre monde. Je recommande fortement de regarder l'incroyable vidéo sur la chaîne youtube de Tesla. Le lien est dans les références ci-dessous pour plus de détails techniques sur les modèles qu'ils utilisent, les défis auxquels ils sont confrontés, le processus d'étiquetage de données et d’entraînement des modèles avec leur outil de simulation, leurs logiciels et leurs matériels personnalisés, la navigation du véhicule et plus encore. Cela vaut vraiment le coup!
Merci d’avoir lu cet article!
Regardez la vidéo en anglais:
Venez discuter avec nous dans notre communauté Discord: ‘Learn AI Together’ et partagez vos projets, vos articles, vos meilleurs cours, trouvez des coéquipiers pour des compétitions Kaggle et plus encore!
Si vous aimez mon travail et que vous souhaitez rester à jour avec l'IA, vous devez absolument me suivre sur mes autres médias sociaux (LinkedIn, Twitter) et vous abonner à ma newsletter hebdomadaire sur l'IA!
Pour supporter mon travail:
La meilleure façon de me soutenir est de souscrire à ma newsletter tel que mentionné précédemment ou de vous abonner à ma chaîne sur YouTube si vous aimez le format vidéo en anglais.
Soutenez mon travail financièrement sur Patreon
Références
“Tesla AI Day”, Tesla, 19 Août 2021, https://youtu.be/j0z4FweCy4M