gpt4 book ai didi

image - 如何从 AlexNet 中获取多个图像标签

转载 作者:行者123 更新时间:2023-11-30 08:59:57 25 4
gpt4 key购买 nike

所以,我正在做我的硕士论文,研究超分辨率算法对 AlexNet 图像标记准确率的影响。我正在使用 Matlab 和 AlexNet 的预训练版本。

问题是,通过使用

[label, scores] = classify(net, 'image')

我只得到一个标签,而我想得到多个标签,例如五个,以及它们相应的 AlexNet 分数。

我不知道该怎么做,如果有人至少能给我一个提示,我真的非常感激。

最佳答案

scores 矩阵告诉您每个类别在对数据进行分类时的得分情况。具体来说,每列i 告诉您在尝试使用i 类对输入进行分类时,第i 类的得分如何。每一行都是 AlexNet 的一个输入。

如果您想获得每个输入的前 k 分数,您可以 sort - 特别查看第二个输出变量并单独对每一行进行排序。之后,您可以提取结果的前 k 列,该列告诉您与输入关联的前 5 个类或标签。如果您担心实际的类,请查看第一个输出。

% First classify the image(s) you would like
[label, scores] = classify(net, ...);

k = 5; % We want 5 classes
[scores_sorted, classes] = sort(scores, 2); % Sort each row individually
scores_sorted = scores_sorted(:, 1 : k);
classes = classes(:, 1 : k);

scores_sortedclasses 现在将为您提供 k 列矩阵,其中每行告诉您前 k 类为每个输入分配(存储在classes中)以及AlexNet提供的分数(scores_sorted)。

为了最终确定实际的类别是什么,当您创建 AlexNet 时,最后一层具有分类类别。假设您创建了默认网络:

net = alexnet;

...您可以通过以下方式确定每个标签 ID 的类别:

c = net.Layers(end).ClassNames;

这是一个类元胞数组,总共应有 1000 个元素。因此,鉴于我上面编写的代码中的类变量,您可以这样做:

out = net.Layers(end).ClassNames(classes);

classes 因此将用于索引元胞数组,因此它将为您提供一个 N x k 元胞数组,其中该元胞数组中的每一行告诉您AlexNet 为每个输入图像的前 k 类分配的标签。

关于image - 如何从 AlexNet 中获取多个图像标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com