Я пытаюсь закодировать YOLOV1 в Keras, и я использую VGG16, который принимает (224,224,3), в то время как ввод (448, 448, 3) (это размер, используемый авторами), поэтому я добавил Conv2D и слой MaxPooling для преобразования 448 в 224. Однако, когда я использую plot_model, входные и выходные формы слоев Conv и MaxPooling в середине - все это вопросительный знак (?).
введите описание изображения здесь
Вот мой код:
base_model = VGG16(
input_shape=backbone_img_shape,
# input_shape=img_shape,
include_top=False,
weights='imagenet')
# pdb.set_trace()
img_input = Input(shape=img_shape)
arch = layers.Conv2D(64, 3, padding='same', activation='relu') (img_input)
arch = layers.MaxPooling2D() (arch)
for i, layer in enumerate(base_model.layers[2:]):
arch = layer(arch)
# arch = base_model(img_input)
arch = layers.Flatten() (arch)
arch = layers.Dense(4096, activation='relu') (arch)
arch = layers.Dropout(0.5) (arch)
arch = layers.Dense((grid_num_per_axis**2)*(num_bbox_per_grid*5 + n_cls)) (arch)
arch = layers.Reshape(
(grid_num_per_axis, grid_num_per_axis, num_bbox_per_grid*5 + n_cls)) (arch)
model = Model(inputs=img_input, outputs=arch)
model.summary()
# pdb.set_trace()
model.compile(
# optimizer=SGD(lr=0.001, momentum=0.9),
optimizer='adam',
loss=yolov1_loss)
tf.keras.utils.plot_model(model, to_file='haha.png', show_shapes=True)
, где backbone_img_shape = (224,224,3) и img_shape = (448,448,3). Я думаю, что что-то не так, потому что, например, слой max_pooling2d имел размер (?, 224, 224, 64), но у более поздних слоев должно было быть что-то похожее вместо них (?). Пожалуйста, помогите мне, большое спасибо.