U-Net est une architecture de réseau neuronal convolutif développée pour la segmentation d'images, en particulier dans les contextes biomédicaux. Elle a été introduite en 2015 par Olaf Ronneberger, Philipp Fischer et Thomas Brox à l'Université de Fribourg, en s'appuyant sur des réseaux entièrement convolutifs antérieurs. L'architecture se distingue par sa conception symétrique d'encodeur-décodeur avec des connexions de saut, ce qui lui permet de produire des cartes de segmentation précises à partir de relativement peu d'images d'entraînement. La segmentation d'une image de 512 × 512 prend moins d'une seconde sur un GPU moderne (2015) en utilisant l'architecture U-Net.
L'architecture U-Net provient du soi-disant « réseau entièrement convolutif » (FCN), développé par Evan Shelhamer, Jonathan Long et Trevor Darrell en 2014. L'idée principale est de compléter un réseau de contraction habituel par des couches successives, où les opérations de pooling sont remplacées par des opérateurs de suréchantillonnage. Ces couches augmentent ainsi la résolution de la sortie. Une couche convolutive successive peut alors apprendre à assembler une sortie précise sur la base de ces informations.
Architecture du réseau
Le réseau se compose d'un chemin de contraction et d'un chemin d'expansion, ce qui lui donne l'architecture en forme de U. Le chemin de contraction est un réseau convolutif typique qui consiste en l'application répétée de convolutions, chacune suivie d'une unité linéaire rectifiée (ReLU) et d'une opération de max pooling. Pendant la contraction, l'information spatiale est réduite tandis que l'information de caractéristiques est augmentée. Le chemin d'expansion combine l'information de caractéristiques et l'information spatiale à travers une séquence de sur-convolutions et de concaténations avec les caractéristiques haute résolution du chemin de contraction.
Une modification importante dans U-Net est qu'il existe un grand nombre de canaux de caractéristiques dans la partie de suréchantillonnage, ce qui permet au réseau de propager l'information de contexte vers les couches à plus haute résolution. En conséquence, le chemin d'expansion est plus ou moins symétrique à la partie de contraction et produit une architecture en forme de U. Le réseau n'utilise que la partie valide de chaque convolution sans aucune couche entièrement connectée. Par conséquent, le réseau peut être entraîné et exécuté avec un mélange de résolutions d'entrée.
Pour prédire les pixels dans la région de bordure de l'image, le contexte manquant au-delà de la limite de l'image est extrapolé en reflétant l'image d'entrée aux limites de l'image. L'article original sur U-Net a en outre suggéré une stratégie de tuilage, où les grandes images sont découpées en tuiles qui se chevauchent et sont traitées indépendamment. Cela permet de traiter des images haute résolution qui dépasseraient autrement la mémoire GPU disponible. Récemment, il y a également eu un intérêt pour les modèles U-Net basés sur le champ réceptif pour la segmentation d'images médicales.
Entraînement et fonction de perte
U-Net est entraîné de bout en bout en utilisant la descente de gradient stochastique (SGD) avec une fonction de perte pixel par pixel, typiquement l'entropie croisée ou une variante pondérée. La fonction d'énergie est calculée par un soft-max pixel par pixel sur la carte de caractéristiques finale, combiné avec la perte d'entropie croisée. Les auteurs ont introduit une carte de poids qui donne une importance plus élevée aux pixels proches des frontières entre objets en contact, ce qui aide le réseau à apprendre à séparer les instances individuelles dans les images biomédicales. Cette carte de poids est précalculée pour chaque image d'entraînement et est utilisée pour pénaliser plus lourdement les erreurs dans les régions de bordure.
Le réseau utilise l'augmentation de données pour augmenter la taille effective de l'ensemble d'entraînement, y compris les déformations élastiques, les rotations et les variations d'intensité. Cela est particulièrement important en imagerie biomédicale où les données annotées sont rares. L'implémentation originale utilisait un momentum élevé (0,99) et un taux d'apprentissage faible (0,00001) pour assurer une convergence stable.
Applications en imagerie biomédicale
Il existe de nombreuses applications de U-Net dans la segmentation d'images biomédicales, telles que la segmentation de différents organes et systèmes corporels dans les scans de tomodensitométrie (CT) et d'imagerie par résonance magnétique (IRM). Des cas spécifiques incluent la segmentation d'images cérébrales (BRATS) et la segmentation d'images hépatiques (siliver07), ainsi que la prédiction de sites de liaison de protéines. Les implémentations de U-Net ont également trouvé une utilisation dans les sciences physiques, par exemple dans l'analyse de micrographies de matériaux.
Des variantes de U-Net ont également été appliquées à la reconstruction d'images médicales. Voici quelques variantes et applications de U-Net :
- Régression pixel par pixel utilisant U-Net et son application sur le pansharpening.
- 3D U-Net : Apprentissage de la segmentation volumétrique dense à partir d'annotation éparse.
- TernausNet : U-Net avec encodeur VGG11 pré-entraîné sur ImageNet pour la segmentation d'images.
- Traduction d'image à image pour estimer les colorations fluorescentes.
- Dans la prédiction de sites de liaison de structures protéiques.
Utilisation dans les modèles de diffusion
L'architecture U-Net a également été employée dans les modèles de diffusion pour le débruitage itératif d'images. Cette technologie sous-tend de nombreux modèles modernes de génération d'images, tels que DALL-E, Midjourney et Stable Diffusion. Dans ces modèles, un U-Net est entraîné à prédire le bruit ajouté à une image à chaque étape du processus de diffusion, permettant au modèle de raffiner progressivement une entrée de bruit aléatoire en une image cohérente. Les connexions de saut dans U-Net sont particulièrement bénéfiques ici car elles préservent les détails haute fréquence pendant le processus de débruitage.
Exploration pour les modèles de langage
U-Net est également exploré pour les modèles de langage. La tokenisation n'est pas une étape séparée, ce qui permet au modèle de comprendre plus facilement l'orthographe et de vectoriser / tokeniser simultanément des concepts de niveau supérieur. C'est un domaine de recherche émergent qui exploite la capacité de U-Net à capturer des caractéristiques multi-échelles, offrant potentiellement une alternative à l'architecture Transformer (architecture) dominante dans le traitement du langage naturel.
Histoire et héritage
U-Net a été créé par Olaf Ronneberger, Philipp Fischer et Thomas Brox en 2015 et rapporté dans l'article « U-Net : Réseaux convolutifs pour la segmentation d'images biomédicales ». C'est une amélioration et un développement du FCN : Evan Shelhamer, Jonathan Long, Trevor Darrell (2014). « Réseaux entièrement convolutifs pour la segmentation sémantique ». L'article est devenu l'un des plus cités dans le domaine du apprentissage profond, et l'architecture a été adaptée pour d'innombrables tâches au-delà de l'imagerie biomédicale.
Le succès de U-Net a inspiré de nombreuses variantes, y compris celles avec différents encodeurs (tels que VGG ou ResNet), des mécanismes d'attention et un traitement multi-échelle. Son influence s'étend à d'autres domaines du apprentissage automatique, y compris Generative AI et vision par ordinateur. L'architecture est également une référence courante dans les défis d'imagerie médicale et est largement implémentée dans des frameworks comme TensorFlow et PyTorch.
Implémentations
Plusieurs implémentations open-source de U-Net sont disponibles. Tensorflow Unet par J Akeret (2017) est une implémentation populaire. Le code source original de U-Net est disponible auprès du groupe de reconnaissance de formes et de traitement d'images du département d'informatique de l'Université de Fribourg, en Allemagne. Ces implémentations ont facilité l'adoption généralisée de U-Net dans la recherche et l'industrie.