Я хочу знать форму карты объектов (только высоту и ширину, , а не глубину) глубоких магистральных сетей 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, это было бы здорово!