【问题标题】:How to change the Data Layer for both image and ground truth images while doing augmentation for segmentation?如何在进行分割增强的同时更改图像和地面实况图像的数据层?
【发布时间】:2018-10-17 20:37:24
【问题描述】:

我正在使用caffe 进行分割任务。我写的Python Layer 引发了一个错误。层定义是这样的:

layer {
    name: 'myaug'
    type: 'Python'
    bottom: 'data'
    bottom: 'label'
    top: 'data'
    top: 'label'
    python_param {
        module: 'augLayer'
        layer: 'CompactData'
    }
}

这是网络图: net drawing

错误似乎与numpy有关:

File "/home/usersc/caffe/python/caffe/pycaffe.py", line 11, in <module>
    import numpy as np
File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/site-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/site-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/site-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/site-packages/numpy/core/__init__.py", line 22, in <module>
    from . import _internal  # for freeze programs
  File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/site-packages/numpy/core/_internal.py", line 14, in <module>
    import ctypes
  File "/home/usersc/anaconda2/envs/mycaffe/lib/python2.7/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: /home/usersc/anaconda2/envs/mycaffe/lib/python2.7/lib-dynload/_ctypes.so: undefined symbol: _PySlice_Unpack

我不确定,我在想我应该添加一个MemoryData 层来为我保留在this link 中的增强数据,因为数据和标签图像都应该同步发送。是不是应该清除Data Layer的内存?

【问题讨论】:

    标签: neural-network deep-learning caffe image-segmentation pycaffe


    【解决方案1】:

    您在导入 numpy 时遇到问题:这与您的代码/层无关,您的代码甚至还没有运行。
    确保 numpy 已正确安装在您的机器上,并且您的 $PYTHONPATH 环境指向正确的位置。

    关于内存:您定义层的方式,它执行增强"in-place",也就是说,它更改datalabel blob,而不是复制增强的输入。确保您可以接受这种行为。此外,我认为您不需要"MemoryData" 层来执行增强,"Python" 层就足够了。

    【讨论】:

    • 谢谢,我试过单独导入numpy,在环境中运行良好。我不想就地,但问题是在正常流程(没有增强)中,其他一些层正在使用datalabel blob(我不知道如何处理这个)。你有什么建议?我应该如何将增强数据发送到网络中?
    • @sc241 您的某些层需要原始“数据”,而其他层需要增强的“数据”?听起来不像是一个稳健的计划……
    • 实际上不,增强数据和原始数据都应该进入网络中相同的层路径。这就是为什么我在考虑是否使用MemoryData 来保留增强的一个,然后将其复制(发送)到datalabel 层(作为MemoryData 层的顶部)或者我的想法不正确?
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2016-11-04
    • 1970-01-01
    • 2019-11-29
    • 2021-11-09
    相关资源
    最近更新 更多