微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重塑输出尺寸以适合Keras模型

如何解决重塑输出尺寸以适合Keras模型

我有一个Keras模型,用于猫数据集的关键点检测。对于每个彩色图像,都有3个关键点以及相应的3个热图。 模型的输入图像是64、64、3 相应的输出的形状为3,64,64。

我正在通过以下功能准备裁剪和调整大小的热图:

def crop_heatmaps():

   dataset['cropped_heatmaps'] = []
   
   for i in range(len(dataset['heatmaps'])):

        cropped_heats = []
        heatmaps = dataset['heatmaps'][i]
        bb = dataset['bbs'][i]
        

        x1 = max(bb[0] - 20,0) #avoid negative coordinates of the extended bounding Box
        y1 = max(bb[1] - 20,0)
        x2 = bb[2] + 20
        y2 = bb[3] + 20

        for heat in heatmaps:

            cropped_heat = heat[y1:y2,x1:x2]
            resized_heat = cv2.resize(cropped_heat,(64,64))
            #plt.imshow(resized_heat)

            cropped_heats.append(resized_heat)

            cropped_heatmaps = np.array(cropped_heats)
            
            dataset['cropped_heatmaps'].append(cropped_heats)

我创建了2个用于输入和输出的dataimageGenerator,并将它们压缩在一起。

train_generator = zip(img_train_generator,heatmaps_train_generator)

history = model.fit((pair for pair in train_generator),epochs=30,validation_data=(),verbose=1
                  )

拟合模型时出现此错误不兼容的形状:[128,3,64]与[128,64]

模型如下:

input_1(InputLayer)[[None,64,64,3)] 0


block1_conv1(Conv2D)(无,64,64,64)1792


block1_conv2(Conv2D)(无,64、64、64)36928


block1_pool(MaxPooling2D)(无,32,32,64)0


block2_conv1(Conv2D)(无,32、32、128)73856


block2_conv2(Conv2D)(无,32、32、128)147584


bottleneck_1(Conv2D)(无,32、32、160)5243040


bottleneck_2(Conv2D)(无,32、32、160)25760


upsample_1(Conv2DTranspose)(无,64,64,3)1920

我尝试过

np.reshape(cropped_heatmaps,3))

但是它不起作用。如何重塑热图以获得64、64、3? (3个频道)

解决方法

如果要更改轴1和2 ip,可以使用: np.moveaxis(x,1,2)

示例:

import numpy as np

x = np.zeros((128,64,3,32))
print(x.shape)

y = np.moveaxis(x,1,2)
print(y.shape)

出局:

(128,32)
(128,32)
>>> 

具有(64,3)至(3,64)

可以使用:

import numpy as np

x = np.zeros((64,3))
print(x.shape)

y = np.moveaxis(x,-1,0)
print(y.shape)

出局:

(64,3)
(3,64)
>>> 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。