tensorflow - 如何从 keras 获取对象位置和预测分数
问题描述
我正在尝试将汽车类型预测为 SUV/卡车/BUS
但是,当我运行 model.predict 时,我得到的只是预测,没有对象位置。
如何从图像中获取预测分数和对象位置。
我已经尝试过 keras 中提供的示例供我学习。
#Model to identify images
def make_model(input_shape, num_classes):
inputs = keras.Input(shape=input_shape)
# Image augmentation block
x = data_augmentation(inputs)
# Entry block
x = layers.experimental.preprocessing.Rescaling(1.0 / 255)(x)
x = layers.Conv2D(32, 3, strides=2, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.Conv2D(64, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
previous_block_activation = x # Set aside residual
for size in [128, 256, 512, 728]:
x = layers.Activation("relu")(x)
x = layers.SeparableConv2D(size, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.SeparableConv2D(size, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.MaxPooling2D(3, strides=2, padding="same")(x)
# Project residual
residual = layers.Conv2D(size, 1, strides=2, padding="same")(
previous_block_activation
)
x = layers.add([x, residual]) # Add back residual
previous_block_activation = x # Set aside next residual
x = layers.SeparableConv2D(1024, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.GlobalAveragePooling2D()(x)
if num_classes == 2:
activation = "sigmoid"
units = 1
else:
activation = "softmax"
units = num_classes
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(units, activation=activation)(x)
print(x)
print(outputs)
return keras.Model(inputs, outputs)
model = make_model(input_shape=image_size + (3,), num_classes=2)
keras.utils.plot_model(model, show_shapes=True)
img_array = keras.preprocessing.image.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # Create batch axis
predictions = model.predict(img_array)[0]
解决方案
推荐阅读
- javascript - 如何使用 Javascript 创建显示更多或显示更少的可切换按钮?
- ocaml - 如何在不耗尽文件描述符的情况下将数千个文件读入内存?
- android - Firestore 卡在“进度”对话框中
- javascript - 将数据动态添加到轮播后,幻灯片效果在 react-owl-carousel 中不起作用
- java - vsphere-automation-sdk-java 未经身份验证-vSphere 6.5
- c# - 如何合并两个可观察对象并提前完成
- php - 哪个是从数据库中搜索数百万数据的最佳搜索引擎软件?
- facebook-graph-api - 为什么 Facebook 登录在模拟器和实体手机之间的行为不同
- python - 熊猫列过滤器慢
- javascript - 如何使用带有 if 条件的 JavaScript 更改背景图像?