caffe Ununtu 16.04.4开发环境配置(CPU版)

caffe是一种常用的深度学习框架,主要应用在视频、图像处理方面的应用上。由于没钱买gpu,只能在虚拟机环境下配置Ubuntu CPU版caffe开发环境,大家勿笑。

1.首先,先安装依赖库:

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 libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.下载编码caffe源码

如果没有安装git,请先安装:

    sudo apt-get install git

下载caffe源码:

    git clone https://github.com/BVLC/caffe.git
    cd caffe
    cp Makefile.config.example Makefile.config

或:

    mv Makefile.config.example Makefile.config

打开配置文件:

    vim Makefile.config

修改配置文件

    # CPU_ONLY:=1

改为:

    CPU_ONLY:=1
   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/hdf5/serial/

注意:最后面的斜杠/不能去掉,否则编译会报错
进入目录,并打开终端

    cd /usr/lib/x86_64-linux-gnu/

ubuntu 16.04.4自带python3.5,但需要找出该so库的版本号:

    find .|xargs grep -rl "libboost_python-py35.so."
    ./libboost_mpi_python-py35.so.1.58.0
    ./libboost_python-py35.so.1.58.0
    ./libboost_mpi_python-py35.so.1.58.0
    ./libboost_python-py35.so.1.58.0
    ./libboost_python-py35.so
    ./libboost_mpi_python-py35.so

该so库的版本号为1.58.0,软链到/usr/local/lib/

    sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.58.0 /usr/local/lib/libboost_python3.so

至此,caffe CPU版配置完毕,下面开始编译caffe

    sudo make all -j4
    sudo make test
    sudo make runtest -j4
    

注:如何编译报错,去掉后面的-j4再试试

4.安装python库

进入python目录

    cd python

查看是ubuntu否有安装pip3,如果没安装会出现如下提示:

    pip3 -v
    The program 'pip3' is currently not installed. You can install it by typing:sudo apt install python3-pip

安装pip3:

    sudo apt install python3-pip
    

修改用户配置文件:

vim ~/.bashrc

在最后一行加入:

export PYTHONPATH=/caffepath/python:$PYTHONPATH

加载配置文件:

    sudo ldconfig

安装numpy库:

    sudo apt-get install python-numpy

编译caffe,在caffe目录运行:

    sudo make pycaffe -j16
    

安装成功后,进入python2(python2对caffe的支持比较好)进行测试:

    python
    import caffe
    

报错:

    ImportError: No module named skimage.io

于是考安装skimage.io:

    sudo pip install scikit-image
     

结果发现运行pip报错,真是倒霉的时候喝水都会呛着。错误信息如下:

    Traceback (most recent call last):
    File "/usr/bin/pip", line 9, in <module>
    from pip import main
    ImportError: cannot import name 'main'
     

问了一下度娘,还好有解,先修改pip3:

    sudo vi /usr/bin/pip3

原文: from pip import main
修改后: from pip._internal import main
然后修改pip:

    sudo vi /usr/bin/pip

原文:

    from pip import main  
    if __name__ == '__main__':  
         sys.exit(main()) 
         

修改为:

    from pip import __main__
    if __name__ == '__main__':  
        sys.exit(__main__._main())
     

然后输入pip -V验证:

    pip -V
    pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
    

继续安装scikit-image:

    sudo pip install scikit-image
    

安装成功后,继续输入:

    import caffe
    No module named google.protobuf.internal
    

google.protobuf缺失,安装protobuf

   sudo pip install protobuf
   

安装完毕后输入

    python
    import caffe

如果无错误提示,则说明caffe已经成功安装!

94 声望
4 粉丝
0 条评论
推荐阅读
CENTOS JAVA开发环境配置
系统环境:centos7 1 安装JDK 1.1 下载JDKjdk-8u251-linux-x64.rpm 1.2 安装JDK {代码...} 2 安装MAVEN 2.1 下载MAVENapache-maven-3.6.3-bin.tar.gz 2.2 解压 {代码...} 3 配置系统环境变量 3.1 设置环境变量 {...

懒熊工作室阅读 1.2k

Ubuntu20.04 从源代码编译安装 python3.10
Ubuntu 22.04 Release DateUbuntu 22.04 Jammy Jellyfish is scheduled for release on April 21, 2022If you’re ready to use Ubuntu 22.04 Jammy Jellyfish, you can either upgrade your current Ubuntu syste...

ponponon1阅读 4k评论 1

日常Python 代码片段整理
1、简单的 HTTP Web 服务器 {代码...} 2、单行循环List {代码...} 3、更新字典 {代码...} 4、拆分多行字符串 {代码...} 5、跟踪列表中元素的频率 {代码...} 6、不使用 Pandas 读取 CSV 文件 {代码...} 7、将列表...

墨城2阅读 354

Python + Sqlalchemy 对数据库的批量插入或更新(Upsert)
由于不同数据库对这种 upsert 的实现机制不同,Sqlalchemy 也就不再试图做一致性的封装了,而是提供了各自的方言 API,具体到 Mysql,就是给 insert statement ,增加了 on_duplicate_key_update 方法。

songofhawk1阅读 2.1k评论 4

封面图
Unicode 正则表达式(qbit)
前言本文根据《精通正则表达式》和 Unicode Regular Expressions 整理。本文的示例默认以 Python3 为实现语言,用到 Python3 的 re 模块或 regex 库。基本的 Unicode 属性分类 {代码...} 基本的 Unicode 子属性Le...

qbit阅读 4.4k

打脸了兄弟们,Go1.20 arena 来了!
大家好,我是煎鱼。大概半年前,我写过一篇文章《Go 要违背初心吗?新提案:手动管理内存》。有兴趣了深入解的同学,可以再回顾一下。当时我们还想着 Go 团队应该不会接纳,至少不会那么快:懒得翻也可以看我再次...

煎鱼1阅读 3.3k

uwsgi 注意事项
http 和 http-socket 选项是完全不同的。第一个生成一个额外的进程,转发请求到一系列的worker (将它想象为一种形式的盾牌,与apache或者nginx同级),而第二个设置worker为原生使用http协议。

zed2015阅读 2.2k

94 声望
4 粉丝
宣传栏