首页 > 解决方案 > Mobilenet 用坐标检测图像中的多个类

问题描述

我已按照教程 ( https://towardsdatascience.com/keras-transfer-learning-for-beginners-6c9b8b7143e ) 对对象进行分类。现在我有一个模型可以对给定的图像是猫、狗还是马进行分类。

现在我需要修改代码,如果给出包含猫、狗和马的图像,它应该使用边界框和概率检测所有三个

  1. 为实现此目的而添加 keras 或 tensorflow 中的任何模块

  2. 它是要更改的最后一层吗?如果是这样,那里要改变什么

目前模型看起来像这样(最后一层有类的数量)

base_model=MobileNet(weights='imagenet',include_top=False)

x=base_model.output
x=GlobalAveragePooling2D()(x)
x=Dense(1024,activation='relu')(x) 
x=Dense(1024,activation='relu')(x) 
x=Dense(512,activation='relu')(x) 
preds=Dense(3,activation='softmax')(x) ***LAST LAYER***

预测是这样的

img = image.load_img("nethorse.jpeg", target_size = (224,224))
test_image = image.img_to_array(img)
test_image = np.expand_dims(test_image, axis = 0)
test_image  =preprocess_input(test_image)
print(test_image)

表示它是马的概率为 0.99

因此,要修改代码,使现有模型不仅可以说明图像中存在什么对象,还可以给出其坐标(即用边界框检测图像中的多个对象)

标签: pythontensorflowdeep-learningconv-neural-networkobject-detection

解决方案


推荐阅读