zoukankan      html  css  js  c++  java
  • Caffe体验性教程

    1 概述

    Caffe官网:https://caffe.berkeleyvision.org/

    Caffe2已经并入PyTorch了。

    2 安装

    官方安装教程:https://caffe.berkeleyvision.org/installation.html
    提供了多种安装方法,涵盖linux/OS X/Windows等平台。

    2.1 Docker开箱即用

    Github:https://github.com/BVLC/caffe/tree/master/docker

    • 例如,使用cpu版本镜像,在命令行执行:
    docker run -ti bvlc/caffe:cpu caffe --version
    

    如果本地仓库没有,会自动pull镜像到本地。

    • 对于gpu版本,需要安装NVIDIA驱动及nvidia-docker
    nvidia-docker run -ti bvlc/caffe:gpu caffe --version
    
    • 运行选项
    docker run --rm -u $(id -u):$(id -g) -v $(pwd):$(pwd) -w $(pwd) bvlc/caffe:cpu caffe train --solver=example_solver.prototxt
    

    或者交互方式

    docker run -ti bvlc/caffe:cpu ipython
    

    2.2 Ubuntu(>= 17.04)安装

    • 网上大部分都是都是在Ubuntu14、16下安装Caffe的,安装过程复杂,问题出现的也比较多,对于Ubuntu 17.04及以上版本,可以直接安装预编译的Caffe:

    CPU版本:

    sudo apt install caffe-cpu
    

    GPU版本:

    sudo apt install caffe-cuda
    

    然后直接在命令行输入caffe进行测试。

    • Python接口
      Ubuntu默认已经安装了Python2和Python3,在没有安装Anaconda的时候,默认使用的Python3。可以检查一下,这时候安装的caffe目录就位于/usr/lib/python3/dist-packages/caffe。因此可以执行测试:
    python3
    
    >>import caffe
    >>caffe.__version__
    

    如果安装了Anaconda3,并配置了Anaconda的环境变量,在终端输入python或者python3用的都是Anaconda的python解释器,进入解释器后导入caffe模块会提示找不到。
    这种情况一般是没有把caffe中的和python相关的内容的路径添加到python的编译路径中。
    可以通过在代码中添加caffe路径,,但是治标不治本,每次都需要添加才可以。

    import sys
    caffe_root = '/path/to/caffe'
    sys.path.insert(0, caffe_root + 'python')
    or:
    sys.path.append('/path/to/caffe/python')
    

    也可以直接在配置文件中添加caffe的python解释器。

    sudo gedit  ~/.bashrc
    # add following 2 lines
    export CAFFE_ROOT="/path/to/caffe":$CAFE_ROOT
    export PYTHONPATH="/path/to/caffe/python:$PYTHONPATH":$PYTHONPATH
    # validate the modification
    source ~/.bashrc
    

    这里提供一个简单的方法,可以通过将在/usr/lib/python3/dist-packages/caffe中的caffe文件夹复制进Anaconda的/anaconda3/lib/python3.6/site-packages目录下即可,因为Anaconda使用的模块都在此文件夹下边
    此时在终端进入python解释器,输入caffe就没有问题了,回车后没有提示错误问题就可以了(Anaconda也需要提前安装好protobuf模块,直接通过sudo pip install protobuf安装)。

    2.3 Ubuntu(< 17.04)安装

    1. 下载源码。https://github.com/BVLC/caffe/
    2. 安装依赖库。https://caffe.berkeleyvision.org/install_apt.html
      cuda: gpu模式必须
      BLAS: 科学计算工具,可使用ATLAS, MKL或OpenBLAS
      Boost:
      protobuf, glog, gflags,hdf5等,其他可选: opencv, lmdb, leveldb, cudnn
      python接口及其依赖库:python2.7 或python3.3+, numpy,boost.python
      matlab接口: MATLAB环境及mex编译器

    执行安装命令:

    sudo apt-get update 
    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
    
    1. 编译源码。https://caffe.berkeleyvision.org/installation.html

    (1)caffe默认编译方式(Makefile.config)
    Caffe 开发者提供了比较简单的编译方式,使得用户即使不清楚通用的编译方式,也能很快地完成对源码的编译,只需用户根据本机软硬件的环境,通过修改Makefile.config文件,对编译环境进行简单的配置即可。初次使用源码时,根目录下提供了一个配置样例文件(Makefile.config.example),用户需要进行一次文件拷贝才能产生Makefile.config文件,用户可根据本机环境进行适当的修改。注意检查部分选项,可以参考Makefile.config解析

    执行编译命令:

    cd $CAFFE_ROOT
    # 然后进入Python 目录安装 python interface 所需要的依赖关系:
    cd /path/to/caffe/python
    # use python3 by default
    for req in $(cat requirements.txt); do sudo -H pip3 install $req --upgrade; done
    # back to caffe root repo
    cd ..
    # 根据本机环境修改 Makefile.config 
    cp Makefile.config.example Makefile.config
    # 如果之前编译过的话,清除掉之前编译的内容
    make clean
    # j8是使用8个线程,看计算机CPU有几个内核
    make all -j $(($(nproc) + 1))
    # 如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
    # 编译成功后可运行测试:
    make test -j $(($(nproc) + 1))
    make runtest -j $(($(nproc) + 1))
    make pycaffe -j $(($(nproc) + 1))
    

    caffe-python接口可能因为python路径产生某些问题,参考前面或文末的链接。

    (2)cmake 通用编译方式
    大部分有开发经验的用户,都会对cmake编译方式有一定的了解,caffe也支持cmake的编译方式,该方式下,配置环境的设置可利用图形化工具cmake-gui进行相关参数(参数命名与Makefile.config中的命名基本一致)的配置,cmake经验丰富的,可直接修改根目录下的CMakeLists.txt文件

    cd $CAFFE_ROOT
    mkdir build
    cd build
    # 编译
    cmake .. # 按默认配置编译
    # or 设置部分参数
    cmake -DCMAKE_BUILD_TYPE=Release 
        -DBUILD_python=OFF 
        -DBUILD_python_layer=OFF 
        -DCMAKE_INSTALL_PREFIX=/usr/local 
       ..
    
    # note:编译工程,可有需求地执行
    make all -j8       # 编译所有
    make caffe -j8     # 只编译caffe的C++库,生成libcaffe.so
    make pycaffe -j8 #编译python接口
    

    3 Caffe结构分析

    caffe源码最主要的三部分:

    • include/caffe
    • src/caffe
    • tools/
    • examples/
      阅读顺序:
    1. src/caffe/proto/caffe.proto
    2. examples/solver_*.prototxtexamples/train_*.prototxt
    3. include/caffe.hpptools/caffe.cpp
    4. include/net.hpptools/net.cpp
    5. include/layer.hpptools/layer.cpp

    3.1 数据结构描述(.proto)

    src/caffe/proto/caffe.proto文件中定义了caffe中基本的数据结构,如BlobProto, NetParameter, LayerParameter等,可以把它看做一种类似结构体的定义;

    message LayerParameter {
      optional string name = 1; // the layer name
      optional string type = 2; // the layer type
      repeated string bottom = 3; // the name of each bottom blob
      repeated string top = 4; // the name of each top blob
    }
    

    格式包括参数类型、参数名和id等。

    3.2 模型参数实现(.prototxt)

    利用src/caffe/proto/caffe.proto中定义好的数据结构,通过设置不同参数的值,我们可以实现一个具体的网络结构;

    3.3 训练/测试入口

    参考

    https://www.jianshu.com/p/261e8701845f
    https://www.pianshen.com/article/7490318594/
    https://www.jianshu.com/p/e587e2dd1bea
    http://hechen.top/2019/05/03/Caffe_tutorial_2/
    http://hechen.top/2019/05/03/Caffe_tutorial_1/

  • 相关阅读:
    前端 HTML
    python3内置函数
    内置函数的随机验证码
    线程、进程以及协程,上下文管理器
    线程池的定义方法
    python_控制台输出带颜色的文字方法
    while 循环 continue break 用法例子
    JVM 基础知识
    ios 设置状态栏文本颜色为白色
    ios 常用第三方库要加的framework,ARC的设置
  • 原文地址:https://www.cnblogs.com/tofengz/p/13750748.html
Copyright © 2011-2022 走看看