Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Le Deep Learning pour le traitement d’images
  3. Outils indispensables à la pratique
Extrait - Le Deep Learning pour le traitement d’images Classification, détection et segmentation avec Python et TensorFlow
Extraits du livre
Le Deep Learning pour le traitement d’images Classification, détection et segmentation avec Python et TensorFlow
2 avis
Revenir à la page d'achat du livre

Outils indispensables à la pratique

Objectifs de ce chapitre

Dans ce chapitre, nous allons lister et décrire les outils indispensables à la pratique de l’apprentissage profond pour le traitement d’images.

Nous commencerons par discuter du matériel (ordinateurs et cartes graphiques) le plus approprié selon les différents cas d’usage.

Nous parlerons ensuite des jeux de données, dont nous avons vu dans le chapitre précédent à quels points ils sont indispensables au développement d’un modèle performant. Nous présenterons certains jeux, très connus et couramment utilisés pour présenter les performances d’un modèle. Ensuite, des pistes pour trouver d’autres jeux de données plus spécifiques seront données.

Les langages et outils informatiques les plus utiles seront ensuite décrits, puis nous expliquerons comment les utiliser pour ouvrir les exemples de ce livre.

Ordinateurs et cartes graphiques

L’apprentissage profond requiert la réalisation de calculs complexes sur une grande quantité de données. Ainsi, il est préférable de disposer d’un ordinateur adapté.

Nous allons détailler les différents éléments à prendre en compte.

1. GPU et CPU

Classiquement, un ordinateur dispose d’un ou plusieurs processeurs (nommés CPU pour Central Processing Unit, ou unité centrale de traitement). Ces processeurs effectuent tous les calculs nécessaires à l’exécution des divers programmes.

Les ordinateurs disposent également d’une carte graphique, qui peut être intégrée au CPU, ou séparée.

Ces cartes, nommées GPU pour Graphical Processing Units (unités de traitement graphique en français), et initialement développées pour le rendu graphique, contiennent des milliers d’unités de calcul, quand un CPU n’en contient qu’une dizaine.

Ces dernières années, ces cartes graphiques ont été optimisées pour réaliser des calculs extrêmement rapidement. L’entraînement d’un réseau de neurones pour le traitement d’images étant extrêmement coûteux en temps de calcul, ces opérations sont généralement effectuées sur des cartes graphiques.

Ces cartes permettent de réaliser plus rapidement toutes les étapes d’entraînement et d’exploitation d’un réseau de neurones ; le facteur d’accélération dépend fortement de facteurs tels que la taille du réseau ou la taille du jeu de données. Dans certains cas, il est possible d’accélérer plus de cent fois les calculs en utilisant une carte GPU plutôt qu’une carte CPU.

L’utilisation de ces cartes a toutefois deux inconvénients....

Jeux de données ouverts

Les modèles d’apprentissage profond sont très gourmands en données. Heureusement, il existe aujourd’hui une grande quantité de jeux de données facilement disponibles.

1. Fondamentaux d’un jeu de données d’entraînement

Pour être le plus performant possible, un modèle d’apprentissage profond doit être entraîné sur un ensemble dont les images remplissent les conditions suivantes :

  • Images très nombreuses : on estime généralement qu’un réseau de classification nécessite au moins mille images par classe pour l’entraînement. Le chiffre exact dépend évidemment du problème et peut varier largement. Il est conseillé de démarrer la recherche de données par une recherche bibliographique. Si vous trouvez d’autres personnes qui ont résolu un problème similaire au vôtre, vous pourrez voir quelles performances ont été obtenues avec différentes quantités de données.

  • Images accompagnées d’annotations fiables : les annotations des images sont les informations que le modèle va chercher à prédire. Par exemple, pour un jeu de données utilisé en classification, l’annotation de chaque image est un mot désignant sa classe. Avoir un faible nombre d’annotations erronées reste acceptable, mais un plus grand taux d’erreur pénalisera fortement le modèle.

  • Images en nombre à peu près équivalent pour chaque classe : c’est ce qu’on appelle des classes équilibrées.

  • Images suffisamment différentes les unes des autres à l’intérieur de chaque classe pour illustrer la diversité possible à l’intérieur d’une classe.

De plus, il est important de prendre en compte les biais éventuels du modèle dès la constitution du jeu de données qui sera utilisé pour l’entraînement.

Par exemple, les images trouvées sur Internet contiennent souvent des différences liées au genre, à l’âge ou à la couleur de peau. Si ces biais ne sont pas corrigés dans les données d’entraînement, ils se répercuteront...

Langages, librairies et frameworks

1. Python

