深度学习必备:Linux下Caffe使用CPU训练模型 (linux caffe cpu)
深度学习是关键领域之一,其中 基于神经网络的深度学习算法 在图像、语音、自然语言处理等任务中扮演重要角色。Caffe作为一款深度学习框架,已经成为性能极致的模型训练工具之一。在这个过程中,Linux作为服务器操作系统给我们带来了更多的便捷性和稳定性。
为了使大家快速上手使用Caffe,本文将带领你从虚拟机的安装到Caffe CPU的训练。文章将分为以下几个主要部分:虚拟机的安装、Linux环境的配置、Caffe的安装、数据准备和CPU训练。
一、虚拟机的安装
在开始之前,需要安装一款虚拟机软件,这个软件将在真实的硬件上运行一个虚拟化的计算机系统。这里我们推荐使用Oracle VM VirtualBox,因为它是自由软件,并且可在Windows、MacOS、Linux三个主流平台上运行。在安装完成后,可以下载一个最新的Ubuntu ISO文件(我们使用的是Ubuntu18.04 LTS版本),在VirtualBox中新建一个Ubuntu虚拟机,并安装该ISO文件。在启动虚拟机前,需要设置内存、处理器和显存等参数。
二、Linux环境的配置
当我们进入Ubuntu虚拟机后,需要进行一些必要的环境配置。我们需要更新软件源,为了能够运行深度学习框架,更好选择清华大学的镜像源,使用如下命令:
“`
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo add-apt-repository ppa:linuxuprising/java
sudo apt-get update
“`
接着,我们需要安装Java和Python,因为Caffe使用这些语言来运行。在Ubuntu下,我们可以使用如下命令进行安装:
“`
sudo apt-get install python-dev python-pip python-numpy python-scipy python-matplotlib python-h5py python-skimage python-sklearn python-pandas python-pydot python-lmdb python-protobuf python-yaml python-gflags python-requests python-opencv python-gi python-gi-cro python-xlib python-pygtk python-pygtkgl python-gtkglext1 python-gtkglext1-dev default-jdk
“`
此外,将Anaconda设置为默认的Python环境是一个好主意。在安装后使用如下命令:
“`
export PATH=”/home/youruser/anaconda3/bin:$PATH”
source ~/.bashrc
“`
三、Caffe的安装
在Ubuntu上安装Caffe通常需要很多依赖库,但在我们上面配置好的环境下,可以通过如下命令安装:
“`
sudo pip install protobuf==3.0.0
cd ~
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
“`
接下来,打开Makefile.config文件,根据需要更改以下选项:
“`
# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary — OpenCV libraries are normally installed in one of the above $PREFIX locations.)
USE_PKG_CONFIG := 1
# CPU-only switch (uncomment to build without GPU support).
CPU_ON := 1
“`
在这里,我们只使用CPU,所以 USE_PKG_CONFIG和CPU_ON两个选项都打开。
接着,我们下载官方的Caffe model和weights文件(这是ImageNet数据集上的预训练模型):
“`
./scripts/download_model_binary.py ./models/bvlc_reference_caffenet
“`
使用以下命令进行编译:
“`
make all -j 32 && make test && make runtest && make pycaffe
“`
如果编译成功,Caffe就安装好了,可以使用以下命令验证一下:
“`
cd ~/caffe
./build/tools/caffe
“`
四、数据准备
接下来是准备数据。在Caffe中,我们需要将数据预处理成LMDB格式,这个过程可以通过调用tools/extra/convert_imageset.cpp完成。这里我们将使用一个亚洲人脸数据集,从http://mmlab.ie.cuhk.edu.hk/archive/CNN_FacePoint.htm下载并解压缩该数据集,然后使用如下命令将此数据集转换成LMDB格式:
“`
cd ~/caffe && mkdir data && cd data
sudo python ~/caffe/scripts/download_data.py
sudo python ~/caffe/data/cnn_face_point/convert_data.py
“`
五、CPU训练
训练模型是深度学习算法的核心部分。在这里我们使用Caffe实现 AlexNet网络,该网络是Deep Learning领域最著名的图像分类模型,也是Caffe最适合的模型之一。
由于本文的重点是CPU训练,因此在caffe/models/bvlc_reference_caffenet下创建一个新目录CPU,新建AlexNet模型网络文件CPU/deploy.prototxt以及CPU/solver.prototxt优化器文件,命令见下面的脚本:
“`
cd ~/caffe/models/bvlc_reference_caffenet
mkdir CPU
cp trn_val.prototxt CPU/trn_val.prototxt
cp solver.prototxt CPU/solver.prototxt
sed ’33d’ CPU/trn_val.prototxt > CPU/deploy.prototxt
sed -i ’36d’ CPU/deploy.prototxt
“`
执行以上命令将trn_val.prototxt复制到新的CPU目录下(同时,此处我们将trn_val.prototxt重命名为 CPU/trn_val.prototxt,或自行选择其他名字),并删除该文件中的35和38行,这样就得到了deploy.prototxt文件。在CPU/solver.prototxt文件中将注释掉的GPU选项取消注释,这将在训练时启用CPU(或GPU,如果你有GPU的话)。
“`
# 这是solver.prototxt最顶部区域的配置,取消注释CPU_ON选项
# 同时,也可以根据需要调整weight_decay(权重衰减)和base_lr(学习率)等参数
# 这些文件将用于在Ubuntu 18.04下的CPU-only训练
net: “models/bvlc_reference_caffenet/CPU/deploy.prototxt”
test_iter: 1000
test_interval: 1000
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
lr_policy: “step”
stepsize: 100000
gamma: 0.1
display: 100
max_iter: 45000
snapshot: 10000
snapshot_prefix: “models/bvlc_reference_caffenet/caffenet_trn_25thpct_cpu”
solver_mode: CPU_ON
“`
使用如下命令开始训练模型:
“`
./build/tools/caffe trn –solver=~/caffe/models/bvlc_reference_caffenet/CPU/solver.prototxt
“`
如果一切正常,Caffe将展示输出日志,并在训练过程中保存模型快照。本例中,我们选择进行45000个训练迭代,这将花费几个小时的时间(约3个小时)。
训练完成后,可以使用以下命令,对测试集进行精度测试:
“`
./build/tools/caffe test –model=models/bvlc_reference_caffenet/CPU/deploy.prototxt –weights=models/bvlc_reference_caffenet/caffenet_trn_25thpct_cpu_iter_45000.caffemodel –iterations=100 –gpu=0
“`
恭喜!现在您已经在Linux下成功使用Caffe训练了一个CPU-only的深度学习模型,赶快去尝试自己的模型吧。