2024, l'année de la voiture autonome?
La prochaine mise à jour du système de Tesla sera-t-elle un tournant?
Vous avez peut-être manqué l’information la semaine dernière. C’est normal, aucune annonce officielle n’a été faite, mais Elon Musk a confirmé en commentant des tweets1, qu’une nouvelle mise à jour du système de conduite autonome Full Self-Driving version 12 ou (FSD v12) était déjà disponible pour les employés de Tesla avant une sortie mondiale d’ici la fin 2023.
Bon, en réalité cette mise à jour, ce n’est pas encore l’avènement d’une réelle voiture autonome, c’est-à-dire d’une voiture dans laquelle le conducteur n’a pas à se préoccuper du tout de ce qui se passe sur la route.
Avec le système FSDv12, il n’est pas encore question de pouvoir vous la couler douce pendant que votre engin vous emmènera dans votre maison de campagne le vendredi soir (car oui, si vous avez une Tesla, vous avez forcément une maison de campagne).
Mais ça vaut quand même le coup de vous mettre un tunnel sur le sujet des voitures autonomes pour comprendre comment une IA pourrait arriver à conduire une voiture (c’est un poil plus impressionnant que de prédire le prochain mot à dire, non?).
Au programme du jour 📋:
👁️ Le fonctionnement de la vue chez l’être humain
💻 Comment un ordinateur peut-il comprendre une image?
🧠 Les réseaux de neurones convolutifs en action.
🚗 Les méthodes pour traduire l’activité de conduite en data.
🪜 Les marches qu’il reste à gravir avant la première vraie voiture autonome
Let’s gooooo ⚡
Une Intelligence Artificielle peut-elle voir?
Comment ça marche la vue?
Vous êtes vous déjà demandé si vos yeux étaient intelligents? A partir d’un certain âge, on est capable de savoir exactement, en un coup d’oeil , tout ce qui se trouve autour de nous.
Évidemment, ce ne sont pas les yeux tout seul qui sont capables de cette prouesse, mais plutôt les yeux et le cerveau.
Pour voir, on utilise la rétine : une membrane qui capte les photons (c’est-à-dire les signaux lumineux) et les transforme en signaux électriques transférés au cerveau. A partir de là, c’est au cerveau de faire le boulot, et, en particulier aux neurones.
Les neurobiologistes Hubel et Wiesel2 ont démontré dans les années 1950 que, pour comprendre les signaux électriques transmis par la rétine, notre cerveau disposait de neurones spécialisés pour détecter des formes, des nuances de couleur et des mouvements spécifiques.
Ainsi, lorsque vous voyez une image, ce ne sont pas tous vos neurones qui vont s’activer pour comprendre ce qui se passe, mais seulement un certain nombre de neurones spécialisés. Un neurone pourrait par exemple détecter si ce que vous voyez contient une forme circulaire, un autre détecterait les formes triangulaires, un autre les couleurs sombres, un autre les mouvements vers le haut, etc.
Travaillant ensemble, ces neurones spécialisés vous permettent de reconnaitre un chat, un chien ou un piéton qui traverse…
Ces découvertes des années 1950 sont à l’origine de toute la recherche effectuée en Intelligence Artificielle pour l’interprétation d’images. Puisque cela fonctionne avec le cerveau humain, pourquoi pas ne pas essayer de reproduire le fonctionnement pour un IA?
Traduire une image en langage machine
La première des étapes du fonctionnement de l’être humain à imiter est la traduction, faite par la rétine, de photons en signaux électriques qui peuvent être compris par le cerveau. En version machine cela veut dire qu’on doit d’abord réussir à traduire les images en 0 et en 1 (vous vous rappelez du tunnel sur les bytes?).
Pour ce faire on utilise le “pixel”. Un pixel, c’est un peu l’équivalent de l’atome pour une image numérique, c’est-à-dire l'élément le plus petit qui constitue une image numérique. Il s’agit d’un minuscule carré en couleur, qui, assemblé avec d’autres petits carrés de couleur, forme une image. Plus on assemble de pixels ensemble dans la largeur, plus l’image sera large, et plus on assemble de pixels en hauteur, plus elle sera grande.
Chaque pixel a une couleur qui lui est propre, et, comme toutes les couleurs qui existent sont faites de rouge, de bleu et de vert (si vous ne me croyez pas, reprenez vos cours d’arts plastiques), on a décidé de définir un pixel par son intensité de rouge, de bleu et de vert sur une échelle allant de 0 à 255. Ainsi, un pixel noir sera défini par [0,0,0] ([Pas de rouge, Pas de vert, Pas de bleu]) et un pixel blanc par [255,255,255] ([Intensité maximale de rouge, Intensité maximale de vert, Intensité maximale de bleu]) par exemple.
Donc, pour que la machine comprenne l’image, on la décompose en un tableau de pixels (de la largeur et de la longueur de l’image), eux-mêmes décomposés en 3 variations de couleur, c’est-à-dire en 3 tableaux de nombres allant de 0 à 255, comme sur l’illustration suivante.
Ainsi, une machine peut convertir une image en 0 et en 1. Il lui suffit pour cela de convertir l’image en 3 tableaux de nombres allant de 0 à 255, puis, de traduire tous les nombres qui composent ces tableaux en nombres hexadécimaux3 afin de pouvoir les écrire sous forme d’octet (encore une fois, n’hésitez pas à reprendre le tunnel sur la quantité de données pour que cela soit plus clair).
Des réseaux de neurones pour voir et conduire
Les réseaux de neurones convolutifs pour voir
👁️ A ce stade, on a réussi à reproduire le comportement de la rétine qui transmet une information aux neurones dans une forme qu’ils comprennent (les 0 et les 1 représentant les transmission nerveuses).
🧠 Il convient désormais de reproduire l’utilisation de neurones qui remplissent une fonction très spécifique (reconnaitre des ronds, des rectangles, des couleurs, etc.). Pour cela, nous allons faire des convolutions.
Une convolution, c’est le fait d’appliquer un filtre sur l’image pour mettre en avant une de ses particularités. On commence par traduire notre image en pixels, puis en 3 tableaux (Rouge-Vert-Bleu) de nombres allant de 0 à 255.
Ensuite on effectue une opération matricielle sur chacun des tableaux (ici pour tableau, on aurait pu utiliser le terme “matrice”) : la multiplication d’une matrice qu’on appelle le noyau (kernel) par chacune des 3 matrices “rouge-vert-bleu”.
Cette multiplication donne 3 nouvelles matrices proches des originales, qui, vues en image, font ressortir certains aspects de l’image d’origine (certaines convolutions font apparaitre les formes verticales, d’autres les cercles, d’autres les couleurs vives, etc.).
Sur le tableau suivant on peut voir en quoi une convolution peut changer l’image d’origine.
Vous l’avez compris : une convolution permet de faire ressortir certaines caractéristiques spécifiques de l’image et on cherche à reproduire le fonctionnement de nos neurones qui, eux aussi, se spécialisent tous pour reconnaitre chacun une caractéristique spécifique de l’image.
Ainsi, au lieu de créer un réseau de neurones classique, on va créer un réseau de neurones convolutifs (en fait , un réseau de convolutions). C’est à dire qu’on part de l’image, à laquelle on applique une première couche de convolutions, puis une deuxième couche de convolution, puis une troisième, etc.
Lors de la phase d’entrainement, le réseau de neurones convolutifs va réussir à trouver les bons paramètres pour chacune des convolutions du réseau pour être performant à reconnaitre les images sur lesquelles il est entrainé.
Grâce à cela, l’IA est donc capable de détecter des piétons, des animaux, de la pluie, de la fumée, etc. C’est ainsi qu’une Tesla peut se conduire toute seule. Enfin, presque…
Les Transformers pour décider
Un conducteur qui voit, c’est bien, mais s’il ne sait pas quelle décision prendre en fonction de ce qu’il voit, ça ne serait pas très rassurant… Pour que notre Tesla soit capable de prendre les bonnes décisions, il y a deux possibilités :
1️⃣ On peut écrire des milliers de lignes de code pour programmatiquement dire à la voiture comment elle doit se comporter selon ce qu’elle détecte à l’image. C’est long et fastidieux, mais ça a le mérite de cadrer le comportement de la voiture (en tout cas dans toutes les situations qui seraient imaginées par les développeurs). Cette méthode n’est pas une méthode d’Intelligence Artificielle, c’est vraiment du “code à l’ancienne”.
2️⃣ On peut entrainer un deuxième réseau de neurones à prendre une décision en fonction de ce qui entoure la voiture. En entrée, ce réseau de neurones prend l’interprétation des images prises par les caméras à chaque instant (autrement dit, la sortie du réseau convolutif en temps réel), et donne en sortie une liste de paramètres (quel doit être le degré d’inclinaison du volant, de la pédale d’accélération, de frein, etc.).
Ce type de réseaux de neurones s’appelle des Transformers. Je pense vous avoir déjà bien pris la tête avec mes explications sur les réseaux de neurones convolutifs, alors je garde l’explication technique pour un autre tunnel (ne vous inquiétez pas, les Transformers sont partout, on aura l'occasion d’y revenir). Mais, en attendant, sachez juste que :
🤯 le “T” de ChatGPT veut dire Transformers
⏳ Un Transformer est un réseau de neurones qui prend en entrée une série temporelle de paramètres (pour la voiture c’est toutes les images qui ont été filmées jusqu'à présent ; pour ChatGPT, tous les mots qui ont été utilisés jusqu’a présent)
⚙️ La sortie d’un Transformer est une liste de paramètres (pour la voiture c’est le degré d’inclinaison de la pédale de frein, d’accélération, du volant, etc ; pour ChatGPT un mot - “vectorisé” -).
La différence entre le système FSDv12 et les autres réside dans l’utilisation d’un Transformer, ce qui permet de supprimer “plusieurs milliers” de lignes de code selon Tesla et aussi d’avoir une réponse adéquate dans un plus grand nombre d’opérations.
Mais cela demande de nombreux tests car, contrairement à avant, les règles de conduites ne sont plus connues et définies par les développeurs, elles font maintenant partie de la “boite noire” de l’algorithme… Ce qui pose forcément une série de questions quant à la possibilité d’utiliser ce genre de technologie pour une problématique aussi dangereuse que la conduite.
La voiture autonome, c’est pour demain?
Un système encore imparfait
Si avec FSDv12, une avancée technologique est annoncée, il convient de la relativiser. D’abord parce qu’on ne sait pas encore si le deuxième réseau de neurones (le Transformer) sera suffisamment intelligent dans tous les cas de figure qu’il pourrait rencontrer, notamment parce qu’il pourrait être biaisé par les images avec lesquelles il a été entrainé.
Selon Tesla, l’un des défis pour l’algorithme est, par exemple, de bien s’arrêter dès qu’il perçoit un stop 🛑, car il a été entrainé sur des millions d’exemples de conducteurs qui ne respectaient pas tous parfaitement le code de la route. Aujourd’hui dans FSDv12, il reste du code “à l’ancienne” pour dire à la voiture de s’arrêter systématiquement à un stop, quoi que dise le Transformer.
Une série de questions en suspens
Ensuite parce qu’au delà de la réussite technique pure, d’autres questions se posent encore et il faudra y apporter une réponse avant d’imaginer un monde rempli de voitures autonomes.
⚖️ La question juridique : La promesse de Musk est de produire un jour une voiture autonome qui serait tellement autonome qu’aucun conducteur ne serait tenu de superviser la conduite. Ainsi une voiture autonome ne pourrait tenir le conducteur comme responsable en cas d’accident (puisque ce dernier n’est pas tenu de superviser la conduite). Il faudrait donc que Tesla accepte de prendre la responsabilité juridique des accidents, ce qui n’est pas prêt d’arriver.
👥 La question sociale : Si une telle voiture autonome voyait le jour le nombre d’emplois supprimés serait gigantesque : taxis, VTC, chauffeurs de camion, etc. Comme pour toutes les avancées générées par l’IA, il serait impératif que l’on puisse anticiper un tel changement de paradigme, et cela ne pourrait se produire du jour au lendemain.
🤔 La question éthique : La question éthique est ici selon moi la plus intéressante car je trouve qu’elle est un bon cas d’usage pour comprendre le lien qui existe entre Intelligence Artificielle et éthique. Songez à cette question : si une voiture autonome doit choisir entre écraser un piéton ou risquer la vie du passager, quelle devrait être sa décision ? C’est une question à laquelle il est très complexe de répondre et qui serait dans les mains des constructeurs, c’est-à-dire d’Elon Musk… Chacun peut se faire son avis sur Elon Musk, mais le mien c’est que lire dans la même phrase “Elon Musk” et “éthique”, ça me fait froid dans le dos…
Quoi qu’il en soit, la réflexion autour de la voiture autonome est un cas d’usage très parlant pour comprendre l’IA :
🧠 On s’inspire du cerveau humain pour en répliquer le fonctionnement.
🔢 On traduit une problématique réelle en 0 et en 1 pour qu’une machine puisse travailler.
🤖 On utilise différents réseaux de neurones particulièrement efficaces pour régler une partie du problème.
🚀 On va potentiellement vivre un tournant en 2024 avec FSDv12.
❓Au-delà de l’aspect technique, une série de questions éthiques, juridiques ou sociales doit être posée pour envisager l’existence d’une telle prouesse.
Et voilà, fin de tunnel 🥳, assez technique celui-ci je l’admets, mais bon difficile de ne pas l’être lorsque l’on parle de quelque chose d’aussi complexe.
J’espère que cela vous a plu et que vous avez appris quelque chose aujourd’hui. N’hésitez pas à partager cet article pour en faire profiter vos proches qui pourraient être intéressés, et, évidemment, à vous abonner pour profiter des prochains tunnels.
A très vite ❤️
Passionnant , et questionnant en effet ! Hâte de comprendre le fameux T de CHATGPT