• 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  

  • 相关阅读:
    RabbitMQ in Action(5): Clustering and dealing with failure
    RabbitMQ in Action (2): Running and administering Rabbit
    [转]Setting Keystone v3 domains
    Openstack中RabbitMQ RPC代码分析
    RabbitMQ in Action (1): Understanding messaging
    [转]Understanding OpenStack Authentication: Keystone PKI
    neutron的基本原理
    nova vnc proxy基本原理
    sersync+rsync做实时同步
    使用rsync备份数据
  • 原文地址:https://www.cnblogs.com/qw12/p/6209451.html
Copyright © 2020-2023  润新知