精华内容
参与话题
问答
  • pycaffe

    2016-12-10 21:28:29
    Pycaffe笔记ImportError: No module named pydot conda install protobuf=2.6.1 ImportError: No module named pydot 解决办法 conda install pydot pydot.InvocationException: GraphViz’s executables not ...

    Pycaffe笔记

    ImportError: No module named pydot

    conda install protobuf=2.6.1

    ImportError: No module named pydot
    解决办法

    conda install pydot

    pydot.InvocationException: GraphViz’s executables not found

    sudo apt-get install graphviz

    展开全文
  • Trouble building pycaffe

    2020-11-27 20:52:06
    m having trouble building pycaffe, I'm not sure if it's some problem with my local setup. It seems to me there're two issues: 1. The 3rdparty\include\boost\python subdir is missing, and ...
  • pycaffe compile error

    2020-11-28 09:26:10
    but at the last one - pycaffe, i got link errors as below: 2>_caffe.obj : error LNK2001: unresolved external symbol __imp_PyFloat_FromDouble 2>_caffe.obj : error LNK2001: unresolved external ...
  • When I tried to use pycaffe to inference, it crashed. <p>The code: <pre><code> import caffe model = 'lenet_infer.prototxt' weights = 'lenet_iter_4000.caffemodel' caffe.set_...
  • <code>make pycaffe</code></p> <p>there is no <code>_caffe.so</code> in <code>caffe-dilation/python/caffe</code></p> <p>and I try the <code>predict.py there is an error <code>ImportError: libcaffe.so....
  • <div><p>I don'...Does anyone have the code on python for evaluation (e.g., eval_all.m in matlab) using pycaffe? Many thanks.</p><p>该提问来源于开源项目:hszhao/PSPNet</p></div>
  • pycaffe使用

    2017-12-13 14:42:59
    API 接口首先import pycaffe1前向后向操作,处理IO,可视化网络,模型求解,所有的模型数据和参数,这些内容都已经有了接口,因此可以读写.caffe.Net is the central interface for loading, configuring, and running ...

    API 接口

    首先

    import pycaffe
    • 1

    前向后向操作,处理IO,可视化网络,模型求解,所有的模型数据和参数,这些内容都已经有了接口,因此可以读写.

    caffe.Net is the central interface for loading, configuring, and running models.
    caffe.Classifier and caffe.Detector provide convenience interfaces for common tasks.
    caffe.SGDSolver exposes the solving interface.
    caffe.io handles input / output with preprocessing and protocol buffers.
    caffe.draw visualizes network architectures.
    Caffe blobs are exposed as numpy ndarrays for ease-of-use and efficiency.
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    文档的介绍还比较少,因此可以仔细阅读代码

    python文件夹下有几个朋友文件和几个cpp文件,

    drwxrwxr-x 5 bobin bobin    4096  517 15:41 ./
    drwxrwxr-x 3 bobin bobin    4096  417  2016 ../
    -rw-rw-r-- 1 bobin bobin   14208  417  2016 _caffe.cpp
    -rwxrwxr-x 1 bobin bobin 1485231  517 15:41 _caffe.so*
    -rw-rw-r-- 1 bobin bobin    3501  417  2016 classifier.py
    -rw-rw-r-- 1 bobin bobin    6721  417  2016 coord_map.py
    -rw-rw-r-- 1 bobin bobin    8562  417  2016 detector.py
    -rw-rw-r-- 1 bobin bobin    7604  417  2016 draw.py
    drwxrwxr-x 2 bobin bobin    4096  417  2016 imagenet/
    -rw-rw-r-- 1 bobin bobin     417  417  2016 __init__.py
    -rw-rw-r-- 1 bobin bobin   12695  417  2016 io.py
    -rw-rw-r-- 1 bobin bobin    8025  417  2016 net_spec.py
    drwxrwxr-x 2 bobin bobin    4096  517 15:41 proto/
    -rw-rw-r-- 1 bobin bobin   11001  417  2016 pycaffe.py
    drwxrwxr-x 2 bobin bobin    4096  417  2016 test/
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    _caffe.cpp中的定义了几个类和函数,使用Python包装起来,包括set_mode_cpu,set_mode_gpu, 
    类Net,函数_forward,_backward,reshape 
    类Blob,类Layer类Sovler和SGDSolver等. 
    Classifier.py定义了类Classifier,包括函数predict和 
    io.py定义了load_image,resize_image等函数 
    draw.py定义了draw_net的函数,用于可视化使用的网络

    caffe/python/caffe/_caffe.cpp:
    • 1

    Exports Blob, Layer, Net, and Solver classes

    caffe/python/caffe/pycaffe.py
    • 1

    Adds extra methods to Net class

    构造网络

    from caffe import layers as L
    from caffe import params as P
    
    def lenet(lmdb, batch_size):
        # our version of LeNet: a series of linear and simple nonlinear transformations
        n = caffe.NetSpec()
        n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb,
                                 transform_param=dict(scale=1./255), ntop=2)
        n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=20, weight_filler=dict(type='xavier'))
        n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)
        n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=50, weight_filler=dict(type='xavier'))
        n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)
        n.ip1 = L.InnerProduct(n.pool2, num_output=500, weight_filler=dict(type='xavier'))
        n.relu1 = L.ReLU(n.ip1, in_place=True)
        n.ip2 = L.InnerProduct(n.relu1, num_output=10, weight_filler=dict(type='xavier'))
        n.loss = L.SoftmaxWithLoss(n.ip2, n.label)
        return n.to_proto()
    
    with open('examples/mnist/lenet_auto_train.prototxt', 'w') as f:
        f.write(str(lenet('examples/mnist/mnist_train_lmdb', 64)))
    
    with open('examples/mnist/lenet_auto_test.prototxt', 'w') as f:
        f.write(str(lenet('examples/mnist/mnist_test_lmdb', 100)))
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    这里是首先用python定义网络结构,然后输出到prototxt文件,这样可以用来训练和测试.

    训练网络

    solver = caffe.get_solver('models/bvlc_reference_caffenet/solver.prototxt')
    solver.net.forward()  # train net
    solver.test_nets[0].forward()  # test net (there can be more than one)
    solver.net.backward()
    solver.solve()
    
    
    accuracy = 0
    batch_size = solver.test_nets[0].blobs['data'].num
    test_iters = int(len(Xt) / batch_size)
    for i in range(test_iters):
        solver.test_nets[0].forward()
        accuracy += solver.test_nets[0].blobs['accuracy'].data
    accuracy /= test_iters
    
    print("Accuracy: {:.3f}".format(accuracy))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    这里首先加载网络参数和训练数据,训练数据的源在网络的底层指定.

    应用网络

    net = caffe.Net('conv.prototxt', caffe.TEST)
    #load the model
    net = caffe.Net('models/bvlc_reference_caffenet/deploy.prototxt',
                    'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel',
                    caffe.TEST)
    
    # load input and configure preprocessing
    transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
    transformer.set_mean('data', np.load('python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1))
    transformer.set_transpose('data', (2,0,1))
    transformer.set_channel_swap('data', (2,1,0))
    transformer.set_raw_scale('data', 255.0)
    
    #note we can change the batch size on-the-fly
    #since we classify only one image, we change batch size from 10 to 1
    net.blobs['data'].reshape(1,3,227,227)
    
    #load the image in the data layer
    im = caffe.io.load_image('examples/images/cat.jpg')
    net.blobs['data'].data[...] = transformer.preprocess('data', im)
    
    #compute
    out = net.forward()
    
    # other possibility : out = net.forward_all(data=np.asarray([transformer.preprocess('data', im)]))
    
    #predicted predicted class
    print out['prob'].argmax()
    
    #print predicted labels
    labels = np.loadtxt("data/ilsvrc12/synset_words.txt", str, delimiter='\t')
    top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1]
    print labels[top_k]
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    这里使用了Net,也可以使用Classifier,那么可以使用函数predict,net对应的forward函数.

    可视化网络

    python python/draw_net.py models/bvlc_reference_caffenet/deploy.prototxt caffenet.png
    open caffenet.png
    • 1
    • 2

    refer

    1. https://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html
    2. http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe/
    3. https://nbviewer.jupyter.org/github/joyofdata/joyofdata-articles/blob/master/deeplearning-with-caffe/Neural-Networks-with-Caffe-on-the-GPU.ipynb
    展开全文
  • pycaffe_tutorial, pycaffe教程,神经网络框架的python API,Caffe Pycaffe教程本教程假定你已经知道如何使用 Caffe 。 如果没有,请参考以下官方caffe教程:...
  • pycaffe等出现 錯誤 LNK1104 無法開啟檔案 'python27.lib' caffe E:\caffe\newcaffe\caffe-windows-ms\windows\caffe\LINK 1 请问是一定需要python2.7么?</p><p>该提问来源于开源项目:...
  • caffe/pycaffe.py", line 49, in from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ ImportError: libmlsl.so.1: cannot open shared object file: No such file or directory <p>Then I...
  • The dependency target "pycaffe" of target "pytest" does not exist. ``` 但此错误不影响后续make 和 make install 以及 make runtest都可以通过 ![图片说明]...
  • pycaffe的使用

    2017-12-13 13:42:30
    caffe的官方完美的支持python语言的兼容,提供了pycaffe的接口。用起来很方便,首先来看一下最常用到的:caffe的一个程序跑完之后会在snapshot所指定的目录下产生一个后缀名为caffemodel的文件,这里存放的就是我们...

    caffe的官方完美的支持python语言的兼容,提供了pycaffe的接口。用起来很方便,首先来看一下最常用到的:caffe的一个程序跑完之后会在snapshot所指定的目录下产生一个后缀名为caffemodel的文件,这里存放的就是我们在训练网络的时候得到的每层的参数信息,具体访问由net.params['layerName'][0].data访问权重参数(num_filter,channel,weight,high),net.params['layerName'][1].data访问biase,格式是(biase,)。如下图所示:这里的net.params使用的是字典格式


         当然还有保存网络结构的字典类型net.blobs['layerName'].data。这里最常用的也就是net.blobs['data']相关的使用,例如得到输入图片的大小net.blobs['data'].data.shape。改变输入图片的大小net.blobs['data'].reshape(0,3,227,227),把图片fed into网络。net.blob['data'].data[...]=inputImage,注意,这里最后一个data是一个数组,要是只有一张图片就这样net.blob['data'].data[0]=inputImage。如下图所示:


        下面用python实现一个使用自己的图片的例子:

    [python] view plain copy
    1. import numpy as np  
    2. import sys,os  
    3. # 设置当前的工作环境在caffe下  
    4. caffe_root = '/home/xxx/caffe/'   
    5. # 我们也把caffe/python也添加到当前环境  
    6. sys.path.insert(0, caffe_root + 'python')  
    7. import caffe  
    8. os.chdir(caffe_root)#更换工作目录  
    9.   
    10. # 设置网络结构  
    11. net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'  
    12. # 添加训练之后的参数  
    13. caffe_model=caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'  
    14. # 均值文件  
    15. mean_file=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy'  
    16.   
    17. # 这里对任何一个程序都是通用的,就是处理图片  
    18. # 把上面添加的两个变量都作为参数构造一个Net  
    19. net = caffe.Net(net_file,caffe_model,caffe.TEST)  
    20. # 得到data的形状,这里的图片是默认matplotlib底层加载的  
    21. transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})  
    22. # matplotlib加载的image是像素[0-1],图片的数据格式[weight,high,channels],RGB  
    23. # caffe加载的图片需要的是[0-255]像素,数据格式[channels,weight,high],BGR,那么就需要转换  
    24.   
    25. # channel 放到前面  
    26. transformer.set_transpose('data', (2,0,1))  
    27. transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))  
    28. # 图片像素放大到[0-255]  
    29. transformer.set_raw_scale('data'255)   
    30. # RGB-->BGR 转换  
    31. transformer.set_channel_swap('data', (2,1,0))  
    32.   
    33. # 这里才是加载图片  
    34. im=caffe.io.load_image(caffe_root+'examples/images/cat.jpg')  
    35. # 用上面的transformer.preprocess来处理刚刚加载图片  
    36. net.blobs['data'].data[...] = transformer.preprocess('data',im)  
    37. #注意,网络开始向前传播啦  
    38. out = net.forward()  
    39. # 最终的结果: 当前这个图片的属于哪个物体的概率(列表表示)  
    40. output_prob = output['prob'][0]  
    41. # 找出最大的那个概率  
    42. print 'predicted class is:', output_prob.argmax()  
    43.   
    44. # 也可以找出前五名的概率  
    45. top_inds = output_prob.argsort()[::-1][:5]    
    46. print 'probabilities and labels:'  
    47. zip(output_prob[top_inds], labels[top_inds])  
    48.   
    49. # 最后加载数据集进行验证  
    50. imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'  
    51. labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')  
    52.   
    53. top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1]  
    54. for i in np.arange(top_k.size):  
    55.     print top_k[i], labels[top_k[i]]  

    [python] view plain copy
    1. import os  
    2. import numpy as np   
    3. import os  
    4. import matplotlib.pyplot as plt   
    5. import matplotlib.patches as  mpatches  
    6. %matplotlib inline  
    7.   
    8. # 设置默认的属性:用于在ipython中显示图片  
    9. plt.rcParams['figure.figsize'] = (1010)          
    10. plt.rcParams['image.interpolation'] = 'nearest'    
    11. plt.rcParams['image.cmap'] = 'gray'    
    12. from math import pow  
    13. from skimage import transform as tf   
    14.   
    15. caffe_root='/opt/modules/caffe-master/'  
    16. sys.insert.path(0,caffe_root+'python')  
    17.   
    18. caffe_modelcaffe=caffe_root+''  
    19. caffe_deploy=caffe_root+''  
    20.   
    21. caffe.set_mode_cpu()  
    22. net=caffe.Net(caffe_deploy,caffe_modelcaffe,caffe.TEST)  
    23.   
    24.   
    25. transform=caffe.io.Transformer({'data':net.blobs['data'].data.shape})  
    26. transform.set_transpose('data',(2,0,1))  
    27. transform.set_raw_scale('data',255)  
    28. transform.set_channel_swap('data',(2,1,0))  
    29.   
    30. #把加载到的图片缩放到固定的大小  
    31. net.blobs['data'].reshape(1,2,227,227)  
    32.   
    33. image=caffe.io.load_image('/opt/data/person/1.jpg')  
    34. transformed_image=transform.preprocess('data',image)  
    35. plt.inshow(image)  
    36.   
    37. # 把警告过transform.preprocess处理过的图片加载到内存  
    38. net.blobs['data'].data[...]=transformed_image  
    39.   
    40. output=net.forward()  
    41.   
    42. #因为这里仅仅测试了一张图片  
    43. #output_pro的shape中有对于1000个object相似的概率  
    44. output_pro=output['prob'][0]  
    45.   
    46. #从候选的区域中找出最有可能的那个object的索引  
    47. output_pro_max_index=output_pro.argmax()  
    48.   
    49. labels_file = caffe_root + '.../synset_words.txt'  
    50. if not os.path.exists(labels_file):  
    51.     print "in the direct without this synset_words.txt "  
    52.     return   
    53. labels=np.loadtxt(labels_file,str,delimiter='\t')  
    54.   
    55. # 从对应的索引文件中找到最终的预测结果  
    56. outpur_label=labels[output_pro_max_index]  
    57. # 也可以找到排名前五的预测结果  
    58. top_five_index=output_pro.argsort()[::-1][:5]  
    59. print 'probabilities and labels:'  
    60. zip(output_pro[top_five_index],labels[top_five_index])  
    展开全文
  • 安装Pycaffe

    千次阅读 2018-09-24 22:33:39
    安装pycaffe 本文的安装环境是centos(CentOS Linux release 7.2)服务器,但也提到一些ubuntu的设置,可供参考 0. 安装python3 一般的服务器里面都会自带python2,所以这儿不再赘述安装python2的步骤。 首先前往官网...

    安装pycaffe

    本文的安装环境是centos(CentOS Linux release 7.2)服务器,但也提到一些ubuntu的设置,可供参考

    0. 安装python3

    一般的服务器里面都会自带python2,所以这儿不再赘述安装python2的步骤。

    1. 首先前往官网下载最新的release的版本,本文下载的版本是python3.5.6
    2. 解压并编译安装
      tar zxvf Python-3.5.6.tgz
      cd Python-3.5.6
      #这儿添加--enable-shared,是为了防止后面运行python3的时候会报错
      ./configure --enable-shared
      make all -j8
      make install
      
    3. 配置环境
      运行下面的指令找到所需要的动态库
      sudo find / -name libpython3.5m.so.1.0
      
      然后将找到的位置(本文找到的是"/usr/local/lib")写入到配置环境中并使配置生效
      vim /etc/ld.so.conf.d/python3.conf
      /usr/local/lib
      #退出vim
      ldconfig
      

    1. python2与python3共存

    为了后面更好的使用python的环境,我们这儿要做好python2与python3的共存以及管理,虽然可以使用软链以及输入"python2" 、"python3"这样的命令去区别,但本文建议使用update-alternative(ubuntu下也可以使用)来管理系统的默认环境

    1. 确认python2以及python3的位置

      whereis python
      
    2. 将python2以及python3的真实的可执行文件告知update-alternative

      #update-alternatives --install <link> <name> <path> <priority>
      #link即为真正需要管理的链接处,即我们输入python的时候会调用的地方
      #name是多个python版本统一的名字,后面调用--list或者--config的时候会游泳
      #paht即为真正需要管理的可执行程序的路径,也是我们上面执行whereis python所得到的路径
      #priority为显示的顺序
      update-alternatives --install /usr/bin/python python /usr/local/bin/python3.5 1
      update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
      
    3. 使用update-alternative选择需要使用的python版本

      #如果是ubuntu则将--config 改为--list
      update-alternatives --config python
      

      则会显示下面的文字:

       There are 2 programs which provide 'python'.
      
         Selection    Command
       -----------------------------------------------
       *+ 1           /usr/bin/python2.7
          2           /usr/local/bin/python3.5
      
       Enter to keep the current selection[+], or type selection number:
      

      此时输入2,即可让默认的python指向python3

      TIPS: 如果默认的python指向的是python3,则运行yum的时候会报错

        File "/usr/bin/yum", line 30
          except KeyboardInterrupt, e:
                                  ^
        SyntaxError: invalid syntax
      

      因为yum就是python在运行,所以这个时候需要切换为python2,yum才会正常运行

    2. 安装pip2以及pip3

    2.1 安装pip2

    yum install python-pip
    

    2.2 安装pip3

    1. 官网或者csdn资源下载setuptools源码并安装:
      tar -zxvf setuptools.tar.gz
      cd setuptools
      python3 setup.py install
      
    2. pip-github官网或者csdn资源下载Pip源码安装:
      gzip -dv pip.tar.gz
      tar xvf pip.tar
      cd pip
      python3 setup.py build
      python3 setup.py install
      ln -s /usr/local/bin/pip3 /usr/bin/pip3
      

    2.3 升级Pip

    #升级Pip2
    pip2 install -U pip
    #升级pip3
    pip3 install -U pip
    

    3. 安装caffe

    3.1 caffe依赖环境

    安装caffe之前需要安装一些依赖环境,比如CUDA等等,这儿不再介绍,可以参考caffe官网或者在CentOS 7上安装Caffe等等。

    3.1.1 安装protobuf

    前往protobuf的github官网,从release里面下载所需要的版本,我下载的版本是protobuf-all-3.6.1
    然后执行下面命令:

    ./autogen.sh
    ./configure
    make
    make check
    make install
    

    最后记得将library的path写到~/.bashrc里面的LD_LIBRARY_PATH变量并source ~/.bashrc

    3.1.2 安装hdf5

    前往hdf5官网下载所需要的版本并解压

    $ ./configure --prefix=/usr/local/hdf5
    $ make
    $ make check                # run test suite.
    $ make install
    $ make check-install 
    

    3.2 python配置

    安装完caffe的依赖环境之后,先别急着安装caffe。
    首先需要安装一些python的依赖库,这儿要确保使用的时python3.

    cd python
    for req in $(cat requirements.txt); do pip install $req; done
    

    如果上述命令不行,则可以运行:

    pip3 install -r requirements.txt
    

    运行上面这个命令可能会有下面的提示:

    matplotlib 3.0.0 has requirement python-dateutil>=2.1, but you'll have python-dateutil 1.5 which is incompatible.
    pandas 0.23.4 has requirement python-dateutil>=2.5.0, but you'll have python-dateutil 1.5 which is incompatible
    

    这个时候可以考虑将requirements.txt里面的

    python-dateutil>=1.4,<2
    

    改为

    python-dateutil>=2.5
    

    接着我们需要配置一下caffe的Makefile.config文件。以下为我本人的主要配置:

    1. 注释掉所有包含compute_20的行,因为我们在用cuda-9.0
    2. 打开或者设置以下配置:
      USE_CUDNN := 1
      BLAS := atlas
      BLAS_INCLUDE := /usr/include/atlas
      BLAS_LIB := /usr/lib64/atlas
      PYTHON_LIBRARIES := boost_python3 python3.5m
      PYTHON_INCLUDE := /usr/local/include/python3.5m \
                       /usr/local/lib/python3.5/site-packages/numpy/core/include
      PYTHON_LIB := /usr/lib64
      USE_HDF5 := 1
      WITH_PYTHON_LAYER := 1
      

    3.3 编译caffe以及pycaffe

    1. 接着就可以编译并安装caffe了
      make all -j8
      make test -j8
      make runtest -j8
      
    2. 如果上述命令没有问题,接着编译pycaffe
      make pycaffe
      make distribute
      
      如果没有任何错误,这个时候你会在你的caffe主目录下面看到一个distribute的文件夹。这儿就是我们需要的pycaffe了。接着我们需要将python配置到环境变量里面:
      vim ~/.bashrc
      export PYTHONPATH="~/caffe_root/distribute/python:$PYTHONPATH"
      export LD_LIBRARY_PATH="~/caffe_root/distribute/lib:$LD_LIBRARY_PATH"
      #退出vim
      source ~/.bashrc
      
      后面你在命令行当中输入python并"import caffe",如果么有发现错误提示,即代表安装成功。

    4. 安装pycaffe时的错误集锦(欢迎提供新的错误)

    4.1 cannot find -lboost_python3

    在编译caffe的步骤里面的"make all"时候,可能会出现这个错误,这个错误就是因为没有安装适用于python的booost库。

    1. 如果你确定你安装的boost库是python3的版本的,则可以使用Solve the problem: “cannot find -lboost_python3” when using Python3 Ubuntu16.04提到的方法解决:
      find / -name libboost_python*
      sudo ln -s libboost_python-py35.so libboost_python3.so
      
    2. 如果没有发现这样的库,那可能是之前只是安装了python2版本的boost库,所以我们可能需要源码安装。

    4.1.1 编译并安装boost库

    1. 前往官网下载boost库源码
    2. 找到pyconfig.h所在目录$PY_CONFIG
      sudo find / -name pyconfig.h
      
    3. 解压、配置并编译boost库:
      tar zxvf boost_1_68_0.tar.gz
      cd boost_1_68_0
      ./bootstrap.sh
      ./b2 --with-python include="$PY_CONFIG"
      ./b2 install
      ln -s /usr/local/lib/libboost_python35.so.1.68.0 /usr/local/lib/libboost_python3.so
      
    4. 配置环境变量:
      vim ~/.bashrc
      export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
      #退出vim
      source ~/.bashrc
      

    4.2 libboost_system.so.1.68.0: cannot open shared object file: No such file or directory

    这个是因为没有配置环境变量,按照4.1.1的第四步来即可解决;也有可能是没有执行"./b2 install"命令

    4.3 Can’t create weekday with n == 0

    在安装完Pycaffe之后,"import caffe"的时候可能会报错如下:

    File "/usr/local/lib/python3.5/site-packages/dateutil/rrule.py", line 55
        raise ValueError, "Can't create weekday with n == 0"
    

    这个时候需要更新一下python-dateutil库:

    pip3 install python-dateutil --upgrade
    

    4.4 TypeError: expected bytes, str found

    依然是在执行"import caffe"的时候会遇到的错误,大致报错信息如下:

    File "/root/software/caffe-master/distribute/python/caffe/proto/caffe_pb2.py", line 17, in <module>
        serialized_pb='\n\x17\x63\x61\x66\x66\x65/proto/caffe.prot
    File "/usr/local/lib/python3.5/site-packages/google/protobuf/descriptor.py", line 878, in __new__
        return _message.default_pool.AddSerializedFile(serialized_pb)
    TypeError: expected bytes, str found
    

    这个则是编译生成的caffe_pb2.py文件有问题,需要找一个正确编译的文件替代"caffe_root/python/caffe/proto/caffe_pb2.py",已上传到csdn资源,下载并替换即可。

    4.5 error while loading shared libraries: libpython3.5m.so.1.0

    这个是因为在编译python3的时候没有添加"–enable-shared"选项,所以安装python3用以下的命令:

    ./configure --enable-shared
    make all -j8
    make install
    

    如果这个时候还是会报错,则找到libpython3.5m.so.1.0文件所在的位置,将该位置配置一下:

    find / -name libpython3.5m.so.1.0
    #比如找到的地址是/usr/local/lib
    vim /etc/ld.so.conf.d/python3.conf
    /usr/local/lib
    #退出vim
    ldconfig
    

    4.6 No Module Named caffe

    在"import caffe"的时候可能会报错,这是因为没有配置好python的环境变量:

    vim ~/.bashrc
    export PYTHONPATH="~/caffe_root/distribute/python:$PYTHONPATH"
    #退出vim
    source ~/.bashrc
    

    4.7 ImportError: libcaffe.so.1.0.0: cannot open shared object file: No such file or directory

    vim ~/.bashrc
    export LD_LIBRARY_PATH="~/caffe_root/distribute/lib:$LD_LIBRARY_PATH"
    #退出vim
    source ~/.bashrc
    

    4.8 libboost_python35.so.1.68.0: undefined symbol: PyClass_Type

    这个错误是因为编译boost的时候使用了python2,PyClass_Type是python2 C API,所以在python3里面"import caffe"的时候会出现这个错误,这个需要去重新编译一下boost,编译之前,需要确认使用"python"命令的时候出现的是python3
    或者参考libboost_python3.so.1.56.0: undefined symbol: PyClass_Type去编译多个版本的liboost也可以:

    $ ./bootstrap.sh --with-python=/usr/bin/python2
    ...
    Detecting Python version... 2.7
    $ ./b2 --with-python --buildid=2 # produces libboost_python-2.so
    $ ./bootstrap.sh --with-python=/usr/bin/python3 --with-python-root=/usr
    ...
    Detecting Python version... 3.3
    $ ./b2 --with-python --buildid=3noclean # produces libboost_python-3noclean.so
    $ ./b2 --with-python --clean
    $ ./b2 --with-python --buildid=3 # produces libboost_python-3.so
    
    $ nm -D stage/lib/libboost_python-2.so | grep PyClass_Type
                     U PyClass_Type
    $ nm -D stage/lib/libboost_python-3noclean.so | grep PyClass_Type
                     U PyClass_Type
    $ nm -D stage/lib/libboost_python-3.so | grep PyClass_Type
    

    As expected, libboost_python-2.so references the PyClass_Type symbol. Additionally, the libboost_python-3noclean.so contains a reference to PyClass_Type as it was built with libboost_python-2.so’s object files. With a clean build, libboost_python-3.so should not contain a reference to PyClass_Type.

    4.9 fatal error: Python.h: No such file or directory

    对于centos系统,采用下面的命令:

    yum install python-devel   # for python2.x installs
    yum install python34-devel   # for python3.4 installs
    

    其他的可以参考fatal error: Python.h: No such file or directory

    For apt (Ubuntu, Debian…):

    sudo apt-get install python-dev   # for python2.x installs
    sudo apt-get install python3-dev  # for python3.x installs
    

    For yum (CentOS, RHEL…):

    sudo yum install python-devel   # for python2.x installs
    sudo yum install python34-devel   # for python3.4 installs
    

    For dnf (Fedora…):

    sudo dnf install python2-devel  # for python2.x installs
    sudo dnf install python3-devel  # for python3.x installs
    

    For zypper (openSUSE…):

    sudo zypper in python-devel   # for python2.x installs
    sudo zypper in python3-devel  # for python3.x installs
    

    For apk (Alpine…):

    # This is a departure from the normal Alpine naming
    # scheme, which uses py2- and py3- prefixes
    sudo apk add python2-dev  # for python2.x installs
    sudo apk add python3-dev  # for python3.x installs
    

    For apt-cyg (Cygwin…):

    apt-cyg install python-devel   # for python2.x installs
    apt-cyg install python3-devel  # for python3.x installs
    

    4.10 autoreconf: command not found

    在安装protobuf的时候可能会遇到这个错误,这是因为没有安装automake

    yum install autoconf automake libtool
    

    4.11 make all时提示要有-std=c++11

    在编译caffe的时候可能会有下面的错误:

    #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
    

    这个时候大概率是protobuf的版本是用C++11编译的,而caffe的makefile里面默认是不带这个参数的,所以要么protobuf换做低版本,要么修改caffe的makefile,我建议修改caffe的makefile:
    将原有的

    CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)
    NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
    LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS)
    

    改为

    CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
    NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) -std=c++11
    LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
    

    4.12 /usr/bin/ld: cannot find -lcblas

    因为我使用的是centos系统,而centos下面不提供cblas,但是却有satlas和 tatlas,所以需要修改caffe里面的Makefile:

    LIBRARIES += cblas atlas
    

    改成

    LIBRARIES += satlas tatlas
    
    展开全文
  • pycaffe编译

    2018-08-10 17:04:18
    转发来源:... 1,首先确保pip已经安装 sudo apt-get install python-pip 2,在caffe-master/python 下有一个requirement.txt,里面有所需要安装的所有库。 ...cd caffe-master/python for req in $(cat...
  • pycaffe 配置

    千次阅读 2016-03-25 16:21:43
    本文将继续接着上一篇博客(Ubuntu14.04 安装CUDA7.5 + Caffe + cuDNN),讲述如何配置pycaffe,以及运行rbgirshick提供的py-faster-cnn代码。
  • anaconda 安装pycaffe

    2019-09-09 16:35:22
    conda create -n caffe_gpu -c defaults python=3.xcaffe-gpuconda create -n caffe -c defaults python=3.x caffe
  • 配置PyCaffe

    2018-03-02 14:39:11
    Background 背景: 当我们需要使用Python来调用caffe 的时候,如import caffe,则我们需要配置一下PyCaffeEnvironment 环境:Ubuntu16.04 on VMware Workstation、Intel Caffe0. 安装Caffe可参考之前的文章Intel...
  • pycaffe 的使用

    2019-07-12 16:34:50
    文章目录一、导入 caffe、设置设备以及加载网络二、分类预处理三、后处理四、预测五、查看输出形状、参数形状res18 一、导入 caffe、设置设备以及加载网络 import os import sys ...# 1、caffe path and devices ...
  • <div><p><img alt="image" src="https://cloud.githubusercontent.com/assets/16241033/12443255/a7c2c8a8-bf91-11e5-9f06-0948b8fc7561.png" /></p>该提问来源于开源项目:happynear/caffe-windows</p></div>
  • pycaffe安装

    2018-01-09 21:52:26
    主要参考:https://www.cnblogs.com/venus024/p/5664103.html
  • txt中是百度网盘链接 anaconda虚拟环境压缩包,将压缩包解压到anaconda安装目录env文件夹下即可使用 同时注意使用时不要更改numpy版本!
  • pycaffe配置

    2017-12-09 18:55:27
    1、pycaffe介绍: 参考链接:Interfaces Caffe提供了python的接口(pycaffe),详见caffe/python文件夹。在python代码中import caffe,可以load models(导入模型),forward and backward(前向、反向迭代...
  • pycaffe依赖包

    2017-04-28 11:47:04
    pycaffe依赖包,matplotlib在我的其他资源里
  • conda caffe+pycaffe

    2019-12-30 18:21:45
    参考:...conda create -n cf python=2.7 conda deactivate cf python -m pip install -U pip cd caffe/python pip install -r requirements.txt #重点需要-r 参数 错误:pand...
  • pycaffe实例

    2017-08-17 10:58:05
    分享一个很不错的讲解pycaffe的链接 http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html

空空如也

1 2 3 4 5 ... 20
收藏数 1,202
精华内容 480
关键字:

pycaffe