SSD(Single Shot MultiBox Detector)的安装配置和运行

下文图文介绍转自watersink的博文SSD(Single Shot MultiBox Detector)不得不说的那些事

该方法出自2016年的一篇ECCV的oral paper,SSD: Single Shot MultiBoxDetector,算是一个革命性的方法了,非常值得学习和研究。

 

 论文解析:

 

SSD的特殊之处主要体现在以下3点:

(1)多尺度的特征图检测(Multi-scale),如SSD同时使用了上图所示的8*8的特征图和4*4特征图。

(2)相比于YOLO,作者使用的是卷积层来代替了YOLO的全连接层做预测。(如下图所示)

(3)SSD使用了默认的边界框+(1,2/1,3/1,1/2,1/3)6个框来做检测(aspect ratios)

 

训练过程提出了Smooth L1 loss+softmax loss,将位置定位的准确度值和得分置信度融合起来,从而使得对目标物的检测和识别都表现出state-of-the-art的效果。

整体损失函数公式如下,第一项为置信度的损失,第二项为位置的损失,N为匹配的默认边框的数目,a为平衡因子,交叉验证的时候取值为1。

位置损失的详细公式如下:

 

置信度损失的公式如下:

 

该方法包括SSD300和SSD512,2个尺度的训练模型,SSD300的速度更快,SSD512的检测效果更好。相比与其他方法,优势在于SSD的mAP高于YOLO,faster RCNN,速度虽然弱于YOLO,但是完全满足实时应用。不足之处在于对小物体的检测效果不好。VOC2007上的测试效果如下:

 

作者github提供的是Linux的版本,对caffe的源码做了很大的改动,加进了很多的层,像NormalizeLayer,PermuteLayer,FlattenLayer,PriorBoxLayer,ConcatLayer,ReshapeLayer,DetectionOutputLayer等。所以linux的童鞋最好直接下载作者的caffe进行编译。这里就不在赘述。linux下的运行效果如下,

 

1.下载源码

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd

 

2.修改配置

cp Makefile.config.example Makefile.config

我修改的几处:

# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

使用opencv 3.1但是忘了改,也能运行示例。

# Uncomment if you're using OpenCV 3
# OPENCV_VERSION := 3   

使用教育网邮箱下载的mkl。

BLAS := mkl

参考其他文章增加了hdf5的路径避免出错。

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

 

3.编译

make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
echo "export PYTHONPATH=/home/username/caffe/python" >> ~/.profile  
source ~/.profile  

 

4.测试

修改代码中的视频路径,运行代码。结果如下图所示,笔记本显卡较渣。

python examples/ssd/ssd_pascal_webcam.py  

 

 

posted on 2016-12-21 22:59  1357  阅读(1248)  评论(0编辑  收藏  举报

导航