Le domaine du traitement de l’image en IA est composé de plusieurs branches. Dans cet article nous allons aborder la classification d’images médicales de type TDM ou IRM, en niveaux de gris, par des méthodes d’apprentissage profond (en anglais deep learning).
Les différents types de familles de modèles de classification d’images
La classification d’images a connu une avancée majeure en termes de performance, grâce à l’essor des réseaux de neurones convolutifs (en anglais Convolutional Neural Network, CNN).
Avant les réseaux de neurones convolutifs, les méthodes de classification automatiques les plus couramment utilisées pour les images étaient les algorithmes :
- des plus proches voisins (en anglais k-Nearest Neighbors, k-NN),
- des machines à vecteurs de support ou les séparateurs à vaste marge (en anglais Support Vector Machine, SVM), et
- des forêts aléatoires (en anglais Random Forest, RF) [1].
Comment fonctionnent les réseaux de neurones convolutifs ?
L’intelligence artificielle est l'utilisation de méthodes et techniques permettant la simulation de l’intelligence humaine. Dans cette partie nous expliquerons le fonctionnement d’un neurone artificiel, puis présenterons l’architecture des réseaux de neurones convolutifs et ses principales composantes.
Qu’est-ce qu’un neurone artificiel ?
Un neurone artificiel est un ensemble d’opérations mathématiques. Tout d’abord un poids et un biais sont appliqués de manière affine à une valeur d’entrée : en analyse d’images celle-ci est la valeur d’un pixel. Puis, une fonction d’activation est appliquée au résultat intermédiaire pour représenter les données dans l’espace des données de cette fonction. Souvent, cette fonction d’activation est non-linéaire, car elle permet de représenter des données complexes où la combinaison linéaire ne fonctionne pas.
Crédits : [2]
Quelle forme a l’architecture d’un réseau de neurones convolutifs ?
Cette architecture de réseaux est inspirée du fonctionnement du cortex visuel des animaux. L’analyse du champ visuel est faite au travers d’un ensemble de sous-régions se chevauchant et pavant l’image. Chaque sous-région est analysée par un neurone du cerveau de l’animal, afin de pré-traiter de petites quantités d’information. C'est ce que l’on nomme le traitement convolutif [2].
L’architecture d’un réseau de neurones convolutifs est formée par une succession de blocs de traitement pour extraire les caractéristiques discriminant la classe d’appartenance de l’image des autres. Un bloc de traitement se compose d’une à plusieurs :
- couches de convolution (CONV) qui traitent les données d'un champ récepteur ;
- couches de correction (ReLU), souvent appelée par abus « ReLU » en référence à la fonction d'activation (Unité de rectification linéaire) ;
- couches de pooling (POOL), qui permet de compresser l'information en réduisant la taille de l'image intermédiaire (souvent par sous-échantillonnage).
Les blocs de traitement s’enchaînent jusqu’aux couches finales du réseau qui réalisent la classification de l’image et le calcul de l’erreur entre la prédiction et la valeur cible :
- couche « entièrement connectée » (FC), qui est une couche de type perceptron ;
- couche de perte (LOSS) [2].
La façon dont s'enchaînent les couches de convolution, de correction et de pooling dans les blocs de traitement, ainsi que les blocs de traitement entre eux, font la particularité de l’architecture du réseau. Celle-ci est définie à la suite d’un travail de recherche appliquée. Nous verrons dans un article dédié quelles sont les architectures CNN les plus couramment employées en classification d’images médicales.
Comment fonctionne une convolution ?
L’image est :
- découpée en sous-régions, appelées tuiles ; et
- analysée par un noyau de convolution.
Ce noyau de convolution a la taille d’une tuile, souvent 3*3 ou 5*5. La zone analysée (champ réceptif) est légèrement plus grande que le noyau, car un pas est ajouté ; de façon à ce que les champs réceptifs se chevauchent. Cette astuce permet d'obtenir une meilleure représentation de l'image et d’améliorer la cohérence du traitement de celle-ci.
L’analyse des caractéristiques de l’image par le noyau de convolution est une opération de filtrage avec une association de poids à chaque pixel. L’application du filtre à l'image est appelée une convolution [2].
Après une convolution, une carte de caractéristiques (en anglais features map) est obtenue, c’est une représentation abstraite de l’image. Ses valeurs dépendent des paramètres du noyau de convolution appliqué et des valeurs de pixels de l’image d’entrée.
Qu’est-ce qu’une couche de convolution (CONV) ?
Une couche de convolution est un empilement de convolutions. En effet, l’image est parcourue par plusieurs noyaux de convolution qui donnent lieu à plusieurs cartes de caractéristiques de sorties. Chaque noyau de convolution possède des paramètres spécifiques à l’information qui est recherchée dans l’image (par exemple: un noyau de convolution de type filtre Sobel a des paramètres permettant de rechercher les contours dans l'image).
Le choix des paramètres du noyau de convolution dépend de la tâche à résoudre. Avec les méthodes deep learning, ces paramètres sont automatiquement appris par l’algorithme à partir des données d’entraînement [3]. Notamment, grâce à la technique de rétropropagation du gradient, qui permet l’ajustement des paramètres en fonction de la valeur du gradient de la fonction de perte. La fonction de perte calcule l’erreur entre la valeur prédite et la valeur cible.
Schéma d’une convolution avec un noyau de taille 3*3 et un pas de 2
Comment fonctionne une couche de correction (ReLU) ?
La couche de correction ou d’activation est l’application d’une fonction non-linéaire aux cartes de caractéristiques en sortie de la couche de convolution. En rendant les données non-linéaires, elle facilite l’extraction des caractéristiques complexes qui ne peuvent pas être modélisées par une combinaison linéaire d’un algorithme de régression.
Les fonction non-linéaires les plus utilisées sont :
- sigmoïde ou logistique,
- tangente hyperbolique,
- Unité de rectification linéaire (ReLU).
Very often, the ReLU function is chosen because it maximizes the decision of the affine function applied by convolution.
Qu’est-ce-qu’une couche de pooling (POOL) ?
L’étape de pooling est une technique de sous-échantillonnage. Généralement, une couche de pooling est insérée régulièrement entre les couches de correction et de convolution. En réduisant la taille des cartes de caractéristiques, donc le nombre de paramètres du réseau, cela accélère le temps de calcul et diminue le risque de sur-apprentissage.
L’opération de pooling la plus courante est celle du maximum : MaxPool(2*2, 2). Elle est plus efficace que la moyenne, car elle maximise le poids des activations fortes. Elle est appliquée à la sortie de la couche précédente comme un filtre de convolution de taille (2*2) et se déplace avec un pas de 2. En sortie de la couche de pooling est obtenue une carte de caractéristique compressée par un facteur de 4.
Schéma d’une convolution avec un noyau de taille 3*3 et un pas de 2
Comment fonctionne une couche “entièrement connectée” (FC) ?
Cette couche est à la fin du réseau. Elle permet la classification de l’image à partir des caractéristiques extraites par la succession de bloc de traitement. Elle est entièrement connectée, car toutes les entrées de la couche sont connectées aux neurones de sorties de celle-ci. Ils ont accès à la totalité des informations d'entrée. Chaque neurone attribue à l’image une valeur de probabilité d’appartenance à la classe i parmi les C classes possibles.
Schéma d’une couche entièrement connectée avec 6 classes
Contrairement à la phase d’extraction des caractéristiques où les neurones de traitement sont indépendants entre eux et ont uniquement accès à l’information du champ réceptif qu’ils traitent.
Qu’est-ce-qu’une couche de perte (LOSS) ?
La couche de perte est la dernière couche du réseau. Elle calcule l’erreur entre la prévision du réseau et la valeur réelle. Lors d’une tâche de classification, la variable aléatoire est discrète, car elle peut prendre uniquement les valeurs 0 ou 1, représentant l’appartenance (1) ou non (0) à une classe. C'est pourquoi la fonction de perte la plus courante et la plus adaptée est la fonction d’entropie croisée (en anglais cross-entropy).
Celle-ci est issue du domaine de la théorie de l’information, et mesure la différence globale entre deux distributions de probabilité (celle de la prévision du modèle, celle du réel) pour une variable aléatoire ou un ensemble d'évènements [4]. Formellement, elle s’écrit :
avec y la probabilité estimée d’appartenance de x à la classe i, p la probabilité réelle d’appartenance de x à la classe i, sachant qu’il y a C classes.
Les hyper-paramètres
Les hyper-paramètres permettent de contrôler l’apprentissage automatique en grande dimension. Ils sont répartis en deux catégories :
- les hyperparamètres de modèles ;
- les hyperparamètres d’algorithme [5].
Les premiers permettent de définir la taille du réseau (i.e. largeur, profondeur), et son type (e.g. auto-encodeur). Les seconds n’influencent pas la performance du modèle, mais le processus d’apprentissage (i.e. rapidité, qualité). Nous détaillerons les stratégies d'apprentissage automatique et discuterons plus en détail du choix des valeurs des hyper-paramètres dans cet article.
[1] Loussaief S., Abdelkrim A. "Machine learning framework for image classification," 2016 7th International Conference on Sciences of Electronics, Technologies of Information and Telecommunications (SETIT), Hammamet, 2016, pp. 58-61, https://doi.org/10.1109/SETIT.2016.7939841.
[2] https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif
[4] https://machinelearningmastery.com/cross-entropy-for-machine-learning/