Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati
introduzione
VGG- Network es un modelo de convolucional neuronale rossoReti neurali convoluzionali (CNN) son un tipo de arquitectura de red neuronal diseñadas especialmente para el procesamiento de datos con una estructura de cuadrícula, come immagini. Utilizan capas de convolución para extraer características jerárquicas, lo que las hace especialmente efectivas en tareas de reconocimiento de patrones y clasificación. Gracias a su capacidad para aprender de grandes volúmenes de datos, las CNN han revolucionado campos como la visión por computadora... propuesto por K. Simonyan e A. Zisserman nell'articolo “Reti convoluzionali molto profonde per il riconoscimento di immagini su larga scala” [1]. Questa architettura ha raggiunto la precisione del test tra i 5 il meglio di 92,7% su ImageNet, che ha più di 14 milioni di immagini appartenenti a 1000 Lezioni.
Es una de las arquitecturas famosas en el campo del apprendimento profondoApprendimento profondo, Una sottodisciplina dell'intelligenza artificiale, si affida a reti neurali artificiali per analizzare ed elaborare grandi volumi di dati. Questa tecnica consente alle macchine di apprendere modelli ed eseguire compiti complessi, come il riconoscimento vocale e la visione artificiale. La sua capacità di migliorare continuamente man mano che vengono forniti più dati lo rende uno strumento chiave in vari settori, dalla salute.... Sostituisci i filtri di grandi dimensioni del kernel con 11 e 5 nel primo e nel secondo strato, rispettivamente, ha mostrato miglioramenti rispetto all'architettura AlexNet, con più filtri per la dimensione del kernel da 3 × 3 uno dopo l'altro. È stato addestrato per settimane e utilizzava la GPU NVIDIA Titan Black.
Architettura VGG16
La entrada a la neuronale rossoLe reti neurali sono modelli computazionali ispirati al funzionamento del cervello umano. Usano strutture note come neuroni artificiali per elaborare e apprendere dai dati. Queste reti sono fondamentali nel campo dell'intelligenza artificiale, consentendo progressi significativi in attività come il riconoscimento delle immagini, Elaborazione del linguaggio naturale e previsione delle serie temporali, tra gli altri. La loro capacità di apprendere schemi complessi li rende strumenti potenti.. de convolución es una imagen RGB de tamaño fijo 224 × 224. L'unica pre-elaborazione che fa è sottrarre i valori RGB medi, que se calculan en el conjunto de datos de addestramentoLa formazione è un processo sistematico volto a migliorare le competenze, conoscenze o abilità fisiche. Viene applicato in vari ambiti, come lo sport, Formazione e sviluppo professionale. Un programma di allenamento efficace include la pianificazione degli obiettivi, Pratica regolare e valutazione dei progressi. L'adattamento alle esigenze individuali e la motivazione sono fattori chiave per ottenere risultati di successo e sostenibili in qualsiasi disciplina...., di ogni pixel.
Dopo, l'immagine attraversa una pila di strati convolutivi (conv.), Dove ci sono filtri con un campo recettivo molto piccolo cioè 3 × 3, qual è la dimensione più piccola per catturare la nozione di sinistra / Giusto, sopra / fuori uso, e parte centrale.
In una delle configurazioni, utilizza anche filtri di convoluzione 1 × 1, che può essere osservata come una trasformazione lineare dei canali di ingresso seguita da non linearità. I passi convolutivi sono fissati a 1 pixel; el relleno espacial de la entrada de la copertina convolutivaLa capa convolucional, fundamental en las redes neuronales convolucionales (CNN), se utiliza principalmente para el procesamiento de datos con estructuras en forma de cuadrícula, come immagini. Esta capa aplica filtros que extraen características relevantes, como bordes y texturas, permitiendo que el modelo reconozca patrones complejos. Su capacidad para reducir la dimensionalidad de los datos y mantener información esencial la convierte en una herramienta clave en tareas de visión por computadora... es tal que la risoluzioneIl "risoluzione" si riferisce alla capacità di prendere decisioni ferme e raggiungere gli obiettivi prefissati. In contesti personali e professionali, Implica la definizione di obiettivi chiari e lo sviluppo di un piano d'azione per raggiungerli. La risoluzione è fondamentale per la crescita personale e il successo in vari ambiti della vita, In quanto ti permette di superare gli ostacoli e mantenere la concentrazione su ciò che conta davvero.... espacial se mantiene después de la convolución, vale a dire, il ripieno è 1 pixel per 3 × 3 Conv. copertine.
Dopo, il clustering spaziale è effettuato da cinque strati di clustering massimo, 16 che seguono alcuni dei Conv. copertine, ma non tutti Conv. i livelli sono seguiti dal raggruppamento massimo. Questo raggruppamento massimo viene eseguito in una finestra di 2 × 2 pixel, con passo 2.
L'architettura contiene una pila di livelli convoluzionali che hanno una profondità diversa in diverse architetture, seguiti da tre livelli completamente connessi (FC): i primi due FC hanno 4096 canali ciascuno e il terzo FC esegue una classificazione di 1000 percorsi e quindi contiene 1000 canali che è uno per ogni classe.
L'ultimo strato è il livello soft-max. La configurazione dei livelli completamente connessi è simile in tutte le reti.
Tutti i livelli nascosti sono dotati di rettifica (riprendereLa función de activación ReLU (Rectified Linear Unit) es ampliamente utilizada en redes neuronales debido a su simplicidad y eficacia. Definida como ( F(X) = max(0, X) ), ReLU permite que las neuronas se activen solo cuando la entrada es positiva, lo que contribuye a mitigar el problema del desvanecimiento del gradiente. Su uso ha demostrado mejorar el rendimiento en diversas tareas de aprendizaje profundo, haciendo de ReLU una opción...) non lineare. Cosa c'è di più, aquí una de las redes contiene NormalizzazioneLa normalización es un proceso fundamental en diversas disciplinas, que busca establecer estándares y criterios uniformes para mejorar la calidad y la eficiencia. En contextos como la ingeniería, la educación y la administración, la normalización facilita la comparación, la interoperabilidad y la comprensión mutua. Al implementar normas, se promueve la cohesión y se optimizan recursos, lo que contribuye al desarrollo sostenible y a la mejora continua de los procesos.... de respuesta local (LRN), tale normalizzazione non migliora le prestazioni sul set di dati addestrato, ma il suo utilizzo comporta un maggiore consumo di memoria e tempi di calcolo.
Riepilogo dell'architettura:
• L'input al modello è un'immagine RGB a dimensione fissa 224 × 224224 × 224
• La preelaborazione consiste nel sottrarre la media del valore RGB del training set da ciascun pixel
• Strati convoluzionali 17
– passo fisso a 1 pixel
– il ripieno è 1 pixel per 3 × 33 × 3
• Livelli di raggruppamento spaziale
– Questo strato non conta per la profondità del web per convenzione
– Il raggruppamento spaziale viene eseguito utilizzando i livelli di raggruppamento massimi
– la dimensione della finestra è 2 × 22 × 2
– Andata impostata su 2
– Convnet utilizzati 5 livelli massimi di raggruppamento
• Livelli completamente connessi:
• 1º: 4096 (riprendere).
▪ 2: 4096 (riprendere).
▪ 3º: 1000 (Softmax).
Configurazione dell'architettura
Quanto segue figura"Figura" è un termine che viene utilizzato in vari contesti, Dall'arte all'anatomia. In campo artistico, si riferisce alla rappresentazione di forme umane o animali in sculture e dipinti. In anatomia, designa la forma e la struttura del corpo. Cosa c'è di più, in matematica, "figura" è legato alle forme geometriche. La sua versatilità lo rende un concetto fondamentale in molteplici discipline.... contiene la configuración de la red neuronal de convolución de la red VGG con el
strati successivi:
• VGG-11
• VGG-11 (LRN)
• VGG-13
• VGG-16 (Conv1)
• VGG-16
• VGG-19
Fonte: “Reti convoluzionali molto profonde per il riconoscimento di immagini su larga scala”
Le configurazioni della rete neurale convoluzionale sono menzionate sopra una per colonna.
Prossimo, le reti sono indicate con i loro nomi (A – E). Tutte le configurazioni seguono il design tradizionale e differiscono solo in profondità: a partire dal 11 strati di peso nella rete A che sono 8 Conv. e 3 strati FC a 19 strati di peso nella rete E che è 16 Conv. e 3 Strati FC. La larghezza di ogni conv. layer è il numero di canali è piuttosto piccolo, che inizia da 64 nel primo strato e poi continua ad aumentare di un fattore 2 dopo ogni strato di raggruppamento massimo fino a raggiungere 512.
El número de parametriIl "parametri" sono variabili o criteri che vengono utilizzati per definire, misurare o valutare un fenomeno o un sistema. In vari campi come la statistica, Informatica e Ricerca Scientifica, I parametri sono fondamentali per stabilire norme e standard che guidano l'analisi e l'interpretazione dei dati. La loro corretta selezione e gestione sono fondamentali per ottenere risultati accurati e pertinenti in qualsiasi studio o progetto.... para cada configuración se describe a continuación. Anche se ha una grande profondità, il numero di pesi nelle reti non è maggiore del numero di pesi in una rete meno profonda con maggiore conv. larghezze dei livelli e campi ricettivi
Addestramento
• La función de pérdidaLa función de pérdida es una herramienta fundamental en el aprendizaje automático que cuantifica la discrepancia entre las predicciones del modelo y los valores reales. Su objetivo es guiar el proceso de entrenamiento al minimizar esta diferencia, permitiendo así que el modelo aprenda de manera más efectiva. Existen diferentes tipos de funciones de pérdida, como el error cuadrático medio y la entropía cruzada, cada una adecuada para distintas tareas y... es una regresión logística multinomial
• El algoritmo de aprendizaje es un descenso de gradienteGradiente es un término utilizado en diversos campos, como la matemática y la informática, para describir una variación continua de valores. In matematica, se refiere a la tasa de cambio de una función, mientras que en diseño gráfico, se aplica a la transición de colores. Este concepto es esencial para entender fenómenos como la optimización en algoritmos y la representación visual de datos, permitiendo una mejor interpretación y análisis en... Stocastico (SGD) mini-batch basato sul backspread momentum.
· La dimensione del lotto era 256
· L'impulso è stato 0,9
• regolarizzazioneLa regularización es un proceso administrativo que busca formalizar la situación de personas o entidades que operan fuera del marco legal. Este procedimiento es fundamental para garantizar derechos y deberes, así como para fomentar la inclusión social y económica. En muchos países, la regularización se aplica en contextos migratorios, laborales y fiscales, permitiendo a quienes se encuentran en situaciones irregulares acceder a beneficios y protegerse de posibles sanciones....
· Decadimento del peso L2 (il moltiplicatore di penalità era 0,0005)
· Il dropout per i primi due livelli completamente connessi è impostato su 0.5
• Tasso di apprendimento
· iniziale: 0.01
· Quando l'accuratezza del set di convalida ha smesso di migliorare, se ridurre a 10.
• Nonostante abbia un maggior numero di parametri e anche profondità rispetto ad Alexnet, La CNN ha richiesto meno volte per la convergenza della funzione di perdita a causa di
· Piccoli grani convolutivi e maggiore regolarizzazione grazie alla grande profondità.
· Pre-inizializzazione di alcuni livelli.
• Dimensione dell'immagine di allenamento
· S è il lato più piccolo dell'immagine riscalata isotopica
· Due approcci per stabilire S
▪ Correggi S, noto come allenamento su scala singola
▪ Qui S = 256 yS = 384
▪ Varia S, noto come formazione multi-scala
▪ S de [Smin, Smax] dove Smin = 256, Smax = 512
– Dopo 224 × 224224 × 224
L'immagine è stata ritagliata casualmente dall'immagine ridimensionata dell'iterazione SGD.
Caratteristiche principali
• VGG16 ha un totale di 16 strati che hanno dei pesi.
• Vengono utilizzati solo i livelli di convoluzione e raggruppamento.
• Utilizzare sempre un nucleo di 3 X 3 per convoluzione. 20
• Taglia 2 × 2 piscina massima.
• 138 milioni di parametri.
• Formazione sui dati ImageNet.
• Ha una precisione di 92,7%.
• Un'altra versione che è VGG 19, ha un totale di 19 strati con pesi.
• È un'ottima architettura di deep learning per il benchmarking su qualsiasi compito particolare.
• Le reti pre-addestrate per VGG sono open source, quindi possono essere comunemente usati per vari tipi di applicazioni.
Implementa la rete VGG
Primo, creiamo la mappatura dei filtri per ogni versione della rete VGG. Fare riferimento all'immagine di configurazione sopra per il numero di filtri. Vale a dire, creare un dizionario per la versione con una chiave denominata VGG11, VGG13, VGG16, VGG19 e creare un elenco in base al numero di filtri in ciascuna versione rispettivamente. Qui “m” Nell'elenco è nota come Operazione MaxPool.
import torch
import torch.nn as nn
VGG_types = { "VGG11 ·": [64, "m", 128, "m", 256, 256, "m", 512, 512, "m", 512, 512, "m"], "VGG13": [64, 64, "m", 128, 128, "m", 256, 256, "m", 512, 512, "m", 512, 512, "m"], "VGG16": [64,64,"m",128,128,"m",256,256,256,"m",512,512,512,"m",512,512,512,"m",], "VGG19 ·": [64,64,"m",128,128,"m",256,256,256,256,"m",512,512,512,512, "m",512,512,512,512,"m",],}
Cree una variabileIn statistica e matematica, un "variabile" è un simbolo che rappresenta un valore che può cambiare o variare. Esistono diversi tipi di variabili, e qualitativo, che descrivono caratteristiche non numeriche, e quantitativo, che rappresentano quantità numeriche. Le variabili sono fondamentali negli esperimenti e negli studi, poiché consentono l'analisi delle relazioni e dei modelli tra elementi diversi, facilitare la comprensione di fenomeni complessi.... global para mencionar la versión de la arquitectura. Quindi crea una classe chiamata VGG_net con input come in_channels e num_classes. Accetta input come un numero di canali di immagine e il numero di classi di output.
Inizializzare i livelli sequenziali, vale a dire, nella sequenza, Strato lineare–> ReLU–> Omettere.
Quindi creare una funzione denominata create_conv_layers che accetta la configurazione dell'architettura VGGnet come input, che è l'elenco che abbiamo creato sopra per le diverse versioni. Quando incontri la lettera “m” dall'elenco sopra, esegue l'operazione MaxPool2d.
VGGType = "VGG16"
classe VGGnet(nn.Modulo):
def __init__(se stesso, in_channels=3, num_classes=1000):
super(VGGnet, se stesso).__dentro__()
self.in_channels = in_channels
self.conv_layers = self.create_conv_layers(VGG_types[VGGType])
self.fcs = nn. Sequenziale( nn. Lineare(512 * 7 * 7, 4096), nn. ReLU(), nn. Abbandono degli studi(p=0,5), nn. Lineare(4096, 4096), nn. ReLU(), nn. Abbandono degli studi(p=0,5), nn. Lineare(4096, num_classi), ) def avanti(se stesso, X): x = self.conv_layers(X) x = x.reshape(x.shape[0], -1) x = self.fcs(X) return x def create_conv_layers(se stesso, architettura): livelli = [] in_channels = self.in_channels for x in architecture: se digitare(X) == int: out_channels = x layers += [ nn. Conv2d( in_channels=in_channels, out_channels=out_channels, kernel_size=(3, 3), falcata=(1, 1), imbottitura=(1, 1), ), nn. BatchNorm2d(X), nn. ReLU(), ] in_channels = x elif x == "m": livelli += [nn. MaxPool2d(kernel_size=(2, 2), falcata=(2, 2))] ritorno nn. Sequenziale(*strati)
Una volta fatto questo, escriba un pequeño código de prueba para verificar si nuestra implementación está funcionando bien.
En el siguiente código de prueba, el número de clases dadas es 500.
se __nome__ == "__principale__": dispositivo = "miracoli" se torcia.cuda.è_disponibile() altro "processore" modello = VGGnet(in_channels=3, num_classes=500).a(dispositivo) # Stampa(modello) x = torcia.randn(1, 3, 224, 224).a(dispositivo) Stampa(modello(X).forma)
L'output dovrebbe essere così:
Se vuoi vedere l'architettura di rete, puoi decommentare il stampare (modello) sopra la dichiarazione del codice. Puoi anche provare versioni diverse modificando le versioni VGG nella variabile VGGType.
Il codice completo è accessibile qui:
https://github.com/BakingBrains/Deep_Learning_models_implementation_from-scratch_using_pytorch_/blob/main/VGG.py
[1]. K. Simonyan e A. Zisserman: Reti convoluzionali molto profonde per il riconoscimento di immagini su larga scala, aprile di 2015, DOI: https://arxiv.org/pdf/1409.1556.pdf
Grazie
Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.