Quante immagini per classe sono sufficienti per addestrare una CNN


12

Sto iniziando un progetto in cui il compito è identificare i tipi di sneaker dalle immagini. Attualmente sto leggendo le implementazioni di TensorFlow e Torch . La mia domanda è: quante immagini per classe sono necessarie per raggiungere una prestazione di classificazione ragionevole?


Definire "ragionevole"? Il tuo obiettivo è raggiungere una precisione che potrebbe essere utilizzata in un sistema di produzione? Il tuo obiettivo è un'altra cosa? Quante lezioni ci sono? Ci sono alcune variazioni nell'allenamento pre-allenamento e semi-supervisionato che potrebbero farti risparmiare sforzo, quindi potresti chiarire se la tua preoccupazione è nello sforzo di etichettare le immagini o semplicemente di procurarle. Infine, quanto sono pulite e semplici le tue immagini target? Le immagini in cui l'illuminazione e la posa sono fisse sarà più facile da addestrare rispetto alle fotografie del "mondo reale" con le scarpe da ginnastica indossate.
Neil Slater

Sì, questo verrà utilizzato in produzione. Al momento non so quante lezioni ci saranno poiché non so quanti diversi tipi di sneaker ci sono nella libreria di immagini. La mia ipotesi migliore sarebbe dell'ordine di 50-100, ma più la descrizione della sneaker è scorretta, meno le classi (ad esempio air-jordan vs. air-jordan-ultrafit). Sfortunatamente, la libreria di immagini è un mix di scarpe da ginnastica indossate e scarpe da ginnastica poste come oggetti fissi con uno sfondo bianco.
Feynman27,

Risposte:


2

Da Quanti esempi di allenamento sono troppo pochi quando si allena una rete neurale? su CV:

Dipende molto dal set di dati e dall'architettura di rete. Una regola empirica che ho letto (2) era di alcune migliaia di campioni per classe affinché la rete neurale potesse iniziare a funzionare molto bene. In pratica, le persone cercano di vedere.


Un buon modo per valutare approssimativamente in che misura potrebbe essere utile avere più campioni di allenamento è tracciare le prestazioni della rete neurale in base alle dimensioni del set di addestramento, ad esempio da (1):

inserisci qui la descrizione dell'immagine



0

L'approccio migliore è quello di raccogliere quanti più dati possibile comodamente. Quindi iniziare con il progetto e creare un modello di dati.

Ora puoi valutare il tuo modello per vedere se ha un bias elevato o una varianza elevata.

Alta varianza : in questa situazione vedrai che l'errore di convalida incrociata è maggiore dell'errore di allenamento dopo la convergenza. Se si traccia lo stesso rispetto alla dimensione dei dati di allenamento, c'è un divario significativo.

Distorsione elevata : in questa situazione, l'errore di convalida incrociata è leggermente superiore all'errore di allenamento, che di per sé è elevato quando viene tracciato rispetto alla dimensione dei dati di allenamento. Intendo, è possibile inserire sottoinsiemi di dati di allenamento che si hanno e continuare ad aumentare la dimensione del sottoinsieme ed errori di trama.

Se vedi che il tuo modello ha una varianza elevata (sovraprezzo), l'aggiunta di più dati di solito aiuta in contrasto con il modello di polarizzazione elevata (sottoadattamento) in cui l'aggiunta di nuovi dati di allenamento non aiuta.

Inoltre per classe devi cercare di ottenere lo stesso numero di immagini, altrimenti i set di dati possono essere distorti (più di un tipo).

Inoltre, ti suggerisco di utilizzare TensorFlow , leggi di più sul classificatore di immagini INCEPTION di GOOGLE . È già un classificatore qualificato sul database di immagini di Google e puoi usarlo per le tue immagini, in questo modo i requisiti per il numero di immagini diminuiscono drasticamente.


Ho già eseguito un test rapido utilizzando Inception-v3 di TensorFlow. Il meglio che potrebbe fare è darmi una classificazione molto precisa, come "scarpa da corsa", ma ho bisogno di qualcosa di un po 'più granulare, come "air-jordan-ultrafit". Questo è il motivo per cui sto costruendo un nuovo set di allenamento da utilizzare con Inception.
Feynman27

Questa è una strana definizione di "un po 'più granulare".
Jivan il
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.