SSD(单发探测器)的默认箱体实现。

问题描述 投票:0回答:1

我无法理解SSD的默认盒子实现。原文的公式如下。

enter image description here

w_k=s_k√a_k, h_k=s_k/√a_k

但很多SSD的实现似乎与上面的公式不同。例如 ssd.pytorch;

mean = []
for k, f in enumerate(self.feature_maps):
    for i, j in product(range(f), repeat=2):
        f_k = self.image_size / self.steps[k]
            # unit center x,y
            cx = (j + 0.5) / f_k
            cy = (i + 0.5) / f_k

            # aspect_ratio: 1
            # rel size: min_size
            s_k = self.min_sizes[k]/self.image_size
            mean += [cx, cy, s_k, s_k]

            # aspect_ratio: 1
            # rel size: sqrt(s_k * s_(k+1))
            s_k_prime = sqrt(s_k * (self.max_sizes[k]/self.image_size))
            mean += [cx, cy, s_k_prime, s_k_prime]

            # rest of aspect ratios
            for ar in self.aspect_ratios[k]:
                mean += [cx, cy, s_k*sqrt(ar), s_k/sqrt(ar)]
                mean += [cx, cy, s_k/sqrt(ar), s_k*sqrt(ar)]
# back to torch land
output = torch.Tensor(mean).view(-1, 4)

其他 ssd_keras 是。

# define prior boxes shapes
box_widths = []
box_heights = []

for ar in self.aspect_ratios:
   if ar == 1 and len(box_widths) == 0:
        box_widths.append(self.min_size)
        box_heights.append(self.min_size)
   elif ar == 1 and len(box_widths) > 0:
        box_widths.append(np.sqrt(self.min_size * self.max_size))
        box_heights.append(np.sqrt(self.min_size * self.max_size))
   elif ar != 1:
        box_widths.append(self.min_size * np.sqrt(ar))
        box_heights.append(self.min_size / np.sqrt(ar))
box_widths = 0.5 * np.array(box_widths)
box_heights = 0.5 * np.array(box_heights)

  • 问题

    什么是 s_k = self.min_sizes[k]/self.image_size ? 是什么?self.min_size * self.max_size ? 我在原论文中找不到公式。

python deep-learning
1个回答
-1
投票

我在 github 的文章中找到了答案。发出

更新。

min_sizes/img_sizemax_sizes/img_size 卑鄙 s_ks_k+1 分别是。此外,还。conv4_3 适用 s_k=0.1 而不是方程(4)。因此,所有的特征图都不能应用方程(4)。所以我认为所有的比例尺都被定义为 min_sizesmax_sizes 事先。

© www.soinside.com 2019 - 2024. All rights reserved.