我是靠谱客的博主 粗心星星,最近开发中收集的这篇文章主要介绍浅谈SSD检测算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 什么是MobileNet-SSD

SSD本身就是一个基于VGG16的网络,MobileNet-SSD 顾名思义就是这两个网络的组合,具体怎样组合详见网络结构图,下面详细介绍SSD的算法原理及SSD的结构。

 

 

  1. SSD算法的主要网络结构是VGG16,只是将最后两个全连层改成卷积层,并又增加了4个卷积层来构造网络结构。
  2. 对5种不同的卷积层的输出(feature map)分别用两个不同的3x3卷积核进行卷积,一个输出分类用的confidence,每个default box(实际上是prior box)生成的21个类别(在VOC数据集上的训练为例)的confidence,另一个输出回归用的location,每个box生成4个坐标值(x,y,w,h)。

Priorbox:目标的预选框,得到预选框,后续就可以通过softmax分类

  1. 这5种feature map还经过priorbox 层生成的 priorbox(即坐标)。每个feature map层中的default box的数量在caffe 中是给定的即8732个,计算如下:

38x38x4+19x19x6+10x10x6+5x5x6+3x3x4+1X1X4=8732。最后将前面三个计算结构合并,然后传给loss层。

 

注:5种不同的卷积层大小分别为:38x38x(512ch)、19x19x(1024ch)、10x10x(512ch)、

 

训练时同样为conv1_1,conv1_2,conv2_1,conv2_2,conv3_1,conv3_2,conv3_3,conv4_1,conv4_2,conv4_3,conv5_1,conv5_2,conv5_3(512),fc6经过3*3*1024的卷积(原来VGG16中的fc6是全连接层,这里变成卷积层,下面的fc7层同理),fc7经过1*1*1024的卷积,conv6_1,conv6_2(对应上图的conv8_2),conv7_1,conv7_2,conv,8_1,conv8_2,conv9_1,conv9_2,loss。然后针对conv4_3(4),fc7(6),conv6_2(6),conv7_2(6),conv8_2(4),conv9_2(4)的每一个再分别采用两个3*3大小的卷积核进行卷积,这两个卷积核是并列的(括号里的数字代表prior box的数量,可以参考Caffe代码,所以上图中SSD结构的倒数第二列的数字8732表示的是所有prior box的数量,是这么来的38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+1*1*4=8732),这两个3*3的卷积核一个是用来做localization的(回归用,如果prior box是6个,那么就有6*4=24个这样的卷积核,卷积后map的大小和卷积前一样,因为pad=1,下同),另一个是用来做confidence的(分类用,如果prior box是6个,VOC的object类别有20个,那么就有6*(20+1)=126个这样的卷积核)。

 

 

最后

以上就是粗心星星为你收集整理的浅谈SSD检测算法的全部内容,希望文章能够帮你解决浅谈SSD检测算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部