为了跟进目标检测框架的最新进展,于是配置了SSD框架并成功运行demo,其中遇到不少坑记录下来。
1、假设CUDA、CuDNN、OpenBLAS、OpenCV等都已经安装完毕。我的版本是Ubuntu16.04+CUDA8.0+CuDNN5.0+OpenCV3.0。之前已成功配置过caffe-master。
2、下载caffe-ssd
git clone https://github.com/weiliu89/caffe.git
3、修改配置文件
cp Makefile.config.example Makefile.config
gedit Makefile.config
主要去掉CuDNN注释,修改Blas路径、opencv版本、python include路径添加hdf5等。不要把caffe-master中的复制过来,两个文件夹中的Makefile和Makefile.config并不完全一样!
4、修改Makefile
为避免各类undefined reference错误,需要将某一行LIBRARIES修改为:
LIBRARIES += glog gflags protobufboost_system boost_filesystem boost_regex m hdf5_serial_hl hdf5_serialopencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio
5、make all -j8
(第二次在另一个机子配的时候,不需要修改Makefile,第3步make就能过)
这个地方我一直没法通过,在最后链接阶段总报错误:
undefined reference to google::protobuf等,有说是gcc版本问题,但还是一直解决不了。于是采用cmake方法编译。
6、make clean 把之前的build文件夹删掉。
mkdir build
cd build
cmake ..
make all -j8
make install
make pycaffe
这种方法编译没有报错。
7、下载预训练模型。
先不训练了,先测试demo能不能使用。于是下载作者已经训练好的模型,可以在官网上下到。我下载的是VGGNet/VOC0712/SSD_300×300,将其复制到models文件夹下。
8、测试webcam。
这是一个摄像头采集视频并作检测的demo。运行测试文件:
python examples/ssd/ssd_pascal_webcam.py
这时报出错误:
from caffe.model_libs import *
ImportError: No module named model_libs
真是吓哭我了,一度以为caffe-ssd编译出问题了,来来回回重新编译了很多次,无果。
后来Google了一下(神器啊),的确有人碰到这个问题,认为是路径没有加进来的问题,就相当于之前明明编译了pycaffe,却一直没法import caffe一样的问题。于是在ssd_pascal_webcam.py中把路径添加进来:
import sys
sys.path.insert(0,"/home/hunterlew/Downloads/caffe-ssd/python")
保存后终于成功运行了,泪流满面!!!效果图如下: