caffe安装+使用places365进行迁移学习

caffe安装+使用places365进行迁移学习

安装ubuntu caffe cuda7.5 cudnn4.5

  • 由于最近需要使用places365模型,是由caffe搭建了,所以又重装了次电脑,悲催。。。
  • 安装ubnutu

    • 分区
      • 固态硬盘sda
        • boot 400m ext4
        • swap 32g
        • / 固态硬盘剩余所有空间 ext4
      • 3t机械硬盘sdb,在try ubuntu中找到磁盘应用进行格式化,不要再
        安装的过程中选择格式化,不然会卡死
        • home ext4
      • 引导选择sda
    • 装完网卡不能用。。。
      • 首先用ifconfig,发现没有eht。只有那个本地回环,怀疑网卡没有装上
      • lspci | grep -i net查看网卡信息,intel网卡
      • 几经周折找到了一个可以用的网卡驱动
        • http://www.intel.cn/content/www/cn/zh/support/network-and-i-o/ethernet-products/000005480.html#build_e1e
        • 安装步骤
          • tar zxf 。。。。解压
          • 进入解压好的目录 cd。。。
          • make install
          • rmmod e1000e; modprobe e1000e
        • 然后联网ing
    • 安装cuda7.5

      • 并不需要啥关掉图形界面啥啥的,直接装
      • 安装依赖

        • apt-get install bulid-essential

          sudo apt-get --purge remove nvidia-* 
          dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb 
          apt-get update
          apt-get install cuda
          安装完成重启电脑
          
      • 安装cudnn

        tar -zxvf cudnn-7.5-linux-x64-v5.0-ga.tgz 
        将解压出来的cuda中的lib目录下的文件都复制到/user
        cp cuda/lib64/lib* /usr/local/cuda/lib64
        cp cuda/include/cudnn.h /usr/local/cuda/include/
        
      • 配置环境变量,和下面的protobuf caffe都一起配置了

        PATH=/usr/local/cuda/bin:$PATH 
        export PATH 
        LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
        export LD_ LIBRARY_PATH
        export PYTHONPATH=/home/ubuntu/caffe/python
        export PATH=$PATH:/usr/local/protobuf/bin/
        export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
        
    • 更新一下系统

      • sudo apt-get update && sudo apt-get upgrade
      • sudo apt-get install linux-source
      • sudo apt-get install linux-headers-uname -r
    • 安装caffe

       sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml python-numpy
      sudo easy_install pillow
      sudo apt-get install pypy-dev
      
      cd ~
      git clone https://github.com/BVLC/caffe.git
      
      cd caffe
      cat python/requirements.txt | xargs -L 1 sudo pip install
      
      cp Makefile.config.example Makefile.config
      vi Makefile.config
      # 去掉USE_CUDNN:=1注释
      # 去掉WITH_PYTHON_LAYERS注释
      
      make pycaffe -j4
      make all -j4
      make test -j4
      #   如果什么什么错误60,61什么的把下面的几行注释掉,这是版本不一致造成的
      #-gencode arch=compute_60,code=sm_60 \
      #-gencode arch=compute_61,code=sm_61 \
      #-gencode arch=compute_61,code=compute_61
      export PYTHONPATH=/home/username/caffe/python  
      
    • 安装protobuf
      • 解压protobuf包
      • 进入目录
      • ./configure
      • make
      • make check
      • sudo make install
      • cd ./python//进入protobuf目录中的python目录中
      • python setup.py build
      • python setup.py test
      • python setup.py install
      • 将protobuf配到环境文件中

finetune places365模型

  • 模型下载地址https://github.com/metalbubble/places365上面可以下到每种模型训练得到的caffemodel文件,以及模型文件train_val_alexnet.prototxt和solver_alexnet.prototxt文件

  • 训练时首先准备数据集,训练和测试的lmdb文件以及相应的lable文件,并得到均值文件,注意lable文件索引要从0开始

  • 因为是在别人训练好的模型上继续训练,所以要更改solver文件

            net: "train_val_alexnet.prototxt"#模型文件路径
            test_iter: 20
            test_interval: 50
            base_lr: 0.001
            lr_policy: "step"
            gamma: 0.1
            stepsize: 2000
            display: 20
            max_iter: 10000
            momentum: 0.9
            weight_decay: 0.0005
            snapshot: 1000
            snapshot_prefix: "models/bvlc_alexnet/caffe_alexnet_train"#快照保存路径
            solver_mode: GPU
    
    • 修改train_val_alexnet.prototxt文件中的路径,以及最后一层的名称,不然这一层也会引用caffemodel中的参数。还要修改类别个数

      layer {
        name: "fc8_flicker"#改成任意字符
        type: "InnerProduct"
        bottom: "fc7"
        top: "fc8_flicker"
        param {
          lr_mult: 1
          decay_mult: 1
        }
        param {
          lr_mult: 2
          decay_mult: 0
        }
        inner_product_param {
          num_output: 18#需要分多少类
          weight_filler {
            type: "gaussian"
            std: 0.01
          }
          bias_filler {
            type: "constant"
            value: 0
          }
        }
      }
      layer {
        name: "accuracy"
        type: "Accuracy"
        bottom: "fc8_flicker"
        bottom: "label"
        top: "accuracy"
        include {
          phase: TEST
        }
      }
      layer {
        name: "loss"
        type: "SoftmaxWithLoss"
        bottom: "fc8_flicker"
        bottom: "label"
        top: "loss"
      }
      
      
      }
      
    • 开始训练

      ../caffe/build/tools/caffe train -solver solver.prototxt -weights alexnet_places365.caffemodel -gpu 0  
      

你可能感兴趣的:(深度学习,ubuntu,cuda)