2016-05-07 11 views
11

Ho 3 cartelle con immagini a colori. Il nome della cartella è un'etichetta per le immagini all'interno.Keras caricamento immagini a colori

cls1 
    |____img_0.png 
    |____ ... 
    |____img_n.png 
cls2 
    |____img_0.png 
    |____ ... 
    |____img_n.png 
cls3 
    |____img_0.png 
    |____ ... 
    |____img_n.png 

Vorrei usare biblioteca Keras per creare rete neurale convoluzionale per la classificazione, ma non riesco a trovare, come creare set di dati da immagini a colori. Potete aiutarmi?

risposta

11

perche questo gist of pre-trained VGG-16 model with example usage che trovo illustrativo:

In sintesi:

  1. Carica le tue immagini con OpenCV o scikit-immagine, ecc (L58)
  2. Ridimensionare e/o ritagliare la tua immagini per adattarsi alla dimensione di input (224 * 224 per VGG-16) (L58)
  3. Calcolare e sottrarre per ogni immagine il valore medio (L59 ~ L61)
  4. Scambiare la dimensione del colore prima altezza e larghezza (L62)
  5. Se si utilizza scikit-immagine, è necessario scambiare i canali di colore 3 perché caricare immagini OpenCV come BGR canali ma scikit-immagine caricarlo come RGB canali.
  6. aggiungere la dimensione dimensione del lotto (L63)
  7. Shuffle, partizione e concatenare (insieme dimensione 0) per formare i dati di allenamento X_train, dati di test X_test ecc insieme con la verità a terra Y_train, Y_test ecc
  8. Se il tuo set di dati è troppo grande per adattarsi alla memoria, utilizzare un generatore e la funzione fit_generator invece di eseguire l'allenamento. (Keras ha anche evaluate_generator e predict_generator)
  9. Ora sei pronto per l'allenamento.
+0

Grazie! Stavo cercando questo tipo di breve panoramica. buona risposta. –

+1

Il terzo passaggio rimuoverà la differenza di colore delle immagini. Questo funziona nell'esempio presentato perché tenta di classificare un gatto, che continuerà ad essere un gatto indipendentemente dai cambiamenti di colore nell'immagine. Se ritieni che questa informazione sia importante per te (ad esempio decidi tra giorno/notte, dentro/fuori, classifichi un dipinto dal suo autore), probabilmente dovresti tenerlo. La standardizzazione "globale" potrebbe essere la soluzione in questo caso (ad esempio, '(image - dataset_mean)/dataset_std'). – ldavid