ssd 订阅
固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘,因为台湾英语里把固体电容称之为Solid而得名。SSD由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。其芯片的工作温度范围很宽,商规产品(0~70℃)工规产品(-40~85℃)。虽然成本较高,但也正在逐渐普及到DIY市场。由于固态硬盘技术与传统硬盘技术不同,所以产生了不少新兴的存储器厂商。厂商只需购买NAND存储器,再配合适当的控制芯片,就可以制造固态硬盘了。新一代的固态硬盘普遍采用SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2 NVME/SATA协议。 [1] 展开全文
固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘,因为台湾英语里把固体电容称之为Solid而得名。SSD由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。其芯片的工作温度范围很宽,商规产品(0~70℃)工规产品(-40~85℃)。虽然成本较高,但也正在逐渐普及到DIY市场。由于固态硬盘技术与传统硬盘技术不同,所以产生了不少新兴的存储器厂商。厂商只需购买NAND存储器,再配合适当的控制芯片,就可以制造固态硬盘了。新一代的固态硬盘普遍采用SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2 NVME/SATA协议。 [1]
信息
英文缩写
SSD
应用领域
军事、车载、工控、电力、医疗等
外文名
Solid State Disk或Solid State Drive [2]
中文名
固态硬盘/固态驱动器
组    成
由控制单元与存储单元组成
固态硬盘分类
分类方式: 固态硬盘的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。 基于闪存类:基于闪存的固态硬盘(IDEFLASH DISK、Serial ATA Flash Disk):采用FLASH芯片作为存储介质,这也是通常所说的SSD。它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡、U盘等样式。这种SSD固态硬盘最大的优点就是可以移动,而且数据保护不受电源控制,能适应于各种环境,适合于个人用户使用。 [1]  一般它擦写次数普遍为3000次左右,以常用的64G为例,在SSD的平衡写入机理下,可擦写的总数据量为64G X 3000 = 192000G,假如你是个变态视频王每天喜欢下载视频看完就删每天下载100G的话,可用天数为192000 / 100 = 1920,也就是 1920 / 366 = 5.25 年。如果你只是普通用户每天写入的数据远低于10G,就拿10G来算,可以不间断用52.5年,再如果你用的是128G的SSD的话,可以不间断用104年!这什么概念?它像普通硬盘HDD一样,理论上可以无限读写,基于DRAM类:基于DRAM的固态硬盘:采用DRAM作为存储介质,应用范围较窄。它仿效传统硬盘的设计,可被绝大部分操作系统的文件系统工具进行卷设置和管理,并提供工业标准的PCI和FC接口用于连接主机或者服务器。应用方式可分为SSD硬盘和SSD硬盘阵列两种。它是一种高性能的存储器,而且使用寿命很长,美中不足的是需要独立电源来保护数据安全。DRAM固态硬盘属于比较非主流的设备。 [1] 
收起全文
精华内容
参与话题
问答
  • SSD 记录

    2019-05-06 16:39:36
    这篇博客总结的挺好:SSD原理解读-从入门到精通 1. 对为什么设置 default box 进行了阐述 2. SSD 的本质 下面一篇博客,对文章的每一节进行了翻译及解读:论文阅读:SSD: Single Shot MultiBox ...

     

    这篇博客总结的挺好:SSD原理解读-从入门到精通

    1. 对为什么设置 default box 进行了阐述

    2. SSD 的本质

     

     

     

    下面一篇博客,对文章的每一节进行了翻译及解读:论文阅读:SSD: Single Shot MultiBox Detector 

     

    展开全文
  • ssd

    2017-05-21 09:59:41
    摘要: 配置ssd 并且整理自己的数据进行训练,调用c++ 接口来做检测分类 最近一直在看深度学习的东西,用到了ssd,上网一搜,找到一篇不错的博客,http://www.cnblogs.com/objectDetect/p/5780006.html,官网,这篇...
    摘要: 配置ssd 并且整理自己的数据进行训练,调用c++ 接口来做检测分类

    最近一直在看深度学习的东西,用到了ssd,上网一搜,找到一篇不错的博客,http://www.cnblogs.com/objectDetect/p/5780006.html官网,这篇是连安装cuda到caffe环境的一系列http://blog.csdn.net/wopawn/article/details/52302164。经过磕磕绊绊,也决定写一篇相关的博客。

    ssd的demo是介绍了在voc数据集上训练和验证,所以想要简单的使用ssd训练自己的数据,就是做成类似voc 的数据再调用ssd 中的ssd_pascal.py进行训练。这里需要说明的是ssd项目中自带的ssd_pascal.py文件会在VGG的模型上再训练,以我的理解就是在VGG的模型上做fine-tuning。


    现在从头开始教程:

    1 安装ssd

    1.1 首先需要安装有git

    sudo apt-get install git
    

    1.2 git ssd 项目

    git clone https://github.com/weiliu89/caffe.git
    cd caffe
    git checkout ssd(出现“分支”则说明copy-check成功)
    

    记得一定要用git的方法,不要直接下载caffe-master.zip这种压缩包,里面没有git的配置,没用的。

    1.3 开始编译ssd

    先安装一些依赖

    sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
    sudo apt-get install --no-install-recommends libboost-all-dev
    

    ubuntu14.04需要依赖

    sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
    

    ubuntu16.04需要cuda 8

    BLAS:可以通过

    sudo apt-get install libatlas-base-dev
    

    可以安装OpenBLAS 或者 MKL,MKL可以使CPU更好的工作。

    要python的话可能要安装

    sudo apt-get install python-pip python-numpy  python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
    

    开始编译,编译有两种办法:

    1.3.1 直接make

    cd "<你的caffe项目>"
    cp Makefile.config.example Makefile.config
    

    如果你想直接用CPU而不用GPU,进入Makefile.config将 #CPU_ONLY:=1这句去掉注释,像下面这个

    # CPU-only switch (uncomment to build without GPU support).
    CPU_ONLY := 1
    

    如果要改BLAS:

    # BLAS choice:
    # atlas for ATLAS (default)
    # mkl for MKL
    # open for OpenBlas
    BLAS := atlas
    

    然后执行

    make all -j8
    sudo make install
    make runtest (这个不一定要)
    make pycaffe
    

    1.3.2 用cmake方法安装

    cd "<你的caffe项目>"
    mkdir build
    cd build
    ccmake ..
    make -j8
    sudo make install
    make runtest
    make pycaffe
    

    如果要改BLAS和单用CPU,在ccmake .. 中选择。

    装好在之后注意配置python caffe 环境

    vim /etc/profile
    

    在最后一行添加

    export PYTHONPATH=/home/........../caffe/python:$PYTHONPATH
    

    然后更新下环境

    source /etc/profile
    

    1.4 验证pycaffe环境

    python
    import caffe
    

    如果没有问题那就是成功了

    如果有错误那么就打开主目录下的.bashrc写入那句话,再试试看。

    2 训练自己模型

    训练VOC数据的方法上面那篇博客有讲,这里不再多说。讲讲训练自己数据。

    现在来看一下voc的标签00001.xml

    <annotation>
        <folder>VOC2007</folder>
        <filename>000018.jpg</filename>
        <source>
            <database>The VOC2007 Database</database>
            <annotation>PASCAL VOC2007</annotation>
            <image>flickr</image>
            <flickrid>340537267</flickrid>
        </source>
        <owner>
            <flickrid>Kathy Stern</flickrid>
            <name>Kathy Stern</name>
        </owner>
        <size>
            <width>380</width>
            <height>285</height>
            <depth>3</depth>
        </size>
        <segmented>0</segmented>
        <object>
            <name>dog</name>
            <pose>Left</pose>
            <truncated>0</truncated>
            <difficult>0</difficult>
            <bndbox>
                <xmin>31</xmin>
                <ymin>30</ymin>
                <xmax>358</xmax>
                <ymax>279</ymax>
            </bndbox>
        </object>
    </annotation>
    

    现在主要更改的是size中的width,height,object中的name和xmin,xmax,ymin,ymax这几个东西。

    所以每幅图片都要在样子更改,上面的博客推荐了一个bbox-tool,但是对于我来说不太好用,然后就写了一个基于opencv的程序,稍后放出。

    在ssd中voc的同级目录新建一个文件夹,讲所有图片和标签都放进去,做好链接文件夹下

    • trainval.txt 存放训练用的图片路径,格式类似
      data1/image1.jpg data1/image.xml
      
    • test.txt 存放测试用的图片路径,格式和trainval.txt相同
    • test_name_size.txt 存放测试用的图片,格式类似测试 “ 图片名 高 长“
      imagetest1 300 300
      
    • labelmap_indoor.prototxt 标签的名字,注意label 0 这类一定会存在,就是图片bounding box以外的数据标签

    数据做好之后运行create_data.sh进行整理数据,create_data.sh里面可能有些路径错误,可以自行改到自己的数据目录。

    运行create_data.sh之后会在当前目录和ssd的examples下新建一个数据目录,名字是当前目录的名字。

    3 训练

    打开ssd_pascal.py需要修改的有一下几点:

    • train_data和test_data , 指向examples中你的数据,例如
      train_data = "examples/indoor/indoor_trainval_lmdb"
      # The database file for testing data. Created by data/VOC0712/create_data.sh
      test_data = "examples/indoor/indoor_test_lmdb"
      
    • num_test_image该变量修改成自己数据集中测试数据图片的数量
    • num_classes 该变量修改成自己数据集中 标签类别数量数 + 1
    • gpus = "0,1,2,3" 电脑有几个gpu就写多少个,如果有一个就写gpus="0",两个就写gpus="0,1",以此类推。

    最后到caffe的根目录运行,ps:你的ssd_pascal.py的目录是example/yourSSD/ssd_pascal.py

    python example/yourSSD/ssd_pascal.py
    

    4 测试

    有好几种测试的方法,

    4.1 python

    在caffe的根目录运行ssd_pascal_webcam.py这个文件,这是使用摄像头实时测试的软件,读取的caffemodel是在caffe/models/VGGNet/VOC0712/SSD_300x300_webcam下最新的model,所以记得在这个文件夹中放入模型。还要更改下ssd_pascal_webcam.py中label_map_file到你的labelmap_voc.prototxt

    python examples/ssd/ssd_pascal_webcam.py
    

    4.2 c++

    编译完SSD后,C++版本的的可执行文件存放目录: .build_release/examples/ssd/ssd_detect.bin

    测试命令 ./.build_release/examples/ssd/ssd_detect.bin models/VGGNet/indoor/deploy.prototxt models/VGGNet/indoor/VGG_VOC0712_SSD_300x300_iter_60000.caffemodel pictures.txt

    ssd自带ssd_detect.cpp,可以拿来使用。

    4.2.1 用qt.pro件定义中需要引入你的caffe配置,例如

    LIBS += /home/xxx/caffe/build/lib/libcaffe.so 
    
    INCLUDEPATH += /home/xxx/caffe/include
    
    INCLUDEPATH += /home/xxx/caffe/build/include
    

    可能还会有一些编译问题:

    1. error while loading shared libraries: libglog.so.0: cannot open shared object file: No such file or directory解决
      LIBS +=/usr/lib/x86_64-linux-gnu/libglog.so
      
    2. libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory解决:在/etc/ld.so.conf.d/下新建caffe.conf文件,在caffe.conf中加入到libcaffe.so.1.0.0-rc3的位置,基本上是在build的lib里。

    4.2.2 使用cmake

    如果是使用cmake,注意安装ssd的时候一定要make install

    然后CMakeLists.txt

    find_package(OpenCV REQUIRED)
    find_package(Caffe REQUIRED)
    
    
    #option (CPU_ONLY "Use CPU or use GPU" ON)
    #option (USE_OPENCV "Use CPU or use GPU" ON)
    include_directories( ${Caffe_INCLUDE_DIRS} )
    add_definitions(${Caffe_DEFINITIONS}) # ex. -DCPU_ONLY
    add_executable(ssd_detect ssd_detect.cpp )
    

    使用cpu或者gpu可以在选项里面定义。

    展开全文
  • SSD 检测原理

    千次阅读 2018-11-26 20:53:06
    SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法,速度比Faster RCNN更快,mAP优于YOLO v1。 SSD方法基于前馈卷积网络,其产生固定大小的边界框集合和框中对象类别的分数...

    SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法,速度比Faster RCNN更快,mAP优于YOLO v1。


    SSD方法基于前馈卷积网络,其产生固定大小的边界框集合和框中对象类别的分数,接着是非最大化抑制步骤以产生最终检测。

     

    SSD设计理念:

    1. 多尺度特征图检测

    在基础卷积网络提取CNN特征基础上,添加了若干层卷积,逐步缩小特征图尺度,在多个尺度上进行预测(相比YOLO v1是在一个尺度上进行预测的,SSD输入大小300×300, YOLO输入大小448×448)。

     

    2. 用于检测的卷积预测器

    在末端的若干个特征图上,使用若干个独立的3×3卷积核卷积,生成检测预测。如果特征图大小是m×n,则使用3*3卷积,在m×n个位置上分别产生位置偏移和类别概率。

     

    3. 默认框和高宽比

    在2中的m×n个位置上,预测k个不同宽高比的预测框,每个框内预测位置偏移(4个)和类别概率(c个),所以m×n的特征图上一共有m×n×k×(4+c)个输出。

    在不同尺度的特征图上应用不同尺度的默认框k,使得SSD可以更有效的离散化可能的输出边框形状空间。

     

     

    Prior Box


    Prior Box其实跟Faster R-CNN中的anchor非常像,就是特征图上的每个点投影到原始图片上的若干个大小不等的矩形框(预选框)。 anchor的产生机制是在最后一个特征图上,以每个点为中心,映射回原图像,分别取3个面积尺度和3个宽高比共计9个候选框。 

    prior Box的产生机制是在末尾的若干个不同尺度的特征图上,以每个点为中心,映射回原图像,取若干个(不同尺度特征图个数不同,4个或6个)长宽比不同的矩形框(候选框)。


    候选框中有正方形和长方形之分, 小正方形prior box的边长是min_size,大正方形的边长是min_size*max_size开方;

    同时设置一个比率aspect_ratio(如2),长方形的宽高分别是min_size除以aspect_ratio的开方,min_size乘以aspect_ratio的开方。

     

     

    min_size和max_size的大小和特征图的位置相关,越靠后的特征图,min_size越大,示例大小如下表:


    可见SSD在设计上,有意使用低层feature map检测小目标,使用高层feature map检测大目标。这也是SSD的一个突出贡献。

     

    SSD特点总结:

    1. 从YOLO v1中继承了将检测问题转化为回归问题的思路,检测步骤一次完成,不再分建议框+预测两步。

    2. 受Faster R-CNN中anchor机制的启发,提出了默认框(Prior BOx)机制。

    3. 加入基于特征金字塔的检测方式,在不同尺度探测目标。

    4. 优点:综合了Faster R-CNN的检测精度和YOLO v1的检测速度。 在不同尺度的特征图上检测目标以及(正样本)数据增广上的优化。

    5. 缺点:Prior Box中的min_size,max_size和aspect_ratio(3个与建议框有关的参数)的大小需要手工设定,并且每一层特征图上的大小都不一样,调试麻烦。另外对小目标的检测召回率弱于Faster R-CNN(作者认为是受到使用conv4_3低级的特征图,存在特征提取不充分的影响)。

    展开全文
  • SSD总结报告

    千次阅读 2018-12-07 17:00:02
    SSD算法原理、框架流程、流程图 SSD网络结构 解释SSD里的atrous 解释default bounding box生成的流程 正负样本生成: 损失函数的表达式 解释多尺度特征图的预测 Caffe训练和测试过程 与YOLO、Faster R-CNN等...

     

    目录

     

    SSD算法原理、框架流程、流程图

    SSD网络结构

    解释SSD里的atrous

    解释default bounding box生成的流程

    正负样本生成:

    损失函数的表达式

    解释多尺度特征图的预测

    Caffe训练和测试过程

    与YOLO、Faster R-CNN等的对比

    基于SSD的改进算法


    SSD算法原理、框架流程、流程图

    SSD算法主要的贡献之处:

    作者认为自己的算法之所以在速度上有明显的提升,得益于去掉了bounding box proposal以及后续的pixel或feature的resampling步骤。

    在检测速度上:比YOLOv1快;在检测精度上:能与Faster R-CNN相当。

    算法核心:在特征图上采用卷积神经网络进行预测一系列的default bounding boxes的类别以及偏移量

    在不同尺度下进行预测,得到具有不同aspect ratio的结果

    实现端到端的训练,在分辨率较低的图像上也能获得较好的结果

    SSD网络结构

    SSD的输入

    image和ground truth boxes

    SSD的输出

    类别和目标框

    SSD网络主结构

    VGG-16+增加的卷积层

    算法的结果

    对于300*300的输入,SSD可以在VOC2007 test上有74.3%的mAP,速度是59 FPS(Nvidia Titan X),对于512*512的输入, SSD可以有76.9%的mAP。

    SSD网络框架如下图所示:SSD利用astrous 算法将VGG-16最后原有的两个全连接层(fc6、fc7) 改成了卷积层并且增加了3个卷积层和一个 average pool层。

    在检测过程中:SSD算法使用conv4_3,conv7(原有的fc7),conv8_2,conv9_2,conv10_2以及pool11层提取的图像特征来进行预测,得到两个输出一个是输出分类用的confidence,每个default box生成k+1个confidence;另一个输出是对目标框位置回归的值。

    SSD算法流程:将一幅图片输入至预训练好的分类网络中提取不同尺度大小的特征信息,选取conv4_3,conv7(原有的fc7),conv8_2,conv9_2,conv10_2以及pool11层的feature map,然后在这些feature map上生成不同尺度大小的default box,分别进行检测和分类生成多个候选框,最后将不同尺度下feature map对应生成的候选框结合起来,通过非极大值抑制算法筛选得出最后的bounding box的集合,即检测结果。

    解释SSD里的atrous

    在SSD算法里作者将FC6和FC7改为卷积层,并且将Pool5从2x2-S2变换到3x3-S1。pool5这样改变这之后,后面层的感受野将改变,因此也不能用原来网络的参数进行finetune,现在既想利用已经训练好的模型进行fine-tuning,又想改变网络结构得到更加dense的score map,就必须做出相应的操作。在这种情况下就加入了Atrous,因为使用Atrous不仅能减少参数,由于一般相邻像素包含的信息相似,也能减少对冗余信息的处理。

    Atrous Convolution其实就是带洞卷积,卷积核是稀疏的。下图分别展示出了三种3种不同的卷积方式

    上图对应的卷积过程如下,可以看到a)和c)的感受野是相同的。

    解释default bounding box生成的流程

    Default box指的是在feature map的每个cell上一系列的固定大小的box。

    如上图所示,假设有两种尺度的feature map,如(b)和(a)所示,分别有64个和16个feature map cell,对于每一个cell上都会有一系列固定大小的box,称为default box,上图示例中是每个cell有4个box。

    在SSD中还有一个概念--prior box:实际中选择的default box。也就是说default box是一个概念,在SSD中实际操作时对应生成的候选框实际上是用prior box来表示的,而在理论学习中是用default box来表示feature map cell中生成的box。

    生成prior box的计算过程:

    首先在一系列feature map cell上确定中心点,在每个特征图上生成尺度不同的default box,每个特征图上的尺度计算公式如下:

    其中,m为需要计算的feature map的数目

    对于prior box的aspect ratio(横纵比):,对于时,额外增加一个default box,其相对应的尺度为:

    计算每一个default Box的参数,宽度和高度:

    通过上面的公式计算可以看出每个feature map cell会生成6种尺度的default box。每一个default box的中心为:为第个feature map的大小,且

    正负样本生成:

    在获得prior box后下一步就是将其与ground truth box进行IOU匹配,保证每一个ground truth都有相对应的prior box,匹配的规则如下:

    只要两者之间的 jaccard overlap 大于一个阈值,就表明prior box与ground truth匹配,这样就意味着每一个ground truth有多个prior box匹配。这些与groundtruth匹配的prior box就作为训练的正样本,其他的归为负样本。

    在训练过程中为保证负样本的数量过多导致样本不均衡,训练很难收敛。SSD算法中会将所有负样本的confidence loss进行排序,然后按照比例选取置信度最高的几个负样本,保证正负样本的比例为1:3。

    损失函数的表达式

    SSD算法的损失函数与Faster R-CNN的损失函数相似,都是由分类和回归两个部分组成的多任务损失函数。

    式中,代表匹配至ground truth上的prior box的数目;α则是用来调整两种损失之间的比例参数,一般地α=1

    为分类损失,是典型的softmax loss,定义如下:

    :在类别为时,第个预测框与第个真实框匹配,则的概率预测的越高,loss越小;

    :预测框里没有任何目标,则预测为背景时的概率越高,loss越小

    :概率值由softmax产生。

    式中,log是以e为底的,i表示default box的序号,j表示ground truth的序号,表示的是第i个预测框与第j个真实框是否匹配,表示第个预测框对应类别的预测概率。

    为候选框坐标损失,定义如下:

     

    式中,为补偿后的d的中心,为默认框的宽和高,表示的是在类别为时,第i个预测框与第j个真实框是否匹配,就是说当不匹配时不需要计算

     的定义如下:

    解释多尺度特征图的预测

    SSD算法中使用的是多个尺度下的feature map,选取的卷积层分别为:conv4_3,conv7(原有的fc7),conv8_2,conv9_2,conv10_2以及pool11层,对应的feature map的尺度为:38x38x512、19x19x1024、10x10x512、5x5x256、3x3x256、1x1x256,对应的default box的数目为:4、6、6、6、4、4。据此可知每个feature map对应的box总数目为:5776、2166、600、150、36、4,即我们总共可以获得8732个box

    卷积层

    conv4_3

    conv7

    conv8_2

    conv9_2

    conv10_2

    pool11

    feature map

    38x38x512

    19x19x1024

    10x10x512

    5x5x256

    3x3x256

    1x1x256

    default box

    4

    6

    6

    6

    4

    4

    box

    5776

    2166

    600

    150

    36

    4

    与YOLO的对比

    基于SSD的改进算法

    算法

    解决问题

     

    主要改进

    结果

    DSSD

     

    小目标问题

    [Deconvolutional Single Shot Detector]

    DSSD是2017 年北卡大学教堂山分校的 Cheng-Yang Fu[47]等针对SSD算法对小目标检测不够鲁棒的问题提出的改进算法,主要有两点改进:

    1)把SSD算法中的VGG网络替换成了Resent-101网络,这样能够增强检测器的特征提取能力;

    2)利用Deconvolution,参考 FPN 算法思路利用去卷积结构将图像深层特征从高维空间传递出来,与浅层信息融合,增加了上下文信息,这样能够提高浅层的表征能力,从而提高检测器对小目标的检测能力。

    DSSD的网络结构包含:属于resnet101中的卷积层,SSD算法中额外增加的5层卷积层,Prediction 模块以及Deconvolution 模块。DSSD算法是将resnet101中的两个卷积层特征中浅层特征与额外的5个卷积层特征的六层特征图输入到Deconvolution 模块中,输出修正的特征图金字塔,形成一个特征图组成的沙漏结构。最后经Prediction 模块输入给回归任务和分类任务做预测。虽然DSSD算法提高了对小目标的检测能力,但是由于引入的Resnet-101太深,检测速度相比SSD慢了很多。

     

    R-SSD

          

    小目标问题

    物体框重复问题

    [Enhancement of SSD by concatenating feature maps for object detection]

    解决了SSD算法中不同层feature map都是独立作为分类网络的输入,容易出现相同物体被不同大小的框同时检测出来的情况,还有对小尺寸物体的检测效果比较差的情况。

    R-SSD算法从两方面来改进SSD:

    1)利用分类网络增加不同层之间的feature map联系,减少重复框的出现;

    2)增加feature pyramid中feature map的个数,使其可以检测更多的小尺寸物体。

    特征融合方式采用同时利用pooling和deconvolution进行特征融合,这种特征融合方式使得融合后每一层的feature map个数都相同,因此可以共用部分参数,具体来讲就是default boxes的参数共享。

     

    MDSSD

    小目标问题

    [Multi-scale Deconvolutional Single Shot Detector for small objects]

    针对小目标: 卷积神经网络目标检测中,浅层主要负责小物体检测,因为它们具有精细的细节。然而,由于浅特征上的语义信息的不足,检测小对象实例的性能仍然不太令人满意

    通过解卷积Fusion Block将具有丰富语义信息的高级特征添加到低级特征中,值得注意的是,框架中同时对多个具有不同比例的高级特征进行了上采样,然后跳过连接以形成小对象的更具描述性的特征映射,并对这些新的融合特征进行预测。

    文中提供了三个fusion modules,其中一个示例如下:

    VOC2007: 78.6%mAP

    MS COCO test-dev2015:26.8%mAP,38.5 FPS,仅300×300输入。

    结果优于基准SSD分别为1.1和1.7分,特别是在一些小对象类别上改善了2至5分。

    Feature-Fused SSD

     

    小目标问题

    [Fast Detection for Small Objects]

    将contextual information 引入到 SSD 中 帮助SSD检测小目标。

    shallower layers 具有 contextual information ,但是没有 sematic information;deeper layers 具有 sematic information

    本文尝试了两种方式将这两种信息结合起来:concatenation module和element-sum module,即特征拼接时用concat还是sum操作。

    在VOC2007上获得的mAP分别比基线SSD高1.6和1.7分,特别是在一些小物体类别上提高2-3个点。 它们的测试速度分别为43和40 FPS,优于现有技术的去卷积单发探测器(DSSD)29.4和26.4 FPS。

    FSSD

     

    保证精度,提升速度

    [Feature Fusion Single Shot Multibox Detector]

    SSD算法是从不同卷积层中抽取不同尺度的特征直接做预测,所以没有充分融合不同尺度的特征。后续有提出DSSD,RSSD等改进方法,但是因为模型的复杂导致速度变慢很多。

    Li等人提出了FSSD算法借鉴了FPN的思想,但是又与FPN不一样,如下图可以看出,FSSD是把不同尺度的特征调整为同一个尺度再contact得到一个像素层,以这个像素层为基础层重构一个新的pyramid feature map,从而提高检测器的性能。FSSD的精度比SSD要高,但是比DSSD要低一点;FSSD的速度稍慢于SSD,但比DSSD要快不少。

     

    1. FPN(左)与FSSD(右)提取特征的流程

     

    ESSD

     

    保证精度,提升速度

    [Extend the shallow part of Single Shot MultiBox Detector via Convolutional Neural Network]

    不降低精度的情况下提高速度。与FSSD相似,ESSD也是解决上述问题。

    反卷积虽然有很好的作用,但添加过多的反卷层将不可避免地导致计算耗时的显着增加,而提供太少的语义信息肯定会失去一些检测性能。基于此作者使用了三个extension modules在ESSD结构中,使得能既扩展了适量的语义信息,获得足够好的结果又不会丢失太多的检测速度。

    extension modules具体结构:

    1)使用反卷积使得卷积层第n层和第n+1层大小相同,然后每个卷积层后面会跟着一个BN层以及一个ReLU层来细化细化学习的特征。

    2)如上所述的两个Conv-bn-relu模块位于第n层之后,用以获得与第 n+1层相同的学习能力。

    3)使用一个extended operation来获得extension features,这个操作可以是串联,相加或相乘。

    与DSSD不同的是,DSSD为每个预测层添加了残差块,ESSD只为每个预测层添加一个额外的1x1x512卷积层,以免使模型过于复杂。

    检测模型的结果可以达到79.4%mAP,比DSSD和SSD高0.8和1.9并且在Titan X GPU下测试速度为25 FPS,是原DSSD的两倍多。

    DSOD

    训练方式

    目标检测算法基本都是先在ImageNet数据集上进行预训练,然后再微调。虽然这种方法能让目标检测算法取得很好的性能,但是微调在目标检测算法上也存在着一些问题:与训练的模型大,参数也多,结构也是固定的直接用于目标检测时很难改变网络的结构,计算量也很大;预训练是分类训练,分类的目标一般与检测的目标不一样,这样会导致预训练的模型在检测上并不是最优解,只是局部最优;预训练一般是在ImageNet数据集上,所以如果遇到一些少见的检测目标,是不一定能迁移到检测模型上的。

    2017年复旦大学Shen [50]等人基于SSD算法提出了DSOD算法。DSOD算法不是在mAP上和其他检测算法做比较,看谁的算法更有效或者速度更快,而是从另一个角度切入说明fine-tune和直接训练检测模型的差异其实是可以减小的。

    DSOD算法可以看作是SSD算法与DenseNet的结合,即在SSD的特征融合方法中引入了DenseNet思想,改造了一些层的输入。通过结合DenseNet,也使得DSOD的参数数量大大减少。具体操作是根据DenseNet的设计原理,将相邻的检测结果一半一半的结合起来。

    DSOD中采用Dense Block结构,能避免梯度消失的情况。同时利用Dense Prediction结构,也能大大减少模型的参数量,特征包含更多信息。设计stem结构能减少输入图片信息的丢失,stem结构由3×3卷积和2×2的max pool层组成,其还可以提高算法检测的mAP。

     

    Tiny SSD

     

    精简模型

    [A Tiny Single-shot Detection Deep Convolutional Neural Network for Real-time Embedded Object Detection]

    降低模型的大小,将SSD模型优化到2.3M

    Tiny SSD的优化思想是基于squeezeNet的设计思想:

    1)尽量减少3×3卷积的通道

    2)尽量减少3×3卷积的输入通道

    3)尽量将下采样往后推迟

    Tiny SSD将前面的基础网络改成由10个fire model构成的网络

    Tiny SSD的型号尺寸为2.3MB(比Tiny YOLO小约26倍),而VOC 2007的mAP仍为61.3%(比Tiny YOLO高约4.2%)。

    SSD的Caffe训练和测试过程

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 睿智的目标检测16——Keras搭建SSD目标检测平台

    万次阅读 多人点赞 2020-01-30 16:23:28
    睿智的目标检测16——Keras搭建SSD目标检测平台学习前言什么是SSD目标检测算法源码下载SSD实现思路一、预测部分1、主干网络介绍2、从特征获取预测结果3、预测结果的解码4、在原图上进行绘制二、训练部分1、计算loss...
  • 详细描述了SSD的相关概念以及CF实现 SSD究竟学到了什么 SSD详细叙述
  • icarnegie SSD4所有答案

    热门讨论 2011-04-13 23:00:09
    SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4所有答案 SSD4...
  • 本课程手把手讲解Caffe SSD框架代码编译和安装过程,并详细介绍如何基于一个无人零售商品数据集来成功训练出SSD和Mobilenet SSD模型,然后将它们量化且移植到海思开发板上正确运行。 课程主要内容有: 1...
  • SSD原理解读-从入门到精通

    万次阅读 多人点赞 2018-08-27 08:00:47
    SSD原理解读-从入门到精通
  • SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面答案SSD4 人机界面...
  • 本文主要针对SSD的tensorflow框架下的实现的源码解读即对网络模型的理解。 【前言】 首先在github上下载tensorflow版的SSD repository:https://github.com/balancap/SSD-Tensorflow 同时附上论文地址:SSD 论文...
  • SSD深入浅出之SSD测试

    2018-10-17 13:46:38
    SSD深入浅出之SSD测试相关资源 本章将介绍常用的SSD测试软件,研发过程中的测试流程,常用仪器设备,以及测试方法等。
  • ssd框架的ssd_pascal_video

    2017-10-19 06:25:40
    在运行ssd_pascal_video时没有结果,使用的是作者的模型,运行ssd_pascal_score也没有问题,但是运行ssd_pascal_video的时候不是应该有视频的框弹出来吗?我运行之后就像下图这样,什么都没有弹出来,求教!! !...
  • SSD详解

    万次阅读 多人点赞 2018-03-05 21:57:25
    论文题目:SSD: Single Shot MultiBox Detector 论文链接:论文链接 论文代码:Caffe代码点击此处 This results in a significant improvement in speed for high-accuracy detection(59 FPS with mAP 74.3% ...
  • SSD1306 中文手册

    2018-06-26 14:07:39
    SSD1306是一个单片CMOS OLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。由128 segments 和64 Commons组成。该芯片专为共阴极OLED面板设计。SSD1306中嵌入了对比度控制器、显示RAM和晶振,并因此...
  • ssd8 exercise2 ssd8 exercise2 xxxcc ssd8 exercise2 ssd8 exercise2 xxxcc ssd8 exercise2 ssd8 exercise2 xxxcc ssd8 exercise2 ssd8 exercise2 xxxcc ssd8 exercise2 ssd8 exercise2 xxxcc
  • SSD(single shot multibox detector)算法及Caffe代码详解

    万次阅读 多人点赞 2017-05-31 22:55:49
    这篇博客主要介绍SSD算法,该算法是最近一年比较优秀的object detection算法,主要特点在于采用了特征融合。 论文:SSD single shot multibox detector 论文链接:https://arxiv.org/abs/1512.02325 算法概述:...
  • SSD算法的改进版之R-SSD

    万次阅读 热门讨论 2017-08-12 20:57:59
    论文:Enhancement of SSD by concatenating feature maps for object detection 论文链接:https://arxiv.org/abs/1705.09587算法详解: SSD算法在object detection领域的效果有目共睹,是proposal-free方面的...
  • SSD的配置安装与测试

    万次阅读 多人点赞 2016-07-04 18:26:37
    继yolo-darknet后,又一个SSD的配置教程,希望可以帮助大家。 注意:1、要求Ubuntu系统预先安装opencv和cuda7.5,如果您没有安装,请参考我的博客:http://blog.csdn.net/samylee/article/details/...
  • 最近想用mega8驱动新买的ssd1306,也就是Oled屏,网上51和stm32的例程很多,可是唯独不见基于AVR的例程。于是直接参照51的例程,自己写了驱动程序。编译完,下载到mega8上测试,却连亮都没亮一下。昨天检查了很多遍...
  • SSD的python执行文件ssd_pascal.py中有如下代码用于创建solver配置文件, solver = caffe_pb2.SolverParameter( train_net=train_net_file, test_net=[test_net_file], snapshot_prefix=snapshot_prefix, **...
  • # ckpt_filename = '../checkpoints/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt' isess.run(tf.global_variables_initializer()) saver = tf.train.Saver() saver.restore(isess, ckpt_filename) ``` 4、...
  • 本文章我们来介绍下0.91寸 OLED SSD1306的代码,在介绍之前,请参照前面两篇文章对OLED的概念说明: 0.91寸 SSD1306 OLED介绍(一) — 整体介绍/IIC时序介绍 0.91寸 SSD1306 OLED介绍(二) — 命令介绍 1)命令...
  • 我想实现 mobilenetv3与ssd结合,现在我已有tensorflow的ssd源码,ssd源码是vgg主网络结构 我需要把vgg改成mobilenetv3,从而实现新的ssd目标检测。 请问 我该怎么进行组装在tensorflow框架上? 是只把ssd内部的...
  • SSD算法

    2019-06-29 10:23:05
    文章目录1.目标检测的主流算法2.核心思想网络结构具体过程 1.目标检测的主流算法 two-stage 以R-CNN,Fast R-CNN,Faster R-...以YOLO、SSD等方法为代表的Single-Shot结构。该结构为真正的端到端训练。其主要思...
  • SSD 目标检测

    千次阅读 2018-09-30 17:23:57
    转载自:...SSD github : https://github.com/weiliu89/caffe/tree/ssd SSD paper :&nbsp;https://arxiv.org/abs/1512.02325 SSD eccv2016 slide pdf : http://do...
  • 我们都知道SSD拥有比HDD更快的读写速度,但SATA总线标准却拖累了SSD性能的发挥。好消息是,如今越来越多的笔记本都配备了支持PCI-E总线标准的M.2插槽,这就让更高速的NVMeSSD有了用武之地。 看到这里可能很多童鞋...
  • 目标检测算法之SSD

    万次阅读 多人点赞 2018-04-06 15:17:33
    码字不易,欢迎给个赞! 欢迎交流与转载,文章会同步发布在公众号:机器学习算法全栈工程师(Jeemy110) 目录 ...目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型:(1)two-stage方法,如R-CNN...

空空如也

1 2 3 4 5 ... 20
收藏数 23,102
精华内容 9,240
热门标签
关键字:

ssd