2016-01-25 13 views
11

Ich möchte eine Caffe Python Data Layer Beispiel zu lernen. Ich weiß, dass Fast-RCNN eine Python-Datenschicht hat, aber es ist ziemlich kompliziert, da ich mit der Objekterkennung nicht vertraut bin.
Also meine Frage ist, gibt es eine Python-Datenschicht Beispiel wo ich lernen kann, wie ich meine eigene Datenvorbereitungsprozedur definieren?
Zum Beispiel, wie Sie eine Python-Datenschicht definieren tun viel mehr Datenerweiterung (wie Übersetzung, Rotation usw.) als Caffe "ImageDataLayer".coffe Datenschicht Beispiel Schritt für Schritt

Vielen Dank

Antwort

13

Sie eine "Python" Schicht verwenden können: eine Schicht in Python implementiert, um Daten in dein Netz einzuspeisen. (Siehe ein Beispiel zum Hinzufügen einer type: "Python" Schicht here).

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 

Weitere Informationen zu param_str siehe this thread.
Sie können eine Skizze einer Datenladeebene mit Prefetch here finden.

+0

Vielen Dank für Ihre Erklärung, ich werde versuchen, eine zu implementieren und meinen Code hier zu posten. o (^ ▽ ^) o –

+1

Tatsächlich finde ich eine PR auf der Caffe-Website. https://github.com/BVLC/caffe/pull/3471/files –

+0

Ist es möglich, Multithreading hier zu verwenden, um Daten schneller zu laden? – curio1729

4

@ Shais Antwort ist großartig. Zur gleichen Zeit finde ich ein weiteres detailliertes Beispiel über Python Data Layer in einem PR von Caffe-Master. https://github.com/BVLC/caffe/pull/3471/files Ich hoffe, dieses detaillierte Beispiel ist hilfreich für alle anderen.

+0

Vielen Dank, wissen Sie, wie wir die Prototxt-Datei konfigurieren sollten? eigentlich versuche ich genau das zu tun, was du verlangtest, aber ich bin verwirrt. selbst nachdem ich den Code angeschaut habe. mein Problem ist zuerst, wie wir die Bildquelle im Prototxt definieren und dann, wie wir verschiedene Parameter daraus lesen. Ich würde mich freuen, wenn Sie Ihre Implementierung mit uns teilen könnten. Es hilft uns sehr. – Breeze

+0

Fertig :) Vielen Dank für Ihren Link. Ich folgte ein paar Shais Antworten und konnte dank dem lieben Gott, alles rennen :) – Breeze

Verwandte Themen