Keras 预测新的ImageNet图片

Keras 预测新的ImageNet图片,keras,Keras,我在预测基于ImageNet数据库的新图像时遇到问题,其中对象放置在不同的背景上。预测类在各种模型(resnet和VGG)上运行良好,但在Densenets和Inception中根本不起作用。我认为这与标签有关,但我不知道到底出了什么问题 标签的顺序从0到999(在地图中划分),并且与原始数据集的顺序相同 我已将标签更改为其他格式(例如n02676566)。这对DenseNet不起作用(Resnet仍然工作良好) 代码: model = keras.applications.densenet.D

我在预测基于ImageNet数据库的新图像时遇到问题,其中对象放置在不同的背景上。预测类在各种模型(resnet和VGG)上运行良好,但在Densenets和Inception中根本不起作用。我认为这与标签有关,但我不知道到底出了什么问题

标签的顺序从0到999(在地图中划分),并且与原始数据集的顺序相同

我已将标签更改为其他格式(例如n02676566)。这对DenseNet不起作用(Resnet仍然工作良好)

代码:

model = keras.applications.densenet.DenseNet201(weights='imagenet', classes=1000)

labels = [str(i) for i in range(0,1000)]

generator_imagenet = ImageDataGenerator().flow_from_directory(path, target_size(224,224), batch_size=64, class_mode='categorical', shuffle=True, classes=labels)

resnet18_model.compile(optimizer='SGD', loss='categorical_crossentropy', metrics=['acc'])

resnet18_model.evaluate_generator(generator_imagenet)
输出ResNet 152:

找到了243张属于1000个类的图片。[1.6771895689238245, 0.5679012397189199]

输出DenseNet 201:

找到了243张属于1000个类的图片。[15.938421453468102,0.0]


您需要使用每个
keras\u应用程序
模型提供的
preprocess\u input
功能对图像进行预处理。 添加以下更改

keras.applications.densenet import preprocess_input
generator_imagenet = ImageDataGenerator(preprocessing_function=preprocess_input).flow_from_directory(path, 
                                                          target_size(224,224),
                                                          batch_size=64,
                                                          class_mode='categorical', 
                                                          shuffle=True, 
                                                          classes=labels)