Dans ce cours, vous allez apprendre à programmer le kit Jetbot pour réaliser des projets liés au développement des voitures autonomes. Vous verrez par exemple comment mettre en œuvre de la reconnaissance d’image, du suivi de trajectoire ou encore de la détection et de l’identification d’objets sur une vidéo. Vous utiliserez le langage de programmation Python et des librairies spécialisées dans le deep learning comme Tensorflow, Keras, Numpy, …
Une image à graver avec l'ensemble des logiciels et ressources préinstallés est disponible en téléchargement.
Le JetBot est une plateforme de robotique open-source pour l’IA qui offre aux constructeurs, aux étudiants et aux passionnés de technologie tout ce dont ils ont besoin pour créer des applications d’IA créatives, intelligentes et captivantes. Elle est basée sur l’ordinateur NVIDIA Jetson Nano pour l’IA, à la fois compact et puissant, qui prend en charge de multiples capteurs et réseaux de neurones en parallèle pour la détection d’objets, l’évitement des collisions et bien plus encore. Cette plateforme de robotique à haut degré d’innovation vous propose une grande variété de configurations vous permettant de mettre en œuvre des applications sur mesure.
Des explications claires et de nombreux exemples vous permettront de bien comprendre comment utiliser le kit de développement Jetson Nano avec le Jetbot à travers 7 thèmes d’étude :
La mise en place du matériel et l’installation des logiciels de développement dédiés au Jetson nano et au Jetbot
Le pilotage de base du robot Jetbot
L’utilisation de la manette de jeu pour commander les déplacements du Jetbot
Mettre en place une IA pour faire de l’évitement de collisions
Optimiser les modèles avec TensorRT pour les rendre ultra rapides afin de faire du temps réel
Faire un suivi de trajectoire en utilisant une IA (modèle Restnet-18)
Détecter, identifier et suivre des objets avec le robot à l'aide d'une IA (modèle SSD-MobileNet V2) en temps réel
Les activités en Python sont clairement expliquées. D'une durée totale de plus de 7h, ce cours vous permettra d'être à l'aise dans l'utilisation du kit Jetson nano de nvidia et du Jetbot pour mettre en œuvre des projets de robotique qui utilisent de l'intelligence artificielle.
=== Prérequis ===
Des connaissances en Python sont un plus pour bien comprendre les programmes utilisés, en particulier ceux liés à l'intelligence artificielle et à l'utilisation des librairies Tensorflow / Keras. De même, des connaissances de l’environnement Linux sont également un plus.
Avoir suivi ma formation précédente dédiée au kit Jetson Nano est également un plus. Cependant, cela n’est pas une condition nécessaire pour suivre ce cours.
Si vous avez déjà une expérience en Deep Learning, en Arduino ou encore en Raspberry PI, vous découvrirez certainement de nouveaux thèmes d'étude qui vous permettront d'élargir vos compétences. Si vous avez déjà suivi ma formation sur le Jetson nano, vous trouverez dans ce cours de nombreuses nouveautés liées à la robotique.
== Aide en ligne ===
Quelque soit votre niveau, je suis disponible pour vous aider dans votre progression. Vous pourrez éventuellement rencontrer des difficultés en programmation car il est bien évident que vous avez tous un bagage différent en fonction de votre parcours (études ou professionnel).
Dans ce sens, il ne faudra surtout pas hésiter à me poser vos questions et je m'engage à y répondre dans un délai raisonnable. Votre motivation est essentielle pour réussir cette formation.
=== Thèmes étudiés dans la formation ===
#1. Mise en place du matériel et installation des logiciels de développement dédiés au Jetson nano et au Jetbot
Le module Jetson nano prend en charge le kit de développement JetPack qui intègre les bibliothèques d’accélération Nvidia Cuda-X ainsi qu’une pile IA complète avec bibliothèques pour l’apprentissage machine, la vision artificielle, les calculs graphiques et le traitement multimédia.
Le Jetbot utilise une librairie spécialisée qui offre la possibilité de le programmer en Python. Cette librairie peut être installée depuis le dépôt officiel Github.
Tous les exemples que nous allons traiter seront exécutés sous l’environnement JupyterLab.
#2. Le pilotage de base du Jetbot
Le Jetbot est programmable en langage Python avec des commandes simples pour le faire avancer, reculer, tourner, etc… De plus, l’interface JupyterLab offre de nombreuses possibilités pour rendre plus agréable la gestion et le pilotage du robot. Par exemple, les Widgets permettent d’afficher le flux vidéo de la caméra en temps réel ou encore de créer des joysticks graphiques virtuels pour piloter le robot.
Nous verrons dans cette partie comment programmer nos propres interfaces de pilotage à l’aide de ces outils.
#3. Utilisation de la manette de jeu pour commander les déplacements du Jetbot
Le kit Jetbot est vendu avec une manette de jeu sans fil afin de rendre son pilotage plus attrayant.
Dans cette partie, vous apprendrez à programmer des scripts en Python pour gérer les ordres issus de la manette de jeu (comme par exemple pour déplacer le Jetbot). Vous verrez également comment prendre des images et les enregistrer à l’aide de la manette de jeu.
#4. Mettre en place une IA pour faire de l’évitement de collisions
Les voitures autonomes sont en plein essor et une des tâches les plus importantes de ce domaine est d’éviter des obstacles. Pour cela, nous avons besoin de mettre en place une IA permettant de reconnaître des images.
ResNet est une structure de réseau qui est, dans sa version la plus complexe, composé de 50 couches, et a la particularité d'introduire des connexions résiduelles. Contrairement aux réseaux de neurones convolutifs qui ont une architecture linéaire (un empilement de couches dont chaque sortie est uniquement connectée à la couche suivante), dans un réseau résiduel, la sortie des couches précédentes est reliée à la sortie de nouvelles couches pour les transmettre toutes les deux à la couche suivante
Nous allons programmer ce modèle dans le Jetson nano en Python afin de l’utiliser avec le Jetbot pour réaliser de la détection d’obstacles.
#5. Optimiser les modèles avec TensorRT pour les rendre ultra rapides afin de faire du temps réel
Les modèles utilisés en intelligence artificielle demandent beaucoup de ressources de calcul : c'est d'ailleurs tout l'intérêt d'utiliser le Jetson nano, qui intègre un GPU dédié aux calculs complexes.
Mais les performances des GPU ne sont pas toujours assez élevées, et si nous souhaitons embarquer de l'intelligence artificielle dans un système de traitement en temps réel, nous devons optimiser au maximum les modèles. C'est là que le logiciel TensorRT de NVIDIA intervient. TensorRT est un optimiseur et un Runtime d’inférence haute performance qui offre une faible latence et un débit élevé pour les applications d’inférence d’apprentissage approfondi.
Nous mettrons en pratique son utilisation pour optimiser notre modèle de reconnaissance d’image : il nous permettra d'améliorer le débit de traitement de notre modèle à presque 80 images/s !
#6. Faire un suivi de trajectoire en utilisant une IA (modèle Restnet-18)
Une autre problématique des voitures autonomes et de pouvoir suivre une trajectoire lors de leurs déplacements. Pour cela, elles peuvent utiliser une caméra embarquée afin de reconnaitre par exemple les marquages au sol sur les routes.
Dans cette partie, nous allons mettre en place une IA qui permettra au Jetbot de reconnaître des marquages au sol pour suivre une trajectoire. Nous mettrons également en œuvre un algorithme d’asservissement de type PID (Proportionnel Intégral et Dérivé) pour piloter le déplacement du Jetbot afin qu’il utilise au mieux les informations fournies par l’IA. De cette manière, ses déplacements seront mieux optimisés.
Bien entendu, tout cela se fera en temps réel après avoir optimisé le modèle avec TensorRT.
#7. Détecter, identifier et suivre des objets avec le robot à l'aide d'une IA (modèle SSD-MobileNet V2) en temps réel
Il n’y a pas si longtemps, on parlait des MobileNet, de la reconnaissance d’image en temps réel. Véritable enjeux de notre société, son application la plus connue à l’heure actuelle est l’identification de « boxing » , i.e. trouver dans une image tous les objets et toutes les personnes pour les encadrer et les mettre en évidence.
MobileNet est un réseau de neurones à convolution (CNN), qui a divisé sa phase de convolution en deux opérations plus simples (et rapides). SSD (Single Shot Multibox Detector) permet, en scannant l’image, d’identifier toutes les zones qui présentent un élément à classifier. En combinant les deux algorithmes, on a SSD qui place des boîtes sur toute l’image puis on a MobileNet qui les classifie, ce qui rend l’algorithme très performant et utile !
Dans cette partie, vous apprendrez à utiliser des modèles pré-entrainé disponibles dans les ressources publiques de Tensorflow afin de les intégrer dans le Jetbot. Le modèle que nous utiliserons est le SSD-MobileNet V2.
Grace à ce modèle, le Jetbot sera capable d’identifier des objets spécifique sur une vidéo et de se déplacer vers ces objets. Bien entendu, tout cela se fera en temps réel après avoir optimisé le modèle avec TensorRT.
77
71
TAKE THIS COURSE