Image_classification 使用 resnet50 模型和带有我的自定义标签的 imagenet db

Posted

技术标签:

【中文标题】Image_classification 使用 resnet50 模型和带有我的自定义标签的 imagenet db【英文标题】:Image_classification using resnet50 model with imagenet db with my custom labels 【发布时间】:2020-01-07 00:26:50 【问题描述】:

我正在研究图像分类问题(多类)。 我正在使用 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

【问题讨论】:

【参考方案1】:

weights 参数应该是None(随机初始化)、imagenet(ImageNet 上的预训练)或要加载的权重文件的路径。因此,您提供包含数据集标签的文件的路径

【讨论】:

以上是关于Image_classification 使用 resnet50 模型和带有我的自定义标签的 imagenet db的主要内容,如果未能解决你的问题,请参考以下文章

R:使用 R 更新 SQL 表循环

R语言pacman包管理R编程语言需要的包实战:使用p_load函数安装和加载多个R包使用p_unload函数卸载多个R包使用p_update函数更新过期的R包

如何在 ui.R 中读取 TextInput,在 global.R 中使用此值处理查询并使用 Shiny 在 server.R 中显示

R语言—R.matlab包安装及使用

在 R 版本 3.4.4 中使用 R 包“效果”

R笔记使用R语言进行异常检测