Strati convoluzionali: pad o non pad?


19

L'architettura AlexNet utilizza zero-padding come mostrato nella figura: inserisci qui la descrizione dell'immagine Tuttavia, non vi è alcuna spiegazione nel documento sul perché questa imbottitura è stata introdotta.

Il corso Standford CS 231n insegna che utilizziamo l'imbottitura per preservare le dimensioni spaziali: inserisci qui la descrizione dell'immagine

Mi chiedo è l'unica ragione per cui abbiamo bisogno di imbottitura? Voglio dire, se non ho bisogno di preservare le dimensioni spaziali posso semplicemente rimuovere le imbottiture? So che comporterà una riduzione molto rapida delle dimensioni spaziali man mano che andremo a livelli più profondi. Tuttavia, posso compensarlo rimuovendo i livelli di pooling. Sarei molto felice se qualcuno potesse darmi un po 'di logica dietro lo zero padding. Grazie!

Risposte:


20

Ci sono un paio di ragioni per cui l'imbottitura è importante:

  1. È più semplice progettare reti se conserviamo heighte widthnon dobbiamo preoccuparci troppo delle dimensioni del tensore quando passiamo da un livello all'altro perché le dimensioni "funzioneranno" .

  2. Ci consente di progettare reti più profonde . Senza imbottitura, la riduzione delle dimensioni del volume si ridurrebbe troppo rapidamente.

  3. L'imbottitura migliora effettivamente le prestazioni mantenendo le informazioni ai confini .

Citazione dalle lezioni di Stanford: "Oltre al vantaggio di cui sopra di mantenere costanti le dimensioni spaziali dopo CONV, ciò in realtà migliora le prestazioni. Se gli strati CONV non dovessero azzerare gli input ed eseguire solo convoluzioni valide, allora la dimensione del i volumi si ridurrebbero di una piccola quantità dopo ciascun CONV e le informazioni ai confini verrebbero "lavate via" troppo rapidamente ". - fonte

  1. Come già detto da @dontloo, le nuove architetture di rete devono concatenare i livelli convoluzionali con filtri 1x1, 3x3 e 5x5 e non sarebbe possibile se non usassero l'imbottitura perché le dimensioni non corrispondevano. Controlla questa immagine del modulo di avvio per capire meglio perché l'imbottitura è utile qui.

inserisci qui la descrizione dell'immagine


4
Perché l'imbottitura zero è così onnipresente? Nell'elaborazione delle immagini vengono utilizzate molte diverse modalità dei bordi, come vari tipi di mirroring o continuando con il valore al bordo. Gli zeri puri hanno una struttura molto diversa rispetto alle immagini / caratteristiche reali.
Isarandi,

3

Mi sembra che il motivo più importante sia preservare le dimensioni spaziali. Come hai detto, possiamo compensare la riduzione delle dimensioni spaziali rimuovendo i livelli di pooling. Tuttavia molte strutture di rete recenti (come reti residue , reti 'inizio , reti frattale ) operano sulle uscite dei diversi strati, che richiede una dimensione spaziale coerente tra loro.

Un'altra cosa è, se non c'è riempimento, i pixel nell'angolo dell'input influiscono solo sui pixel nell'angolo corrispondente dell'output, mentre i pixel al centro contribuiscono a un vicinato nell'output. Quando diversi livelli senza riempimento vengono impilati insieme, il tipo di rete ignora i pixel del boarder dell'immagine.

Solo alcune delle mie comprensioni, credo che ci siano altre buone ragioni.


2

Ottima domanda Drag0 ha spiegato bene ma sono d'accordo, qualcosa non va.

È come guardare una fotografia e dover affrontare il confine. Nella vita reale, puoi spostare gli occhi per guardare oltre; Non esistono confini reali. Quindi è una limitazione del mezzo.

Oltre a preservare le dimensioni, importa? Non sono a conoscenza di una risposta soddisfacente, ma ipotizzo (non comprovato) che con esperimenti sull'attenzione e l'occlusione (oggetti parziali), non abbiamo bisogno delle informazioni perse ai confini. Se dovessi fare qualcosa di più intelligente (ad esempio, copia il pixel accanto ad esso), non cambierebbe la risposta anche se non ho sperimentato me stesso. L'imbottitura con 0 è veloce e mantiene le dimensioni, quindi è per questo che lo facciamo.


1

questo è il mio pensiero. lo zero padding è importante al momento iniziale per mantenere le dimensioni del vettore della feature di output. e qualcuno sopra ha detto che zero padding ha più prestazioni.

ma che ne dici dell'ultima volta? la risoluzione vettoriale delle caratteristiche dell'immagine è molto piccola e il valore in pixel indica una sorta di vettore di dimensioni globali.

Penso che nell'ultimo caso una sorta di mirroring sia meglio di zero padding.


1

Elaborare per mantenere le informazioni al bordo, in sostanza, il pixel all'angolo (ombreggiato in verde) quando fatto convoluzione su sarebbe usato solo una volta mentre quello al centro, come il rosso sfumato, contribuirebbe più volte alla mappa delle caratteristiche risultante. , riempiamo l'immagine Vedi figura: 2 .


1

Cercherò di dire dal punto di vista delle informazioni che quando va bene pad e quando non lo è.

Facciamo per caso base prendiamo l'esempio della funzionalità di imbottitura tensorflow. Fornisce due scenari, "Valido" o "stesso". Lo stesso manterrà la dimensione dell'output e lo manterrà uguale a quello dell'input aggiungendo un padding adeguato, mentre valido non lo farà e alcune persone sostengono che porterà alla perdita di informazioni, ma, ecco il problema .

Questa perdita di informazioni dipende dalla dimensione del kernel o dal filtro che si sta utilizzando. Ad esempio, supponiamo che tu abbia un'immagine 28x28 e la dimensione del filtro sia 15x15 (diciamo). L'output dovrebbe avere dimensioni 16x16, ma se si utilizza pad "stesso" in tensorflow sarà 28x28. Ora le 12 righe e le 12 colonne in sé non contengono alcuna informazione significativa ma sono ancora presenti come una forma di rumore. E sappiamo tutti quanti sono i modelli sensibili di deep learning verso il rumore. Questo può degradare molto l'allenamento. Quindi, se stai usando filtri di grandi dimensioni, meglio non andare con l'imbottitura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.