我正在研究图像分类问题(多类)。 我使用的是使用keras的resnet50模型(https://keras.io/applications/#classify-imagenet-classes-with-resnet50)以及经过预训练的数据库“ imagenet”
我正在获取传递给模型的图像的输出标签。
但是现在, 我拥有自己的数据集的图像数据和标签数据。
当我将图像传递给resnet50模型时,它会返回已经受过训练的imagenet标签。现在,在这里,我希望将输出作为我自己的标签(已存在于数据集中)而不是获取imagenet标签。
如何在keras中使用imagenet db对resnet50模型中的标签进行微调
我已经尝试过单独使用resnet50模型,并且效果很好。但是,如何将输出更改为我自己的标签,而不是imagenet预先训练的标签。
from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np
import os
model = ResNet50(weights='imagenet')
path='/Users/resnet-sample/'
img_path=os.listdir(path)
count=0
for i in img_path:
img = image.load_img(path+i, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
print('Predicted:', decode_predictions(preds, top=1)[0], i)
count=count+1
print(preds)
示例:
我有一个jpg格式的大象图像,并在我的数据集中将其标记为“大象”。
当我将此图像传递给使用imagenet预训练的db的resnet50模型时,收到的输出是“非洲大象”(imagenet标签)。
因此,我不想将imagenet标签作为输出,而是希望将其调整为数据集中的'elephant'作为标签。
因此,不确定如何微调将输出作为我的标签而不是imagenet标签的最后一层。
请帮助我。
谢谢
Srknt73
答案 0 :(得分:0)
weights
参数应为None
(随机初始化),imagenet
(在ImageNet上进行预训练)或要加载的权重文件的路径。因此,您将给出包含数据集标签的文件的路径