SSD算法priorbox的理解

之前看了很多SSD的博客,关于prior box的地方大部分都是照着论文翻译了一下,但是实际的代码中并不是完全按照论文的,特此记录一下自己的理解。

SSD算法priorbox的理解_第1张图片

SSD的大致流程:

  1. 输入一幅图片(300x300),将其输入到预训练好的分类网络(改进的传统的VGG16 网络)中来获得不同大小的特征映射;
  2. 抽取Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2层的feature map,然后分别在这些feature map层上面的每一个点构造6个不同尺度大小的Default boxes。然后分别进行检测和分类,生成多个初步符合条件的Default boxes;
  3. 将不同feature map获得的Default boxes结合起来,经过NMS(非极大值抑制)方法来抑制掉一部分重叠或者不正确的Default boxes,生成最终的Default boxes 集合(即检测结果);

在生成priorbox时,论文中是根据以下公示计算的:

如果按照论文中的话,m=6,这样得到每个的尺度就不是[30, 60, 111, 162, 213, 264]了,实际是怎么计算的呢?

实际上第一个尺度并不是按照公式得到的,而是直接让它等于30, 也就是说尺度是30/300=0.1,在使用上面的公式的时候,m=5,计算第二个尺度的时候,S2 = Smin + (Smax - Smin) / (5-1)  * (1-1)=0.2,这里的k=1,相当于第一个尺度其实是脱离了公式单独给出的。

为什么尺度是按51递增的呢?因为(0.95-0.2)/4约等于0.17,300*0.17=51

在生成box的时候,对conv4_3来说,首先是30*30(Sk*Sk)的一个,然后是sqre(30*60)的一个,这个是另外增在的,即sqri((Sk*Sk+1)),这两个都是长宽比为1.

另外再按照长宽比是2和3设置。

 

代码与数据下载地址:https://mianbaoduo.com/o/bread/Z5qblZ0=

 

创作不易,如果您觉得有用,可以来点赞助,一百两百不嫌多,少的一毛两毛也不嫌少。

SSD算法priorbox的理解_第2张图片

 

 

 

 

 

 

你可能感兴趣的:(深度学习,1024程序员节)