zoukankan      html  css  js  c++  java
  • Caffe环境安装

    一、安装依赖包:

      sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

      sudo apt-get install --no-install-recommends libboost-all-dev

      sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

      sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

      sudo apt-get install git cmake build-essential

    二、安装protobuf

           1.删除系统原生protobuf

        sudo rm -rf protoc

           2.确认当前protobuf是否已删除

      3.安装protobuf2.6.1

                cd protobuf2.6.1

       ./configure

       make

       sudo make install

               sudo ldconfig

      4.确认当前protobuf版本

    三、安装opencv3.4.6

      mkdir build && cd build # 创建编译的文件目录,并进入该目录

           cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

      注:在docker环境下安装时,碰到一个问题:/usr/bin/ld: warning: libzstd.so.1.3.7, needed by //opt/conda/lib/libtiff.so.5, not found (try using -rpath or -rpath-link)

      解决方法:加上选项:-D BUILD_TIFF=ON

       cmake -D BUILD_TIFF=ON -D CMAKE_BUILD_TYPE=Release -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..

      make -j8  #编译

      sudo make install #安装

      pkg-config --modversion opencv  #验证成功与否

    四、安装依赖包

      1)sudo apt-get install libhdf5-dev

    五、安装caffe

      sudo cp Makefile.config.example Makefile.config

    1、修改Makefile.config
           sudo gedit Makefile.config
           应用 opencv 版本将
           #OPENCV_VERSION := 3   修改为: OPENCV_VERSION := 3
           修改 python 路径
           INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
           LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
           修改为:
           INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
           LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial     

    2、修改Makefie

           修改 caffe 目录下的 Makefile 文件
           将:NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
           替换为:NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
           将:LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
           改为:LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

    3、编译caffe

           make all -j8

           问题1: 在运行上面命令编译时,报错://opt/conda/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9

           原因:zlib的版本不兼容导致,这里指出是ZLIB1.2.9,本地安装的是zlib1.2.8

           解决方法:

    wget http://www.zlib.net/fossils/zlib-1.2.9.tar.gz
    tar -xvf zlib-1.2.9.tar.gz
    cd zlib-1.2.9
    mkdir build
    cd build
    cmake ..
    make
    make install

          sudo make runtest -j8  #测试caffe安装是否成功

          sudo apt-get install python3.8-dev

          sudo make pycaffe-j8   #生成最终版本

    4.运行caffe

    问题1:  import caffe时报错:

      Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/li.guangyao/Programming/caffe/python/caffe/__init__.py", line 1, in <module> from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer File "/home/li.guangyao/Programming/caffe/python/caffe/pycaffe.py", line 13, in <module> from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, ImportError: /home/li.guangyao/Programming/caffe/python/caffe/_caffe.so:

     undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE

    解决方法:

     先使用以下命令,安装最新版本libboost: sudo apt-get install --no-install-recommends libboost-all-dev

        打开caffe目录下Makefile文件:

    将PYTHON_LIBRARIES := boost_python python2.7
    PYTHON_LIBRARIES := boost_python-py36 #py36需要改为你自己的python版本,如py34,py33

     问题2:修改完问题1,指定PYTHON_LIBRARIES版本为3.6,编译make pycaffe时又报错:/usr/bin/ld: cannot find -lboost_python-py36

     解决方法:

      1.下载包boost_1_67_0,进入boost源文件目录boost_1_67_0

      2.运行以下两条命令:

    ./bootstrap.sh --with-libraries=python --with-toolset=gcc
    ./b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="/qp/3rd/anaconda3/include/python3.6m/"
     3.sudo ./b2 install

    编译安装成功后,/usr/local/lib下会有libboost_python36.so和libboost_python36.a,有些应用link时需要的是libboost_python3.so或者libboost_python3.a,我们建个软链:

    cd /usr/local/lib
    sudo ln -s libboost_python-py36.so libboost_python3.so
    sudo ln -s libboost_python-py36.a libboost_python3.a

    问题3:ModuleNotFoundError: No module named 'skimage'
    解决方法:pip install scikit-image

    问题4:ModuleNotFoundError: No module named 'google'
    解决方法:pip install google
    pip install protobuf

      

        

  • 相关阅读:
    【Codeforces 340D】Bubble Sort Graph
    在写EF 时把时间格式化的做法
    判断早八点晚八点内做事情的方法
    EF分组后把查询的字段具体映射到指定类里面的写法
    MYSQL 之SET GLOBAL innodb_buffer_pool_size =n
    指定类型的成员XX”不支持实体LINQ。只有初始化,成员单位,和实体导航性能的支持。
    MVC中某个页面不需要引用母版页的正确写法
    新建一个controller并指定为默认的方法
    如果有反向代理的情况下,获取最原始的IP的办法
    解决MVC运行controller的时候只有有参构造函数但是程序一定要走无参构造函数的方法
  • 原文地址:https://www.cnblogs.com/jimchen1218/p/14257967.html
Copyright © 2011-2022 走看看