CPU版SSD(Single Shot MultiBox Detector)/Caffe版本
github链接:https://github.com/weiliu89/caffe/tree/ssd
SSD是16年ECCV一篇深度学习目标检测的文章,本文主要讲如何实现
参考博文:
http://blog.csdn.net/gaohuazhao/article/details/72664145?locationNum=6&fps=1
1.下载代码
git clone https://github.com/weiliu89/caffe.git
#我这里重命名为了caffe-ssd,即后面的CAFFE_ROOT为此caffe-ssd所在目录
cd caffe-ssd
git checkout ssd #出现“分支”则说明copy-check成功
2.复制配置文件
将已经配置过的cpu版本caffe中的Makefile.config复制到此caffe的$CAFFE_ROOT
cd caffe-ssd #进入到原来的Makefile.config文件目录下
sudo cp Makefile.config /home/xxx/caffe
如果你没有配置过cpu版本的caffe,参考http://blog.csdn.net/gaohuazhao/article/details/60141474中Makefile.config的修改方式。
3.编译caffe
make -j4
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j4
# (Optional)
make runtest -j4 #出现PASSED则成功
4.下载预训练模型
来源:http://blog.csdn.net/yx2017/article/details/72870565
下载地址:链接:http://pan.baidu.com/s/1slpaEO9 密码:loxo
在caffe/models文件夹下新建文件夹,命名为VGGNet,将刚刚下载下来的文件放入这个VGGNet文件夹当中
5.下载VOC2007和VOC2012数据集在主文件夹下(即/home/xxx/caffe-ssd)新建文件夹,命名为data
cd /home/xxx/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# 解压这三个文件,按顺序依次输入以下命令
tar -xvf VOCtrainval_11-May-2012.tar #严格按照顺序
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
6.将图片转化为LMDB文件
终端输入:(注意这里的要用bash,原因:http://stackoverflow.com/questions/3411048/unexpected-operator-in-shell-programming)
参考博文:http://blog.csdn.net/shawncheer/article/details/53227212/
sudo bash ./data/VOC0712/create_list.sh
sudo bash ./data/VOC0712/create_data.sh
#生成的LMDB文件路径:
#- $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb
#- $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb
在运行第三步时如果出现no module named caffe或者是no module named caffe-proto,则在终端输入:
echo "export PYTHONPATH=$CAFFE_ROOT/python" >> ~/.profile
source ~/.profile
echo $PYTHONPATH #检查环境变量的值
7.训练模型
因为我们用的是cpu,首先修改examples/ssd/ssd_pascal.py文件
具体如何修改可参考:
http://blog.csdn.net/gaohuazhao/article/details/72664145?locationNum=6&fps=1
如果不想训练,可直接下载模型(跳到步骤8)
下面参考了博文:
http://blog.csdn.net/Jesse_Mx/article/details/52965281?locationNum=8&fps=1过程说的非常详细
8.下载训练好的SSD模型
该工具使用的模型是SSD300,下载地址:https://pan.baidu.com/s/1eSECLEU,下载完后解压,把里面的VGGNet文件夹移动到/home/mx/caffe/models/之下
9.运行程序检测单张图片
对/home/xxx/caffe-ssd/examples/images/fish-bike.jpg进行测试
要用caffe-ssd/examples/ssd_detect.ipynb进行测试,首先需要安装包Jputer
#这里临时使用了清华大学的源
$ sudo pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
$ cd /home/mx/caffe/examples # 在该目录下打开jupyter notebook
$ jupyter notebook
在jupyter notebook打开的网页中找到ssd_detect.ipynb打开
检查下面4个路径是否正确:
labelmap_file = 'data/VOC0712/labelmap_voc.prototxt'
model_def = 'models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt'
model_weights = 'models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel'
image = caffe.io.load_image('examples/images/cat.jpg')
如果检查无误,就可以开始从头shift+enter运行了,一般都会正常运行,fish-bike.jpg的检测结果如下:
单张图片CPU检测可参考:
http://m.blog.csdn.net/gaohuazhao/article/details/72676985