Einstieg in die KI mit dem NVIDIA Jetson Nano

Initiez-vous à l’IA avec la NVIDIA Jetson Nano

L’intelligence artificielle (IA) est le mot à la mode de notre époque. En tant que moteur central de la numérisation, elle modifie fondamentalement la société, l’économie et presque tous les autres domaines de la vie. De nombreuses entreprises utilisent déjà l’IA : en développement, en production, en administration. Mais l’intelligence artificielle nous aide aussi dans la vie de tous les jours – dans certains domaines assez évidents, dans d’autres plutôt cachés. Apprenez-en plus sur l’IA et comment vous pouvez utiliser Jetson Nano de NVIDIA pour mettre en œuvre un projet d’IA dans cet article.

Intelligence artificielle

Qu’est-ce que l’intelligence artificielle ?

L’intelligence artificielle est la capacité d’un ordinateur à résoudre des tâches qui devraient normalement être effectuées par des mains humaines. Le système doit être capable d’agir intelligemment, comme un humain, et d’apprendre de manière indépendante. Cependant, cette définition est imprécise, car le terme « intelligence » est difficile à définir. Il existe un certain nombre de descriptions différentes de l’intelligence humaine. Gardner a développé une théorie des intelligences multiples qui énumère huit dimensions de l’intelligence :

Multiple Intelligenzen: acht Dimensionen der Intelligenz
Figure 1: Source:

Comme vous le verrez au fur et à mesure de la progression de cet article, l’IA s’applique aujourd’hui à bon nombre de ces dimensions, mais pas à toutes.

Qu’est-ce qui rend un ordinateur intelligent ?

Un algorithme classique est généralement mis en œuvre de manière permanente et prend des décisions en fonction des données des capteurs, des entrées de l’utilisateur et des moments de déclenchement. Toutes les actions d’un ordinateur doivent être programmées par un humain. De nos jours, cependant, les exigences d’un ordinateur sont si complexes que cette méthode atteint rapidement ses limites. Par exemple, il est impossible de prédire avec précision le comportement d’un utilisateur ou d’implémenter à l’avance tous les objets existants sur terre pour une reconnaissance d’objets en temps réel.

Les informaticiens ont très tôt reconnu ce problème. Par conséquent, ils ont essayé de développer des programmes informatiques adaptatifs. Un ordinateur peut être formé à la fonctionnalité souhaitée à l’aide d’exemples de données. Cette procédure peut maintenant être utilisée pour diagnostiquer des maladies sur la base de symptômes ou de radiographies.

Il existe différentes procédures de test pour évaluer si un système informatique est intelligent – l’un d’entre eux est le « test de Turing ». Une personne communique électroniquement avec deux partenaires : un humain et un ordinateur. L’arbitre leur pose à tous les deux un catalogue complet de questions. S’il ne peut pas identifier clairement le PJ sur la base des réponses données, il est considéré comme intelligent.

Mesuré par rapport aux dimensions de l’intelligence présentées précédemment, ce test doit cependant être élargi afin que d’autres dimensions que la connaissance pure (image, mouvement, langage) puissent également être enregistrées.

Apprentissage automatique

Comment l’ordinateur apprend-il ?

Figure 2: Source: https://datasolut.com/machine-learning-vs-deep-learning/

Selon la définition humaine, les humains sont considérés comme des êtres intelligents. Nous résolvons une multitude de problèmes du monde réel sans pouvoir spécifier comment nous allons le faire en détail. Un exemple est la distinction entre la pomme et la poire. Il en va de même pour les séquences de mouvements complexes telles que le cyclisme : presque personne ne peut décrire en détail les mouvements avec lesquels ils parviennent à garder leur équilibre sur un vélo.

Ce sont des exemples de connaissances tacites que nous ne pouvons pas mettre dans des règles ou des instructions. Si vous n’avez pas de règles explicites avec lesquelles programmer un ordinateur pour une tâche, l’apprentissage à partir de l’expérience ou des données est une alternative. En « machine learning », un système analyse les données disponibles et se modifie pas à pas pour mieux faire son travail. Il existe trois types de tâches d’apprentissage :

