标签: pycaffe

Caffe HDF5像素分类

我正在尝试使用caffe为图像实现像素级二进制分类.对于尺寸为3x256x256的每个图像,我有一个256x256标签数组,其中每个条目都标记为0或1.此外,当我使用下面的代码读取我的HDF5文件时,

dirname = "examples/hdf5_classification/data"

f = h5py.File(os.path.join(dirname, 'train.h5'), "r")
ks = f.keys()
data = np.array(f[ks[0]])
label = np.array(f[ks[1]])
print "Data dimension from HDF5", np.shape(data)
print "Label dimension from HDF5", np.shape(label)
Run Code Online (Sandbox Code Playgroud)

我得到数据和标签维度

Data dimension from HDF5 (402, 3, 256, 256)
Label dimension from HDF5 (402, 256, 256)
Run Code Online (Sandbox Code Playgroud)

我试图将这些数据提供给给定的hdf5分类网络,在训练时,我有以下输出(使用默认求解器,但在GPU模式下).

!cd /home/unni/MTPMain/caffe-master/ && ./build/tools/caffe train -solver examples/hdf5_classification/solver.prototxt
Run Code Online (Sandbox Code Playgroud)

I1119 01:29:02.222512 11910 caffe.cpp:184] Using GPUs 0
I1119 01:29:02.509752 11910 solver.cpp:47] Initializing solver from parameters: 
train_net: "examples/hdf5_classification/train_val.prototxt"
test_net: "examples/hdf5_classification/train_val.prototxt"
test_iter: 250
test_interval: 1000
base_lr: 0.01 …
Run Code Online (Sandbox Code Playgroud)

deep-learning caffe pycaffe

5
推荐指数
1
解决办法
1608
查看次数

通过pycaffe重命名Caffe图层

有没有一种使用pycaffe接口在网络中重命名图层的简单方法?

我已经浏览了网络手术的例子,但我找不到我需要的例子.

例如,我想加载一个训练有素的Caffe模型,并将conv1图层的名称及其对应的blob更改为new-conv1.

caffe pycaffe

5
推荐指数
1
解决办法
2694
查看次数

Pycharm 无法连接到控制台进程

我最近安装了 Caffe 以及 OpenCV 和其他依赖项。Pycharm 运行良好 2 天,今天我无法在 Pycharm 中启动 Python 控制台了。我可以在终端中毫无问题地启动 python ......每次我尝试启动 Python 控制台时,“连接到控制台”都需要一段时间,然后这就是我得到的结果:

/Users/myname/anaconda/bin/python "/Applications/PyCharm CE.app/Contents/helpers/pydev/pydevconsole.py" 56229 56230

Python 2.7.10 |蟒蛇 2.2.0 (x86_64)| (默认,2015 年 5 月 28 日,17:04:42)输入“版权”、“信用”或“许可”以获取更多信息。

IPython 3.0.0——增强的交互式 Python。Anaconda 由 Continuum Analytics 提供。请查看:http : //continuum.io/thankshttps://binstar.org

无法连接到控制台进程。

进程完成,退出代码 137

python pycharm caffe pycaffe

5
推荐指数
1
解决办法
8866
查看次数

Caffe中的图像分类总是返回相同的类

我在caffe中有一个图像分类问题.我使用imagenet模型(来自caffe教程)对我创建的数据进行分类,但我总是得到相同的分类结果(同一个类,即第3类).这就是我的进展方式:

我使用caffe for windows和Python作为接口

(1)我收集数据.我的样本图像(训练和测试)是尺寸为5x5x3(RGB)uint8的图像,因此其像素值从0到255.
(2)我将它们的大小调整为imagenet所需的大小:256x256x3.因此我在matlab中使用resize函数(最近邻插值).
(3)我创建了一个LevelDB和image_mean.
(4)训练我的网络(3000次迭代).我在imagenet定义中更改的唯一参数是平均图像和LevelDB的路径.我得到的结果:

