2016-01-25 16 views
11

Desidero trovare un esempio di livello dati caffe python da imparare. So che Fast-RCNN ha un livello dati Python, ma è piuttosto complicato dal momento che I non ha familiarità con il rilevamento degli oggetti.
Quindi la mia domanda è, esiste un esempio di livello dati Python in cui posso imparare come definire la mia procedura di preparazione dei dati?
Ad esempio, come si fa a definire un livello di dati Python fare molto più incremento di dati (come traslazione, rotazione ecc.) Rispetto a caffe "ImageDataLayer".esempio di livello dati caffe passo dopo passo

La ringrazio molto

risposta

13

È possibile utilizzare uno strato "Python": uno strato realizzato in Python per alimentare i dati nella vostra rete. (Vedere un esempio per aggiungere un livellohere).

import sys, os 
sys.path.insert(0, os.environ['CAFFE_ROOT']+'/python') 
import caffe 
class myInputLayer(caffe.Layer): 
    def setup(self,bottom,top): 
    # read parameters from `self.param_str` 
    ... 
    def reshape(self,bottom,top): 
    # no "bottom"s for input layer 
    if len(bottom)>0: 
     raise Exception('cannot have bottoms for input layer') 
    # make sure you have the right number of "top"s 
    if len(top)!= ... 
     raise ... 
    top[0].reshape(...) # reshape the outputs to the proper sizes 

    def forward(self,bottom,top): 
    # do your magic here... feed **one** batch to `top` 
    top[0].data[...] = one_batch_of_data 


    def backward(self, top, propagate_down, bottom): 
    # no back-prop for input layers 
    pass 

Per ulteriori informazioni su param_str vedere this thread.
È possibile trovare uno schizzo di un livello di caricamento dati con pre-fetch here.

+0

Grazie mille per la spiegazione, cercherò di implementarne uno e di pubblicare il mio codice qui. o (^ ▽ ^) o –

+1

In effetti trovo un PR al sito web di caffe. https://github.com/BVLC/caffe/pull/3471/files –

+0

È possibile utilizzare il multithreading qui, per caricare i dati più rapidamente? – curio1729

4

@ La risposta di Shai è ottima. Allo stesso tempo, trovo un altro esempio dettagliato del livello dati python in un PR di caffe-master. https://github.com/BVLC/caffe/pull/3471/files Spero che questo esempio dettagliato sia utile per chiunque altro.

+0

Grazie mille, sai come dovremmo configurare il file prototxt? in realtà sto cercando di fare esattamente quello che hai chiesto, ma sono confuso. anche dopo aver visto il codice. il mio problema è prima come definiamo la sorgente dell'immagine nel prototipo e poi come leggiamo diversi parametri da essa. Ti sarei grato se potessi condividere la tua implementazione con noi. ci aiuta molto – Breeze

+0

Fatto :) Grazie mille per il tuo link. Ho seguito un paio di risposte di Shais e potrei grazie a Dio mio, ottenere tutto in esecuzione :) – Breeze

Problemi correlati