Enseignement supervisé

Dans le cas de l’apprentissage supervisé, le système reçoit ce qu’il doit apprendre, par exemple comment faire la différence entre les vélos et les motos. À cette fin, il est présenté avec de nombreuses photos de vélos et de motos qui ont déjà été marqués manuellement comme vélos ou motos. Après avoir traité un grand nombre de ces exemples, le système recherche des modèles pouvant être utilisés pour distinguer les objets. De cette manière, le système peut apprendre à appliquer ces motifs à de nouvelles images afin de distinguer les images de vélo des images de moto.

Dans le cas de l’apprentissage supervisé, une distinction est faite entre deux autres cas d’utilisation importants : Dans le cas de la classification, le système doit choisir la réponse parmi un petit nombre d’alternatives ou de classes. Un exemple est la catégorisation d’un produit comme « bon » ou « défectueux ». Dans l’autre application, le pronostic (régression), le système doit prédire une ou plusieurs variables continues, par exemple la température maximale et la force du vent pour le lendemain à Munich.

Apprentissage non supervisé

Dans le cas d’un apprentissage non supervisé, le système doit gérer sans spécifications manuelles. Il lit les données disponibles et essaie indépendamment d’y trouver des modèles et des régularités. Il peut, pour. B. Regrouper les données en fonction des similitudes. Cette approche est particulièrement prometteuse lorsque les données ont différents composants – tels que les différents mots d’une phrase écrite. Dans le meilleur des cas, les valeurs d’un mot peuvent être utilisées pour prédire le prochain composant.

Ce type d’apprentissage est également appelé apprentissage auto-supervisé. C’est une forme d’apprentissage supervisé qui n’exige pas que les gens fournissent des annotations. L’apprentissage auto-supervisé est très répandu dans le monde de l’intelligence artificielle. Par exemple, si un système est chargé de prévoir les prochaines images d’une vidéo, il doit développer une représentation des scènes et prédire les mouvements et actions possibles des objets. S’il y a suffisamment de vidéos de formation, une « compréhension » de base des processus dans les vidéos est créée. Le système peut l’utiliser comme base pour prévoir de nouvelles scènes vidéo.

Apprentissage par renforcement

Dans l’apprentissage par renforcement, également appelé apprentissage par renforcement, le système doit d’abord effectuer une série d’actions avant de connaître le résultat final. Les jeux de société ou les robots de contrôle en sont des exemples. Après chaque action, l’environnement réagit (par exemple l’adversaire aux échecs) et le système reçoit de nouvelles informations sur le statut (par exemple les positions sur l’échiquier), éventuellement aussi des récompenses (par exemple des points, une victoire ou une défaite quantifiées par une valeur numérique).

L’objectif du système est de développer une stratégie d’action avec laquelle il peut réagir à n’importe quelle situation de manière à générer le plus de récompenses possible. La technique de l’apprentissage par renforcement à l’aide de récompenses et de punitions est empruntée à la psychologie et est utilisée, entre autres, dans le dressage des chiens.

Apprentissage en profondeur

Technically speaking, deep learning is a subset of machine learning (see Figure 4). It encompasses all methods of sTechniquement parlant, l’apprentissage en profondeur est un sous-ensemble de l’apprentissage automatique (voir la figure 4). Il englobe toutes les méthodes de recherche de modèles et de relations dans les données à l’aide d’un réseau de neurones profond. Les réseaux de neurones artificiels sont des algorithmes modelés sur le modèle biologique du cerveau humain.

The structure of an artificial neural network consists of the input layer, the hidden layer and the output layer. Despite theLa structure d’un réseau de neurones artificiels comprend la couche d’entrée, la couche cachée et la couche de sortie. Malgré leur complexité possible, ils ont essentiellement toujours les structures de graphes orientés. Si un réseau de neurones artificiels a des structures particulièrement profondes, c’est-à-dire de nombreuses couches cachées différentes, on parle d’apprentissage en profondeur.

