Construire un réseau U-Net : méthode directe
Une fois les couches encodeur et décodeur définies, vous pouvez maintenant implémenter la méthode d'forward()
du réseau U-net. Les entrées ont déjà été transmises à l'encodeur pour vous. Cependant, il est nécessaire de définir le dernier bloc décodeur.
L'objectif du décodeur est de suréchantillonner les cartes de caractéristiques afin que sa sortie ait la même hauteur et la même largeur que l'image d'entrée de U-Net. Cela vous permettra d'obtenir des masques sémantiques au niveau des pixels.
Cet exercice fait partie du cours
Deep learning pour les images avec PyTorch
Instructions
- Définissez le dernier bloc décodeur en utilisant l'
torch.cat()
e pour former la connexion de saut.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
def forward(self, x):
x1 = self.enc1(x)
x2 = self.enc2(self.pool(x1))
x3 = self.enc3(self.pool(x2))
x4 = self.enc4(self.pool(x3))
x = self.upconv3(x4)
x = torch.cat([x, x3], dim=1)
x = self.dec1(x)
x = self.upconv2(x)
x = torch.cat([x, x2], dim=1)
x = self.dec2(x)
# Define the last decoder block with skip connections
x = ____
x = ____
x = ____
return self.out(x)