gpt4 book ai didi

python - Keras | 对象本地化预测整个图像

转载 作者:行者123 更新时间:2023-11-30 09:05:04 25 4
gpt4 key购买 nike

我目前正在尝试使用简单的卷积神经网络来预测图像中的对象位置,但给定的预测始终是完整图像。

  • 数据集是斯坦福汽车数据集,包含约 8144 张汽车图像。

  • 我不想预测它是什么类型的汽车,只是预测它的位置

  • 特征是 200x200 灰度图像,在 [0,1] 之间重新缩放

  • 标签为 LeftX、TopY、Width、Height。也在 [0,1] 之间重新调整

这是模型:

model = Sequential()

model.add(Conv2D(64,(3,3),input_shape = (200,200,1)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=2))

model.add(Conv2D(64,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=2))

model.add(Flatten())
model.add(Dense(4))
model.add(Activation("sigmoid"))

model.compile(loss="mean_squared_error",optimizer="Adam",metrics=[])
model.fit(X,y,batch_size=32, validation_split=0,epochs=30,verbose=2)

模型的预测基本上总是:[0,0,1,1]。

最佳答案

你可以尝试这个,我已经使用预训练的 xception 网络来充当特征提取器。您可以尝试其他 Imagenet 模型,例如 inception、resnet50 等。tf.keras.applications 提供了大量预训练的卷积网络。即使数据很少,使用预训练网络也可以帮助您获得良好的结果。 more about transfer learning

from tensorflow.python.keras.layers import GlobalAveragePooling2D, Dense, Input
from tensorflow.python.keras.applications.xception import Xception

inp = Input(shape=(299, 299, 3))
base_model = Xception(include_top=False, input_tensor=inp, weights='imagenet')
y = base_model.layers[-1].output
y = GlobalAveragePooling2D()(y)
y = Dense(4, activation='sigmoid')(y)
model = Model(inputs=inp, outputs=y)

输出形状为[None, 4],表示每个标签由4个数字组成

  • x - 边界框中心的 x 坐标
  • y - 边界框中心的 y 坐标
  • w - 边界框的宽度
  • h - 边界框的高度

标签被重新缩放到 0 到 1 之间。(根据图像尺寸重新缩放)

图像的示例边界框标签 cat

[0.48, 0.4 , 0.58, 0.37]

关于python - Keras | 对象本地化预测整个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com