Стандартная реализация SSD (детектор одиночного выстрела) - PullRequest
0 голосов
/ 01 мая 2020

Я не могу понять стандартную реализацию 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 is;

# 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? Я не могу найти формулу в оригинальной статье.

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел ответ в выпуске github

ОБНОВЛЕНИЕ:

min_sizes/img_size и max_sizes/img_size означают s_k и s_k+1 соответственно. Кроме того, conv4_3 применяет s_k=0.1 вместо уравнения (4). Следовательно, все карты объектов не могут применять уравнение (4). Поэтому я думаю, что все шкалы заранее определены как min_sizes и max_sizes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...