Quiero encontrar un ejemplo de capa de datos de caffe python para aprender. Sé que Fast-RCNN tiene una capa de datos de Python, pero es bastante complicado ya que no estoy familiarizado con la detección de objetos.
Entonces, mi pregunta es, ¿hay un ejemplo de capa de datos de Python donde pueda aprender a definir mi propio procedimiento de preparación de datos?
Por ejemplo, cómo definir una capa de datos de Python hacer mucho más aumento de datos (como traslación, rotación, etc.) que caffe "ImageDataLayer".

Muchas gracias

10
kli_nlpr 25 ene. 2016 a las 18:20

2 respuestas

La mejor respuesta

Puede usar una capa "Python": una capa implementada en Python para alimentar datos a su red. (Vea un ejemplo para agregar una type: "Python" capa aquí).

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

Para obtener más información sobre param_str, consulte este hilo.
Puede encontrar un boceto de una capa de carga de datos con búsqueda previa aquí.

12
Community 20 jun. 2020 a las 09:12

La respuesta de @ Shai es genial. Al mismo tiempo, encuentro otro ejemplo detallado sobre la capa de datos de Python en un PR de caffe-master. https://github.com/BVLC/caffe/pull/3471/files Espero que este ejemplo detallado sea útil para cualquier otra persona.

5
kli_nlpr 26 ene. 2016 a las 15:38