我在预测基于ImageNet数据库的新图像时遇到了问题,在这个数据库中,物体被放置在不同的背景上。预测类在各种模型(ResNets和VGG)上工作得很好,但是对于Densenet和Inception,它根本不起作用。我想这和标签有关,但我不知道到底出了什么问题。
标签的排序从0到999 (按地图划分),顺序与原始数据集相同。
我已经更改为其他格式的标签(例如n02676566)。这对DenseNet不起作用(ResNets仍然很好)。
代码:
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
发布于 2019-09-10 12:15:46
您需要使用每个preprocess_input模型提供的preprocess_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)https://stackoverflow.com/questions/57869293
复制相似问题