python-3.x - Image_classification 使用 resnet50 模型和带有我的自定义标签的 imagenet db
问题描述
我正在研究图像分类问题(多类)。我正在使用 resnet50 模型(https://keras.io/applications/#classify-imagenet-classes-with-resnet50)以及使用 keras 的预训练数据库“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 预训练数据库的 resnet50 模型时,我收到的输出是“African-Elephant”(imagenet-label)。
因此,我不想将 imagenet 标签作为输出,而是将其调整为“大象”作为我数据集中的标签。
所以,不知道如何微调最后一层,将输出作为我的标签而不是 imagenet 标签。
请帮我解决这个问题。
谢谢,
Srknt73
解决方案
weights
参数应该是None
(随机初始化)、 (ImageNet 上的imagenet
预训练)或要加载的权重文件的路径。因此,您提供包含数据集标签的文件的路径
推荐阅读
- azure - 将 AzureRm 迁移到 Az 的问题
- workflow - alfresco 直接从文档库启动工作流程
- git - 如何将特定文件从 Azure Repos 复制到 unix 机器
- javascript - 单击包含特定类的div中的任何位置时触发事件?(通过谷歌标签管理器)
- nativescript - NativeScript 中的不同屏幕尺寸
- mysql - 如果它具有相同的日期,我如何使用 foreach 并隐藏其他结果?
- r - 使用 r 替换 json 文件中的空括号
- excel - 可以在数组公式中使用 INDIRECT 或替代方法来引用封闭的外部工作簿吗?
- android - 专注于 AutoCompleteTextView 在 Android TV 设备上不显示软键盘
- excel - 我的 VBA excel 代码在 Mac Excel 上运行,但不在 Windows Excel 2016 上运行