Как рассчитать форму карты объектов глубокого CNN без полного прямого прохода? - PullRequest
1 голос
/ 29 апреля 2019

Я хочу знать форму карты объектов (только высоту и ширину, , а не глубину) глубоких магистральных сетей CNN (например, resnets, inception-v3) для данного размера изображения, чтобы сгенерировать правильные якорные блоки,В некоторых реализациях тензорного потока используется опция output_stride ResNet, но я не вижу такой опции в модуле keras.applications.

В настоящий момент единственный известный мне способ найти размеры карты объектов - это выполнитьпрямой проход, который является избыточным.

Путем проб и ошибок мне удалось вывести некоторые эвристические формулы для расчета форм карт объектов VGG16 и ResNet50, которые, похоже, пока работают хорошо.Но я не могу подтвердить, что они на 100% верны.Тем не менее, я не могу вывести такую ​​формулу для модели InceptionV3.

def vgg16_output_shape(input_shape):
    x = np.asarray(input_shape).astype(int)
    return (x/32).astype(int)

def resnet50_output_shape(input_shape):
    x = np.asarray(input_shape).astype(int)
    return np.ceil(
        np.ceil(
            np.ceil(
                np.ceil(
                    np.ceil(x / 2) / 2
                ) / 2
            ) / 2
        ) / 2
    ).astype(int)

def inceptionv3_output_shape(input_shape):
    ...

Поэтому я хотел бы знать, если кто-нибудь знает способ расчета выходного размера глубокого CNN без полного прямого прохода?

PS : Я знаю, как рассчитать выходную форму one conv layer.Так как в глубоких CNN существуют сотни конвексных слоев, я бы предпочел сделать прямой проход, чем вывести формулу, используя отдельные конвивовые слои.Если бы кто-то уже делал это, скажем, для InceptionV3, это было бы здорово!

...