深度学习必备: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的深度学习模型,赶快去尝试自己的模型吧。


数据运维技术 » 深度学习必备:Linux下Caffe使用CPU训练模型 (linux caffe cpu)