安装opencv3(使用源码安装)
下载opencv源码到 /opt 目录下,解压并进入opencv-3.1.0目录;
mkdir build # 创建编译的文件目录
cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=http://www.likecs.com/usr/local ..
make -j8 #编译
sudo make install #安装
//////////////////////////////////////////////////////////////////////////////////////////////
linux知识补充:
pkg-config --modversion opencv
pkg-config --libs --cflags opencv #查看gcc或g++编译的CFLAGS,即头文件路径和动态库路径
注意的是静态库使用ar命令对 .o 文件操作创建的,文件以 .a 结束命名; 使用时在静态库名前加 --lib,如gcc -o hello main.c -L. -lmyhello
同理动态库使用 gcc -shared -fPCI -o libmyhello.so hello.o 命令创建,文件以 .so 命名;
1、使用时记得把 libmyhello.so 复制到目录 /usr/lib 中再跑 gcc -o hello main.c -L. -lmyhello; 因为一般Linux系统把/lib和/usr/lib两个目录作为默认的库搜索路径
2、或者添加linux的搜索路径,在 /etc/ld.so.conf 文件中添加库的搜索路径;当静态库和动态库同名时, gcc命令将优先使用动态库。
如果 pkg-config --modversion查找不到版本,则手动添加opencv源码的opencv4.pc文件到/usr/lib/pkconfig/;
opencv4.pc的目录在 ~/Desktop/opencv-4.0.0-alpha/build/unix-install,可以使用 find ./ -name opencv4.pc 来在当前目录往下查找
或者使用 export PKG_CONFIG_PATH=~/Desktop/opencv-4.0.0-alpha/build/unix-install:$PKG_CONFIG_PATH //opencv4.pc在源码的路径
然后使用$echo$PKG_CONFIG_PATH 来查看 PKG_CONFIG_PATH的路径设置是什么。
//////////////////////////////////////////////////////////////////////////////////////////////////
4、安装caffe和编译
git clone https://github.com/BVLC/caffe.git
sudo cp Makefile.config.example Makefile.config
sudo gedit Makefile.config #开启选项和设置路径(cudnn,opencv 版本,python 接口层,python 路径)
然后修改 caffe 目录下的 Makefile 文件(NVCCFLAGS,LIBRARIES)
make all -j8 #编译
sudo make runtest -j8 #跑自带的测试
###编译pycaffe
cd caffe
sudo make pycaffe -j8
5、下载模型VGG16预训练模型:
sh data/scripts/fetch_faster_rcnn_models.sh
此脚本会下载好faster-rcnn的训练好的模型,接着运行demo.py就可以运行示例程序了。具体过程看另外一篇关于demo源码解析的博客.
///////////////////////////////////////////////////////////////////////////////////////////////////////////
caffe安装编译成功后,跑fast-cnn代码时(Python tools/demo.py),会出现cudnn6不兼容该项目的错误,此时有两种方法:
cd caffe-fast-rcnn
git remote add caffe https://github.com/BVLC/caffe.git
git fetch caffe
git merge caffe/master
最后注释掉 self_.attr(“phase”) = static_cast(this->phase_); from include/caffe/layers/python_layer.hpp after merging.
这种方法有时候会成功,有时候则不会
手动修改文件
1. 用最新caffe源码的以下文件替换掉faster rcnn 的对应文件
include/caffe/layers/cudnn_relu_layer.hpp, src/caffe/layers/cudnn_relu_layer.cpp, src/caffe/layers/cudnn_relu_layer.cu
include/caffe/layers/cudnn_sigmoid_layer.hpp, src/caffe/layers/cudnn_sigmoid_layer.cpp, src/caffe/layers/cudnn_sigmoid_layer.cu
include/caffe/layers/cudnn_tanh_layer.hpp, src/caffe/layers/cudnn_tanh_layer.cpp, src/caffe/layers/cudnn_tanh_layer.cu
2 用caffe源码中的这个文件替换掉faster rcnn 对应文件
include/caffe/util/cudnn.hpp
至此可以使用训练好的模型VGG16来检测识别物体了。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
二、所用到的docker命令