Figure 3: Source: https://datasolut.com/was-ist-deep-learning/

Un tel système peut, par exemple, prédire la quantité de précipitations demain sur la base des lectures d’aujourd’hui de la pression atmosphérique, de la température et de la direction du vent. Bien que l’apprentissage automatique et l’apprentissage en profondeur soient souvent utilisés comme synonymes, il existe des différences petites mais subtiles. Alors que l’apprentissage automatique est utilisé pour les données d’entrée structurées, l’apprentissage en profondeur est particulièrement adapté aux données non structurées volumineuses.

Les données d’entrée structurées peuvent être des enregistrements de données commandés à partir d’une base de données (exemple : chat avec couleur, forme, visage). L’apprentissage automatique reconnaît automatiquement les informations qui en découlent et développe indépendamment des algorithmes pour classer ces objets. Dans le cas de données d’entrée non structurées telles que des textes, des images ou de la musique, l’algorithme d’apprentissage en profondeur reconnaît les structures inconnues et les utilise pour développer un modèle complexe qui permet de classer les objets lors de la reconnaissance d’images. Cependant, pour pouvoir obtenir une qualité de modèle élevée, cette méthode nécessite de très grandes quantités de données.

Figure 4: Source: https://datasolut.com/was-ist-deep-learning/

Kits nano NVIDIA Jetson

La carte de développement Jetson Nano de NVIDIA fournit une introduction au sujet de « l’IA ». Cela permet de développer des systèmes d’IA rentables et économes en énergie. L’ordinateur monocarte avec quatre cœurs ARM et le GPU Maxwell en tant qu’accélérateur de calcul CUDA et moteur vidéo ouvre de nouvelles possibilités pour les projets graphiques et de calcul intensif.

NVIDIA propose deux versions du Jetson Nano, les seules différences étant la taille de la mémoire de travail (2/4 Go de RAM), le port d’affichage et la connexion électrique. Avec une taille d’environ 70 x 45 mm, le Jetson Nano-Module est le plus petit appareil Jetson. Ce système sur module (SOM) prêt pour la production offre de grands avantages pour diverses industries lors de la fourniture d’IA : il fournit 472 GFLOP afin que les algorithmes d’IA modernes puissent être exécutés rapidement. Plusieurs réseaux de neurones peuvent fonctionner en parallèle et de nombreux capteurs haute résolution peuvent être traités en même temps. Avec ces propriétés, il est idéal pour les applications telles que les enregistreurs vidéo sur IP d’entrée de gamme, les robots domestiques et les passerelles intelligentes dotées de capacités analytiques complètes.

ProcesseurARM Cortex-A57 Moure quadricœur Architecture
GPUNVIDIA Maxwell avec 128 cœurs NVIDIA CUDA®
Mémoire principale2/4 Go 64 bits LPDDR4, 1600MHz 25,6 Go/s
MémoiremicroSD (carte non incluse)
Encodage vidéo4Kp30 | 4x 1080p30 | 9x 720p30 (H.264 / H.265)
Décodage vidéo4Kp60 | 2x 4Kp30 | 8x 1080p30 | 18x 720p30 (H.264 / H.265)
RéseauGigabit Ethernet
Caméra1x connecteur MIPI CSI-2
AffichageHDMI 2.0 USB 1x USB 3.0 Type A, 2x USB 2.0 Type A, USB 2.0 Micro-B
USB1x USB 3.0 Type A, 2x USB 2.0 Type A, USB 2.0 Micro-B
Connexions 1x SDIO | 2x SPI | 4x I2C | 2x I2S | GPIO
Taille69,6 mm x 45 mm
Mécanique Connecteur de bord 260 broches

Qu’est-ce qu’un noyau CUDA ?

