IniziaInizia gratis

Costruire una U-Net: metodo forward

Definite le layer di encoder e decoder, puoi ora implementare il metodo forward() della U-Net. Gli input sono già stati passati attraverso l'encoder per te. Tuttavia, devi definire l'ultimo blocco del decoder.

L'obiettivo del decoder è upsamplare le mappe di caratteristiche in modo che il suo output abbia la stessa altezza e larghezza dell'immagine di input della U-Net. Questo ti permetterà di ottenere maschere semantiche a livello di pixel.

Questo esercizio fa parte del corso

Deep Learning per Immagini con PyTorch

Visualizza il corso

Istruzioni dell'esercizio

  • Definisci l'ultimo blocco del decoder, usando torch.cat() per creare la skip connection.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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)
Modifica ed esegui il codice