Couches de pooling (MaxPooling3D)

Les couches MaxPooling3D sont utilisées dans les réseaux de neurones pour réduire la dimension des données tridimensionnelles, comme des vidéos, des volumes médicaux ou des cartes de caractéristiques 3D. L’objectif est de simplifier les représentations tout en conservant les informations les plus importantes.

Le principe consiste à diviser le volume de données en fenêtres cubiques de taille fixe et à ne retenir que la valeur maximale de chaque fenêtre. Cette opération réduit la taille spatiale et/ou temporelle des données, diminue le coût computationnel et rend le réseau plus robuste aux variations locales.

Les couches MaxPooling3D sont utilisées dans les architectures CNN 3D pour la classification vidéo, la segmentation volumétrique ou la détection d’objets 3D. Elles sont souvent suivies de couches de convolution, de normalisation ou fully connected.

En résumé, les couches MaxPooling3D permettent de réduire la dimensionnalité des données 3D tout en conservant les caractéristiques les plus saillantes pour l’apprentissage du réseau.

Fonctions :

  • MaxPooling3D()

    MaxPooling3D est une couche de réduction de dimension qui effectue un max pooling sur des fenêtres 3D glissantes. Elle est utilisée après des couches convolutionnelles 3D pour réduire la profondeur, la hauteur et la largeur des données volumétriques (comme des séquences d’images ou des volumes médicaux) tout en conservant les informations les plus importantes.

    Importation :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Conv3D, MaxPooling3D, Flatten, Dense
    import numpy as np

    Attributs :

    Paramètre Type Description Valeur par défaut
    pool_size int ou tuple Taille de la fenêtre de pooling (profondeur, hauteur, largeur). (2, 2, 2)
    strides int ou tuple Pas de déplacement de la fenêtre de pooling. None (équivalent à pool_size)
    padding str 'valid' (sans remplissage) ou 'same' (conserve la taille). 'valid'
    data_format str 'channels_last' (profondeur, hauteur, largeur, canaux) ou 'channels_first' (canaux, profondeur, hauteur, largeur). 'channels_last'

    Exemple de code :

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Conv3D, MaxPooling3D, Flatten, Dense
    import numpy as np
    
    # Données simulées : 20 volumes 16x16x16 avec 1 canal
    X = np.random.rand(20, 16, 16, 16, 1)
    y = np.random.randint(0, 2, size=(20,))
    
    # Modèle simple avec MaxPooling3D
    model = Sequential()
    model.add(Conv3D(filters=16, kernel_size=(3, 3, 3), activation='relu', input_shape=(16, 16, 16, 1)))
    model.add(MaxPooling3D(pool_size=(2, 2, 2)))
    model.add(Flatten())
    model.add(Dense(1, activation='sigmoid'))
    
    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    model.summary()
    Résultat du code

    Explication du code :

    Importation des bibliothèques
    On importe les couches nécessaires de TensorFlow Keras : `Conv3D`, `MaxPooling3D`, `Flatten` et `Dense`.
    Création des données
    Les données simulées représentent 20 volumes 3D de taille 16×16×16 avec 1 canal. Les sorties sont binaires.
    Définition du modèle
    Une couche `Conv3D` extrait des caractéristiques spatiales et temporelles dans les volumes, suivie d’une couche `MaxPooling3D` qui réduit la profondeur, hauteur et largeur en prenant le maximum sur des fenêtres 2×2×2. `Flatten` transforme les données 3D en vecteur pour la couche dense finale.
    Compilation
    Le modèle est compilé pour un problème de classification binaire avec l’optimiseur Adam.

⚠️ Ce contenu est réservé aux membres Premium

Abonnez-vous pour débloquer cette page et accéder à tous nos contenus exclusifs.

Souscrire maintenant