Le terme CUDA signifie « Compute Unified Device Architecture » ​​et est une architecture développée par NVIDIA pour les calculs parallèles. L’utilisation supplémentaire du GPU soulage le CPU et augmente la puissance de calcul d’un ordinateur. Étant donné que les deux cœurs se trouvent sur des microprocesseurs basés sur la technologie des semi-conducteurs, les cœurs CUDA sont généralement considérés comme équivalents aux cœurs de processeur. De plus, les deux cœurs peuvent traiter des données, le CPU étant utilisé pour le traitement des données en série, tandis que le GPU est utilisé pour le traitement des données en parallèle. Cependant, les cœurs CUDA sont moins complexes. De plus, 128 cœurs CUDA sont intégrés au GPU du Jetson Nano, alors que le CPU ne contient que quatre cœurs. En dehors de cela, CUDA est utilisé de manière variable : dans le traitement d’images et de vidéos, mais aussi dans le domaine médical, comme pour les reconstructions d’images CT. En raison de l’environnement de développement exigeant, CUDA est également souvent utilisé dans les domaines de l’IA, de l’apprentissage en profondeur et de l’apprentissage automatique. D’autres domaines d’application sont la biologie informatique et la chimie, le lancer de rayons et les analyses sismiques.

Qu’est-ce qui est possible avec le Jetson Nano ?

Grâce à sa conception compacte, le Jetson Nano peut être parfaitement intégré dans les projets de robot. Avec 128 cœurs CUDA, l’ordinateur monocarte peut effectuer de nombreuses opérations en parallèle et permet ainsi l’utilisation de plusieurs capteurs avec calcul en temps réel. A l’inverse, cela signifie qu’il serait possible de développer une voiture à conduite autonome avec une Jetson Nano. Enfin, grâce au support de CUDA, un réseau de neurones a pu être entraîné directement sur le Jetson Nano. En revanche, un tel projet avec un Raspberry Pi ne pouvait être implémenté qu’avec un GPU supplémentaire.

Les systèmes d’IA classiques, tels que la reconnaissance d’objet/personne en temps réel, sont également possibles avec le Jetson Nano. A l’aide des librairies open source OpenCV ou YOLO, vous pouvez télécharger des modèles pré-entraînés afin de réaliser ensuite la reconnaissance objet/personne. Il est également possible de former votre propre modèle. Avec suffisamment d’enregistrements de données, par exemple, les personnes ou les plaques d’immatriculation des voitures peuvent être clairement identifiées sur les caméras de surveillance afin d’automatiser l’ouverture des portes, par exemple.

Reconnaissance d’objets en temps réel avec le Jetson Nano

À l’aide d’un projet simple, nous aimerions vous montrer la force du Jetson Nano, comme mentionné ci-dessus. La reconnaissance d’objets en tant qu’exigence typique de l’IA pour les systèmes peut également être maîtrisée par des ordinateurs à carte unique sans cœur CUDA, tels que le Raspberry Pi. Afin de pouvoir répondre à cette exigence en temps réel, les cœurs CUDA sont cependant indispensables, car de grandes quantités de données doivent être calculées en parallèle et en temps réel. Avec ses 128 cœurs CUDA, le Jetson Nano est parfaitement adapté pour cela et a donc été sélectionné pour ce projet.

Effort

Étant donné que l’IA pour la reconnaissance d’objets en temps réel a déjà été préprogrammée dans l’environnement open source d’OpenCV et YOLO, l’effort de ce mode d’emploi est limité. Tant qu’aucun nouvel objet ne doit être enseigné à l’IA, vous n’avez pas besoin d’entraîner davantage le réseau de neurones. Cependant, si l’IA doit être davantage adaptée, des connaissances techniques approfondies sont nécessaires. Le véritable effort, cependant, est de télécharger et d’installer le modèle d’IA et de préparer la configuration nécessaire (connexion de la caméra) pour l’application.

Niveau de difficulté

Moyen : Sans formation de l’IA
Difficile : Avec une formation en IA (connaissance d’OpenCV/YOLO et connaissances en programmation en Python et C)

Dépense de temps

  • Téléchargement et installation du système d’exploitation : environ 45 min
  • Téléchargement et installation du modèle AI (en fonction de la vitesse de lecture/écriture de la carte microSD et de la bande passante Internet) : environ 4 à 6 heures
  • Configuration : environ 15 min
  • Total : 5-7h

