# U-Net

U-Net est un réseau de neurones à convolution développé pour la segmentation d'images biomédicales au département d'informatique de l'université de Fribourg en Allemagne. Le réseau est basé sur l'architecture dite entièrement convolutionnelle (fully convolutional networks), modifiée et étendue pour fonctionner avec moins d’images d'entrainement et pour permettre une segmentation plus précise. La segmentation d'une image 512 * 512 prend moins d'une seconde sur un GPU récent.
L'architecture U-Net a eu un impact important (plusieurs dizaines de milliers de citations de l'article original) et est une des références en matière de modèles image-to-image (réseaux convertissant une image en une autre de mêmes dimensions)$^,$.

## Description

U-Net est une architecture plus élégante, appelée «réseau entièrement convolutionnel».
L'idée principale est de compléter un contracting network par couches successives, les opérations de pooling sont remplacées par des opérateurs de suréchantillonnage. Par conséquent, ces couches augmentent la résolution de la sortie. De plus, une couche convolutionnelle successive peut alors apprendre à assembler une sortie précise à partir de cette information.
Une modification importante dans U-Net est qu'il existe un grand nombre de canaux de fonctions dans la partie de ré-échantillonnage, ce qui permet au réseau de propager des informations de contexte vers des couches de résolution supérieure. En conséquence, le chemin d'expansion est plus ou moins symétrique à la partie contractante et donne une architecture en forme de «U». Le réseau utilise uniquement la partie valide de chaque convolution sans aucune couche entièrement connectée. Pour prédire les pixels dans la zone de bordure de l'image, le contexte manquant est extrapolé en reflétant l'image d'entrée. Cette stratégie de mosaïque est importante pour appliquer le réseau aux images volumineuses, car sinon la résolution serait limitée par la mémoire du processeur graphique.

## Historique

U-Net a été proposé par Olaf Ronneberger, Philipp Fischer et Thomas Brox en 2015 dans l'article «UNet: réseaux de convolution pour la segmentation d'images biomédicales» à la Conference on Computer Vision and Pattern Recognition en 2015.
C'est une amélioration et un développement de l'architecture entièrement convolutionnelle développée par Evan Shelhamer, Jonathan Long et Trevor Darrell dans leur article "Fully convolutional networks for semantic segmentation" (2014).

## Architecture du réseau

Le réseau se compose d'une partie contractante et une voie expansive, ce qui lui confère une architecture en forme de «U». La partie contractante est un réseau de convolution typique qui consiste en une application répétée de convolutions, chacune suivie d'une unité linéaire rectifiée (ReLU) et d'une opération de pooling maximum. Pendant la contraction, les informations spatiales sont réduites tandis que les informations sur les caractéristiques sont augmentées. La voie expansive combine les informations de caractéristiques géographiques et spatiales à travers une séquence de convolutions et concaténations ascendantes avec des fonctionnalités haute résolution issues de la voie contractante.

## Applications

Il existe de nombreuses applications d' U-Net dans la segmentation d'images biomédicales, telles que la segmentation d'images cérébrales ("BRATS") ou hépatiques ("siliver07"). L'architecture U-Net a également été appliquée dans d'autres contextes, par exemple pour le pansharpening (en), la segmentation volumétrique 3D, ou combinée avec d'autres pour améliorer ses performances.

## Implémentations

Le code source d'origine, qui s'appuie sur la librairie Caffe (en), est disponible en ligne, accompagné des poids du réseau entraîné.
Des implémentations tierces, notamment en TensorFlow, sont également disponibles.