Python est le langage le plus utilisé en apprentissage automatique.

C’est un langage d’accès facile, et, une fois écrit, le code est facilement lisible. Il existe un grand nombre de librairies spécialisées pour l’apprentissage profond qui facilitent le développement dans ce langage.

À l’exécution, le code écrit en Python est généralement plus lent que celui écrit avec des langages compilés comme le C++. Cependant, pour un projet typique d’apprentissage profond, la majorité du code rédigé en Python ne sert qu’à appeler des fonctions issues de librairies, qui sont, pour la plupart, codées en C ou C++, et appelées en Python. Le code final est donc aussi rapide que s’il avait été écrit en C ou en C++.

2. Librairies spécifiques

OpenCV est une librairie de traitement d’images qui n’est pas spécifique à l’apprentissage profond, mais qui propose des outils génériques pour la lecture, l’écriture, et le traitement d’images. Nous utiliserons cette librairie dans tous les exemples de ce livre.

NumPy est une librairie qui propose des outils pour le traitement de matrices de grandes dimensions. Les images lues par OpenCV sont stockées en mémoire comme des matrices NumPy. Ces deux librairies sont donc étroitement liées.

Pandas est une librairie d’analyse de données. Elle propose différents formats pour représenter les données, dont les DataFrames, qui permettent de représenter des données bidimensionnelles, comme des listes d’images à traiter avec leurs noms, tailles et classe. Ces données peuvent très facilement être groupées, filtrées, ou combinées.

Scikit-learn est une librairie pour l’apprentissage automatique. Elle fournit notamment des outils pour calculer et visualiser différentes métriques, et séparer les données en différents groupes pour l’entraînement et les tests.

3. Frameworks pour l’apprentissage profond

Il existe une grande quantité de frameworks permettant de faire de l’apprentissage profond : PyTorch, développé...

Comment utiliser les exemples de ce livre ?

Tous les exemples de ce livre sont des notebooks, que vous pouvez exécuter localement, ou directement dans Google Colab.

1. Ouvrir les exemples de ce livre dans Google Colab

L’avantage à ouvrir les exemples de ce livre dans Google Colab est que vous n’aurez rien à installer. De plus, vous disposerez d’un accès gratuit à des GPU, mais sans garantie de stabilité d’accès. Notez qu’il vous faudra disposer d’un compte Google.

La procédure est la suivante :

 Rendez-vous sur la page d’accueil de Google Colab, https://colab.research.google.com/. Cette page affiche différentes sources de notebooks à ouvrir.

images/03EP11.png

 Allez sur l’onglet GitHub, et entrez l’adresse URL du dépôt GitHub associé à ce livre.

 Enfin, sélectionnez le notebook que vous voulez ouvrir.

2. Ouvrir les exemples de ce livre localement

Les avantages d’ouvrir les exemples de ce livre localement sont que vous maîtrisez les versions de toutes les librairies que vous utilisez.

Par contre, le temps de calcul peut être long pour certains exemples si vous ne disposez pas d’une carte graphique. De plus, l’installation de toutes les librairies nécessaires peut être laborieuse.

Nous allons détailler dans cette partie la procédure à suivre pour pouvoir utiliser localement les notebooks associés à ce livre.

Les cas pratiques que nous allons rencontrer dans ce livre ont tous été développés dans un environnement Windows 64 bits, et c’est ce type d’installation qui va être décrit ici.

 Pour appliquer ces cas pratiques sur Mac ou Linux, référez-vous aux sites officiels des différents librairies et outils que nous allons installer.

a. Récupérer le code

 Tout d’abord, pour récupérer le code, rendez-vous sur la page GitHub associée à ce livre.

Ensuite, en cliquant sur le bouton Code présent en haut à droite de la fenêtre, vous pouvez choisir de télécharger directement un fichier zip contenant tous les notebooks (il vous faudra alors dézipper le dossier obtenu). Vous pouvez également cloner le répertoire avec git.

b. S’assurer que Python...

Conclusion

Dans ce chapitre, nous avons présenté les principaux outils nécessaires au développement d’applications d’apprentissage profond pour le traitement d’images.

Nous avons tout d’abord présenté les éléments vous permettant de choisir l’ordinateur le plus approprié à votre usage. Nous avons ensuite décrit plusieurs jeux de données ouverts fréquemment utilisés pour entraîner ou comparer des modèles d’apprentissage profond. Enfin, nous avons listé les langages et librairies que nous utiliserons tout au long de cet ouvrage.

Dans le prochain chapitre, nous allons entrer dans le vif du sujet, en décrivant une des composantes essentielles des réseaux de neurones profonds : les classifieurs linéaires.