caffe 简介
Caffe是一个清晰而高效的深度学习框架,是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;
可以在CPU和GPU直接无缝切换:
Caffe::set_mode(Caffe::GPU);
caffe 优势
1.上手快:模型与相应优化都是以文本形式而非代码形式给出。
Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。
2.速度快:能够运行最棒的模型与海量的数据。
Caffe与cuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只需要1.17ms.
3.模块化:方便扩展到新的任务和设置上。
可以使用Caffe提供的各层类型来定义自己的模型。
4.开放性:公开的代码和参考模型用于再现。
5.社区好:可以通过BSD-2参与开发与讨论。
安装caffe与训练网络
我的ubantu版本是16.04,然后因为刚接触,为了安装方便,使用的是cpu模式的caffe。
安装步骤
大致有以下步骤
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 libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libatlas-base-dev
git clone git://github.com/BVLC/caffe.git
cp Makefile.config.example Makefile.config
make all -j8
make test -j8
make runtest -j8
安装并编译成功后,进入caffe目录,ls一下
然后进入data目录,下载一下数据集,我下载的是mnist.
cd data/mnist
./get_mnist.sh
接下来将数据转化成leveldb格式
返回到caffe目录
./examples/mnist/create_mnist.sh
训练网络:
./examples/mnist/train_lenet.sh
接着,会出来一行一行的运行反馈,当Iteration(迭代)达到10000次的时候,就会停止,出现Optimization Done.
还可以对训练后的结果进行测试。
./build/tools/caffe.bin test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -iterations 10
caffe python接口使用
识别lenet手写数字的实例
import os
import sys
import numpy as np
from scipy.misc import imread,imresize
import matplotlib.pyplot as plt
caffe_root='/usr/local/caffe/'
sys.path.insert(0,caffe_root+'python')
import caffe
MODEL_FILE=caffe_root+'examples/mnist/lenet.prototxt'
PRETRAINED=caffe_root+'examples/mnist/lenet_iter_10000.caffemodel'
IMAGE_FILE=caffe_root+'examples/images/cat.jpg'
input_image=caffe.io.load_image(IMAGE_FILE,color=False)
net=caffe.Classifier(MODEL_FILE,PRETRAINED)
prediction=net.predict([input_image],oversample=False)
caffe.set_mode_cpu()
img=imread(IMAGE_FILE)
plt.imshow(img)
plt.title(prediction[0].argmax())
plt.show()