【问题标题】:How to read hdf5 with python layer in caffe and do data augmentation?如何在 caffe 中使用 python 层读取 hdf5 并进行数据增强?
【发布时间】:2017-07-03 17:16:18
【问题描述】:

我想从hdf5 文件中读取数据并进行数据扩充。

我可以在transform_param 中使用镜像和裁剪进行数据增强。

但是,我不能在 HDF5Data 层中包含 transformation_param - caffe 不支持这一点。

我认为编写一个 python 层来解决它可能是一个好方法。从 hdf5 文件中读取数据,同时进行数据扩充。

我已经阅读了一些相关的答案,例如“caffe data layer example step by step”和“What is a Python layer in caffe?

我还是不知道应该把写好的文件"*.py"放在哪里?以及如何编写代码来做数据增强?

【问题讨论】:

    标签: python crop caffe hdf5 mirror


    【解决方案1】:

    你的python层*.py应该在你的$PYTHONPATH中。

    考虑$CAFFE_ROOT/examples/pycaffe/layers中的python层示例 ,用于自定义python损失和数据层。

    特别考虑$CAFFE_ROOT/examples/pycaffe/layers/pascal_multilabel_datalayers.py

    在下一批加载之前,您可以即时进行数据扩充。

    然后在*.prototxt

    layer {
      name: "data"
      type: "Python"
      top: "data"
      top: "label"
      python_param {
        module: "pascalcontext_layers"
        layer: "PASCALContextSegDataLayer"
        param_str: "{\'context_dir\': \'../../data/pascal-context\', \'seed\': 1337, \'split\': \'train\', \'voc_dir\': \'../../data/pascal\'}"
      }
    }
    

    module 是文件名,layer 是类名。

    【讨论】:

    • 感谢您的回答!我试过这个,发现“检查失败:registry.count(type) == 1 (0 vs. 1) Unknown layer type: Python”。但是,我 'list(caffe.layer_type_list())' 并在此列表中找到 'python'。为什么?
    • 你必须用WITH_PYTHON_LAYER := 1编译你的caffe。详情见stackoverflow.com/questions/41344168/…
    • 我已经编译好了。当我运行list(caffe.layer_type_list()) 时,我找到了“python”。也许 caffe 就是找不到?
    猜你喜欢
    • 2016-04-21
    • 2018-04-08
    • 1970-01-01
    • 2018-02-27
    • 2017-11-26
    • 2016-01-27
    • 2019-11-07
    • 2016-07-29
    • 2019-06-24
    相关资源
    最近更新 更多