一、下载安装OpenCV
首先 安装依赖项
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
然后去官网找opencv 点我进入opencv官网
选择sourcecode下载,将下载的压缩包移至某个文件夹(我是~/Document/environment/)下载下来的格式是.zip,需要sudo-apt-get install unzip之后用unzip工具解压。
解压之后得到文件夹opencv-X.X.X,打开文件夹发现里面有个CMakefile.txt,就用cmake编译好了。于是在有CMakefile.txt的目录建立build文件夹,进入build然后执行
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
sudo make install
没有报错的话就安装好了。如果是先安装了cuda啥的的话可能出现版本导致的错误。关于CUDA_nppi_LIBRARY (ADVANCED)找不到的宝座,可以参考cuda9不再支持2.0架构导致的cmake报错。要是安装了cuda又卸载了的话可能还有残留,这个时候cmake也会报错。这种情况重启几遍,多cmake几次就好了。
二、下载安装caffe
首先相关环境配置一下。
安装ATLAS:
sudo apt-get install libatlas-base-dev
安装依赖包:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
去Caffe官方github下载Caffe到某个目录
git clone git://github.com/BVLC/caffe.git
然后在进入这个目录。里面有一个Makefile.config.example.复制一份命名为Makefile.config,打开修改一下:
cp Makefile.config.example Makefile.config
vim Makefile.config
修改内容如下:
- CPU_ONLY := 1这一行去掉注释,使得CPU_ONLY模式生效;
- OPENCV_VERSION := 3这一行去掉注释,使得有关opencv3.0的链接生效
- 修改hdf5文件的路径。我是64位系统所以要做以下修改:
如果您是32位系统则要更改目录名称# Whatever else you find you need goes here. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial /usr/local/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/lib /usr/lib
# Whatever else you find you need goes here. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial /usr/local/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/i386-linux-gnu/hdf5/serial /usr/local/lib /usr/lib
个就保存然后编译运行一下。这里用8个并行处理希望可以快一点qwq
sudo make all -j8
没有报错则
sudo make runtest
没有报错的话这个caffe就做好了。
三、用官方数据集测试caffe
sudo sh data/mnist/get_mnist.sh
sudo sh examples/mnist/create_mnist.sh
之后更改LeNet的prototxt文件。lenet_solver.prototxt 文件设定运行CPU 版本或者 GPU 版本:
sudo vim examples/mnist/lenet_solver.prototxt
修改最后一行:solver_mode: CPU。
然后训练一下
sudo sh examples/mnist/train_lenet.sh
之后就在examples/mnist/文件夹下出现了:
-rw-r--r-- 1 root root 1725006 4月 13 09:11 lenet_iter_10000.caffemodel
-rw-r--r-- 1 root root 1724471 4月 13 09:11 lenet_iter_10000.solverstate
-rw-r--r-- 1 root root 1725006 4月 13 09:02 lenet_iter_5000.caffemodel
-rw-r--r-- 1 root root 1724470 4月 13 09:02 lenet_iter_5000.solverstate
这几个文件。他们就是我们训练好的模型了。接下来我们测试一下;在…/caffe目录下使用管理员权限编译运行刚刚的模型:
sudo ./build/tools/caffe.bin test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -iterations 100
可以看到
I0413 09:24:03.045549 22565 data_layer.cpp:73] Restarting data prefetching from start.
I0413 09:24:03.101616 22564 caffe.cpp:304] Batch 96, accuracy = 0.97
I0413 09:24:03.101655 22564 caffe.cpp:304] Batch 96, loss = 0.0803656
I0413 09:24:03.159685 22564 caffe.cpp:304] Batch 97, accuracy = 0.98
I0413 09:24:03.159719 22564 caffe.cpp:304] Batch 97, loss = 0.122915
I0413 09:24:03.216450 22564 caffe.cpp:304] Batch 98, accuracy = 1
I0413 09:24:03.216486 22564 caffe.cpp:304] Batch 98, loss = 0.00288249
I0413 09:24:03.274421 22564 caffe.cpp:304] Batch 99, accuracy = 1
I0413 09:24:03.274456 22564 caffe.cpp:304] Batch 99, loss = 0.00460428
I0413 09:24:03.274474 22564 caffe.cpp:309] Loss: 0.0289698
I0413 09:24:03.274492 22564 caffe.cpp:321] accuracy = 0.9906
I0413 09:24:03.274507 22564 caffe.cpp:321] loss = 0.0289698 (* 1 = 0.0289698 loss)
这种东西。这就是我们训练的结果了。