Frais

  • Prix ​​total : environ 135 € + équipement standard (écran, clavier, souris, téléphone Android avec caméra)

Matériel

Logiciel

Le logiciel utilisé est entièrement open source et donc disponible gratuitement.

Installation

To install the operating system, you need a microSD card with a minimum size of 64 Go. For this project we recommend that you use a fast MicroSD card, as the installation of the training data – depending on the writing speed – can take mPour installer le système d’exploitation, vous avez besoin d’une carte microSD d’une taille minimale de 64 Go. Pour ce projet, nous vous recommandons d’utiliser une carte MicroSD rapide, car l’installation des données d’entraînement – en fonction de la vitesse d’écriture – peut prendre plus de six heures. Si vous utilisez également la version 4 Go du Jetson Nanos, vous pouvez obtenir un taux de FPS (images par seconde) plus élevé lors de la détection d’objets.

Tout d’abord, téléchargez la version appropriée du système d’exploitation sur le site Web des développeurs NVIDIA. Le programme BalenaEtcher peut être utilisé pour le flash d’image. Tout ce que vous avez à faire est de sélectionner l’image chargée et la carte microSD (Image 5) – le processus de flash peut être lancé. Ne soyez pas surpris cependant : le processus peut prendre jusqu’à 30 minutes.

Flashvorgang mit BalenaEtcher
Figure 5 : Processus Flash avec BalenaEtcher

After the flash process, the microSD card can be inserted into the corresponding microSD card slot of the Jetson Nano. BefAprès le processus de flash, la carte microSD peut être insérée dans la fente pour carte microSD correspondante du Jetson Nano. Avant d’alimenter le Jetson Nano, connectez un clavier, une souris et un écran via le port HDMI / écran. Vous pouvez maintenant commencer à configurer le système d’exploitation.

Pour ce faire, suivez les instructions à l’écran. Assurez-vous de choisir “nvidia” comme nom d’utilisateur. Le code de ce projet ne fonctionne qu’avec ce nom. Il est possible de contourner ce problème, mais vous devrez modifier le code aux endroits appropriés.

Flashvorgang mit BalenaEtcher
Figure 6 : Configuration : Nom d’utilisateur “nvidia”

Une fois le processus de configuration terminé, le Jetson Nano redémarrera automatiquement. Connectez-vous ensuite avec votre mot de passe et l’environnement de bureau s’ouvrira.

Démarrez le terminal et téléchargez le référentiel Github correspondant.

Pour ce faire, saisissez la commande suivante dans la ligne de commande :

git clone https://github.com/wiegehtki/nvjetson_opencv_gsi.git

Utilisez la commande cp nvjetson_opencv_gsi/Installv2.3.8.sh pour copier le fichier « Installv2.3.8.sh » du répertoire « nvjetson_opencv_gsi » dans le répertoire courant. Ensuite, tous les scripts shell « sudoers » doivent être intégrés dans le répertoire courant à l’aide de la commande cp nvjetson_opencv_gsi/nv*sh. Les scripts shell peuvent être lus avec la commande chmod + x *sh.

Pour éviter que le système ne vous demande constamment de saisir votre mot de passe lors de l’installation, vous pouvez vous accorder des “droits de superutilisateur” avec la commande suivante :

sudo su
./nvidia2sudoers.sh
exit

Vous pouvez maintenant ouvrir à nouveau le terminal et démarrer l’installation avec ./Installv2.3.8.sh. Redémarrez maintenant le terminal et lancez l’installation :

Afin de pouvoir suivre l’avancée de l’installation, ouvrez une seconde fenêtre de terminal.

Veuillez noter : L’installation peut prendre plusieurs heures (environ quatre à six), après que tous les modèles qui ont déjà été formés doivent être à nouveau téléchargés. Une fois le processus terminé, le Jetson Nano redémarrera automatiquement. Si vous voyez maintenant l’écran de connexion, l’installation a réussi.

Configuration de l’application webcam IP