I0428 12:38:04.350100  3236 solver.cpp:245]     Train net output #0: loss = 1.91102 (* 1 = 1.91102 loss)
I0428 12:38:04.350100  3236 sgd_solver.cpp:106] Iteration 2900, lr = 0.0001
I0428 12:38:30.353361  3236 solver.cpp:229] Iteration 2920, loss = 2.18008
I0428 12:38:30.353361  3236 solver.cpp:245]     Train net output #0: loss = 2.18008 (* 1 = 2.18008 loss)
I0428 12:38:30.353361  3236 sgd_solver.cpp:106] Iteration 2920, lr = 0.0001
I0428 12:38:56.351630  3236 solver.cpp:229] Iteration 2940, loss = 1.90925
I0428 12:38:56.351630  3236 solver.cpp:245] …
Run Code Online (Sandbox Code Playgroud)

python image-processing deep-learning caffe pycaffe

5
推荐指数
1
解决办法
1807
查看次数

是否有任何使用加权损失进行像素分割/分类任务的例子?

我正在对我的数据进行FCN32语义分段.我运行算法来微调我的数据(只有一个通道的灰度图像),直到80,000次迭代; 然而,损失和准确度是波动的,输出图像完全是黑色的.甚至,在80,000次迭代后损失如此之高.我认为分类器不能很好地训练我的数据.所以,我要从头开始训练.另一方面,我的数据有不平衡的类成员.背景像素多于其他四个类.一些研究人员建议使用加权损失.有谁有想法吗?我做得对吗?如何将此加权损失添加到train_val.prototxt?

如果您了解与加权损失培训相关的任何资源/示例,我将非常感激,请在此与我分享.

再次感谢

neural-network deep-learning caffe pycaffe deeplearning4j

5
推荐指数
1
解决办法
606
查看次数

Python 导入失败并显示“dlopen:无法使用静态 TLS 加载更多对象”

我编写了一个调用的多线程模块fast_nnCython并使用以下内容编译它setup.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
import numpy

setup(
    ext_modules = cythonize([
        Extension("fast_nn", ["fast_nn.pyx"], language = 'c++', extra_compile_args = ['-O3', '-fopenmp'], extra_link_args = ['-fopenmp'], include_dirs = [numpy.get_include()])
    ])
)
Run Code Online (Sandbox Code Playgroud)

另外,我使用了caffe框架的python 绑定。

如果我单独或pycaffe单独使用我的模块,一切都很好。但是,以下组合是有问题的:

import caffe.io
import fast_nn
Run Code Online (Sandbox Code Playgroud)

在一台机器上,它不会导致任何问题。在另一台机器上,我收到以下异常:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    import fast_nn
ImportError: dlopen: cannot load any more object with static TLS
Run Code Online (Sandbox Code Playgroud)

这个线程我了解到有太多带有初始执行静态 …

python cython dlopen pycaffe

5
推荐指数
0
解决办法
2228
查看次数

Caffe中net.layers.blobs和net.params之间有什么区别?

我正在使用Python Caffe,并与net.layers [layer_index] .blobs和net.params [layer_type]混淆.如果我理解的话,net.params包含所有网络参数.以LeNet为例,net.params ['conv1']代表'conv1'层的网络系数.然后net.layer [layer_index] .blobs应该表示相同.但是,我发现它们并不完全相同.我使用以下代码来测试它:

def _differ_square_sum(self,blobs):
    import numpy as np
    gradients = np.sum(np.multiply(blobs[0].diff,blobs[0].diff)) + np.sum(np.multiply(blobs[1].diff,blobs[1].diff))
    return gradients


def _calculate_objective(self, iteration, solver):
    net = solver.net
    params = net.params
    params_value_list = list(params.keys())
    [print(k,v.data.shape) for k,v in net.blobs.items()]

    layer_num = len(net.layers)
    j = 0
    for layer_index in range(layer_num):
        if(len(net.layers[layer_index].blobs)>0):
            cur_gradient = self._differ_square_sum(net.layers[layer_index].blobs)
            key = params_value_list[j]
            cur_gradient2 = self._differ_square_sum(params[key])
            print([cur_gradient,cur_gradient2])
            assert(cur_gradient == cur_gradient2)
Run Code Online (Sandbox Code Playgroud)

