10

想找一个caffe python数据层例子来学习。我知道 Fast-RCNN 有一个 python 数据层,但它相当复杂,因为我不熟悉对象检测。
所以我的问题是,是否有一个 python 数据层示例可以让我学习如何定义自己的数据准备过程?
例如,如何定义一个 python 数据层比 caffe 做更多的数据增强(如平移、旋转等)"ImageDataLayer"

非常感谢你

4

2 回答 2

12

你可以使用一个"Python"层:一个用 python 实现的层来将数据输入你的网络。(请参阅此处type: "Python"添加图层的示例)。

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

有关更多信息,param_str请参阅此线程您可以在此处
找到具有预取功能的数据加载层的草图。

于 2016-01-25T15:47:22.967 回答
5

@Shai 的回答很棒。同时在caffe-master的一个PR中找到了另一个关于python数据层的详细例子。https://github.com/BVLC/caffe/pull/3471/files 我希望这个详细的示例对其他人有所帮助。

于 2016-01-26T15:38:32.037 回答