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
- 固态硬盘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