Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何从AlexNet获取多个图像标签_Image_Matlab_Machine Learning_Neural Network_Computer Vision - Fatal编程技术网

Image 如何从AlexNet获取多个图像标签

Image 如何从AlexNet获取多个图像标签,image,matlab,machine-learning,neural-network,computer-vision,Image,Matlab,Machine Learning,Neural Network,Computer Vision,因此,我正在写一篇硕士论文,研究超分辨率算法对AlexNet图像标记准确率的影响。我正在使用Matlab和预先训练过的AlexNet版本 问题是,通过使用 [label, scores] = classify(net, 'image') 我只得到一个标签,而我希望得到多个标签,例如,五个,以及AlexNet的相应分数 我不知道怎么做,如果有人能给我一个提示,我会非常感激。分数矩阵告诉你每个班级在分类数据时的分数。具体地说,每列i告诉您在尝试使用classi对输入进行分类时,i第th类的分数是如

因此,我正在写一篇硕士论文,研究超分辨率算法对AlexNet图像标记准确率的影响。我正在使用Matlab和预先训练过的AlexNet版本

问题是,通过使用

[label, scores] = classify(net, 'image')
我只得到一个标签,而我希望得到多个标签,例如,五个,以及AlexNet的相应分数


我不知道怎么做,如果有人能给我一个提示,我会非常感激。

分数矩阵告诉你每个班级在分类数据时的分数。具体地说,每列
i
告诉您在尝试使用class
i
对输入进行分类时,
i
第th类的分数是如何公平的。每行是AlexNet的一个输入

如果您想获得每个输入的前
k
分数,您可以具体查看第二个输出变量,并对每行进行单独排序。之后,您可以提取出结果的第一列
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\u sorted
classes
现在将为您提供
k
列矩阵,其中每行告诉您为每个输入分配的前
k
类(存储在
classes
中)以及AlexNet提供的分数(
scores\u sorted

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

net = alexnet;
。。。您可以通过以下方式确定每个标签ID的类:

c = net.Layers(end).ClassNames;
这是一个类的单元数组,总共应该有1000个元素。因此,给定我上面编写的代码中的classes变量,您可以这样做:

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

classes
将被用来索引到单元格数组中,它将为您提供一个
nxk
单元格数组,其中该单元格数组中的每一行告诉您AlexNet为每个输入图像的顶部
k
类分配的标签。

哇,这很快,非常感谢:)我知道分数矩阵与不同的课程相关,但我不知道如何关联。它们是否以某种方式与预先训练过的AlexNet的1000个类(或语法集)列表相关联?有没有办法将类映射到分数?
classes
将为您提供一个整数索引,您可以使用该索引将AlexNet提供的实际分类数据编入索引。例如,如果AlexNet将输出分配为类400,这意味着它属于类别400,假设您使用了ILSVRC2010数据。已经为您完成了将类映射到分数的操作
scores
为您提供为AlexNet分配的分数,
classes
为您提供每个类如何为输入分配相应的分数。问题是,使用matlab的
classify
函数时,我只得到一个标签(即一个类或语法集),但我不知道如何获得更多标签。您似乎认为我可以得到一个名为
class
的变量,其中所有类都将根据ILSVRC2010进行定义,但我不知道如何实现。如果您能告诉我如何在matlab中实现,我将不胜感激。真的非常感谢你想要帮助我:)我已经告诉过你怎么做了。但如果你真的想让我详细说明,这超出了你问题的原始范围。创建AlexNet时,最后一层具有分类类别。假设您创建了默认网络:
net=alexnet,您可以通过以下方式确定每个标签ID的类:
c=net.Layers(end).ClassNames。这是一个类的单元数组,总共应该有1000个元素。因此,给定我上面编写的代码中的
classes
变量,您可以这样做:
out=net.Layers(end).ClassNames(classes)
(以下继续)。
因此将用于索引到单元格数组中,它将为您提供一个
N x k
单元格数组,其中该单元格数组中的每一行告诉您AlexNet为每个输入图像的顶部
k
类分配的标签。