关于他们之间的区别的任何想法?谢谢.

python neural-network deep-learning caffe pycaffe

5
推荐指数
1
解决办法
820
查看次数

使用预训练VGG-16模型的Caffe形状不匹配误差

我正在使用PyCaffe来实现受VGG 16层网络启发的神经网络.我想使用GitHub页面提供的预训练模型.通常,这通过匹配图层名称来实现.

对于我的"fc6"图层,我在train.prototxt文件中有以下定义:

layer {
  name: "fc6"
  type: "InnerProduct"
  bottom: "pool5"
  top: "fc6"
  inner_product_param {
    num_output: 4096
  }
}
Run Code Online (Sandbox Code Playgroud)

以下是VGG-16部署体系结构的prototxt文件.请注意,"fc6"他们的原型文本与我的相同(除了学习率,但这是无关紧要的).值得注意的是,我的模型中的输入大小也相同:3通道224x224px图像.

我一直非常密切地关注本教程,并且给我一个问题的代码块如下:

solver = caffe.SGDSolver(osp.join(model_root, 'solver.prototxt'))
solver.net.copy_from(model_root + 'VGG_ILSVRC_16_layers.caffemodel')
solver.test_nets[0].share_with(solver.net)
solver.step(1)
Run Code Online (Sandbox Code Playgroud)

第一行加载我的求解器原型,然后第二行从预先训练的模型中复制权重(VGG_ILSVRC_16_layers.caffemodel).解算器运行时,我收到此错误:

Cannot copy param 0 weights from layer 'fc6'; shape mismatch.  Source param 
shape is 1 1 4096 25088 (102760448); target param shape is 4096 32768 (134217728). 
To learn this layer's parameters from scratch rather than copying from a …
Run Code Online (Sandbox Code Playgroud)

python deep-learning caffe pycaffe vgg-net

4
推荐指数
1
解决办法
4181
查看次数

caffe完全卷积cnn - 如何使用裁剪参数

我正在尝试为我的问题训练一个完全卷积网络.我正在使用https://github.com/shelhamer/fcn.berkeleyvision.org的实现.我有不同的图像大小.

  1. 我不知道如何在'Crop'图层中设置'Offset'参数.
  2. 'Offset'参数的默认值是什么?
  3. 如何使用此参数裁剪中心周围的图像?

caffe matcaffe pycaffe

4
推荐指数
1
解决办法
4254
查看次数

Caffe:train_test.prototxt和deploy.prototxt有什么区别?

在GoogleNet等相关模型中 https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet

我们可以看到两个描述网络的.prototxt文件,它们之间有什么区别

deploy.txttrain_test.prototxt

我的关键问题是,在python界面中,为什么我只能使用前者?也就是说:

model_def = caffe_root + 'models/bvlc_googlenet/deploy.prototxt'

model_weights = caffe_root + 'models/bvlc_googlenet/bvlc_googlenet.caffemodel'

net = caffe.Net(model_def,model_weights,caffe.TEST)
Run Code Online (Sandbox Code Playgroud)

此代码运行正确,同时:

model_def = caffe_root + 'models/bvlc_googlenet/train_val.prototxt'

model_weights = caffe_root + 'models/bvlc_googlenet/bvlc_googlenet.caffemodel'

net = caffe.Net(model_def,model_weights,caffe.TEST)
Run Code Online (Sandbox Code Playgroud)

这不.它给出了错误信息:

layer {
  name: "inception_4e/relu_5x5_reduce"
  type: "ReLU"
  bottom: "inception_4e/5x5_reduce"
  top: "inception_4e/5x5_reduce"
}
layer {
I0805 10:15:13.698256 30930 layer_factory.hpp:77] Creating layer data
I0805 10:15:13.698444 30930 net.cpp:100] Creating Layer data
I0805 10:15:13.698465 30930 net.cpp:408] data -> data
I0805 10:15:13.698514 30930 net.cpp:408] data -> label
F0805 10:15:13.699956 …
Run Code Online (Sandbox Code Playgroud)

caffe pycaffe

4
推荐指数
1
解决办法
2814
查看次数