Dans ce projet, une caméra de téléphone portable est utilisée pour la reconnaissance d’objets. Pour que le Jetson Nano puisse accéder à la caméra du téléphone portable via WLAN, l’application “IP Webcam” doit être téléchargée. Afin de ne pas inonder l’application de données du Jetson Nano et ainsi pousser la mémoire du smartphone à la limite, certains réglages peuvent être nécessaires dans l’application.

Figure 7 : Désactiver le mode audio et démarrer le serveur
Einstellung der Auflösung, Qualität und FPS
Figure 8 : Réglage de la résolution, de la qualité et du FPS
Automatische Kameraerkennung deaktivieren
Figure 9 : Désactiver la détection automatique de caméra
IP-Adresse und Port der Kamera
Figure 10 : Adresse IP et port de la caméra

Tout d’abord, désactivez le mode audio (Figure 7 : Audio Modus = Mode audio), car seules les images sont à traiter dans ce projet. Ensuite, vous pouvez ajuster la résolution, la qualité et le FPS sous « Paramètres vidéo » (Figure 8 : Videoauflösung = Résolution vidéo ; Qualität = Qualité ; FPS Limitierung = Limitation FPS). Si vous travaillez avec la version 4 Go du Jetson Nano, vous pouvez laisser la résolution en Full HD. Une résolution inférieure est recommandée pour la version la moins puissante (2 Go). De plus, la détection automatique de caméra « ONVIF » peut être désactivée (Figure 9 : Unterstützung von ONVIF aktivieren = Activer la prise en charge ONVIF), car cette fonction ne provoque qu’un temps système supplémentaire dans le paquet de données.

Lorsque tous les paramètres ont été définis, vous pouvez maintenant ouvrir la caméra sous « Démarrer le serveur » (Figure 7 : Server starten = Démarrer le serveur; Videostreaming starten = Démarrer la diffusion vidéo). L’adresse IP correspondante, via laquelle le Jetson Nano peut se connecter, et le port (à droite de l’adresse IP) doivent être notés pour l’étape suivante (Figure 10).

Lancer la reconnaissance d’objets en temps réel

Avant de pouvoir démarrer la reconnaissance d’objets, vous devez enregistrer l’adresse IP et le port de la caméra du téléphone portable dans le script shell. Démarrez le terminal et procédez comme suit :

cd darknet
nano smartcam.sh

Une fenêtre s’ouvre maintenant (Figure 11) dans laquelle vous entrez l’adresse IP et le port appropriés à la position marquée. Vous devez maintenant enregistrer la modification et fermer le script shell.

Entrez la commande ./smartcam.sh dans le même répertoire pour lancer la reconnaissance d’objets en temps réel.

IP-Adresse und Port der Handykamera hinterlegen
Figure 11 : Stockez l’adresse IP et le port de la caméra du téléphone portable

Le Jetson Nano se connectera automatiquement à la caméra. Vous pouvez maintenant voir l’image dans une fenêtre séparée (voir Figure 12). L’IA reconnaît divers objets en temps réel et peut les classer en spécifiant un certain niveau de confiance (par exemple 94%). Certains éléments sont encore inconnus de l’IA. Avec un peu de travail de programmation, vous pouvez former le système d’IA dans l’environnement de développement et élargir vos connaissances à votre guise.

Echtzeit-Objekterkennung mit Nennung der Vertrauenswahrscheinlichkeit
Figure 12 : Reconnaissance d’objets en temps réel avec indication de la probabilité de confiance

Sommaire

Dans ce projet, nous vous avons montré comment mettre en pratique votre propre projet d’IA avec peu d’effort. Tout ce dont vous avez besoin est un Jetson Nano de NVIDIA, un ordinateur que vous utilisez pour tout programmer et un appareil photo pour smartphone. En utilisant la reconnaissance en temps réel, le Jetson Nano peut classer des objets et, avec un peu d’aide, même faire de nouvelles classifications d’objets. Il ne vous en faut donc pas plus pour vous immerger dans le monde de l’IA. Essayez-le aussi.

Photos : reichelt elektronik GmbH & Co. KG

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *