主要内容

使用Googlenet对图像进行分类

此示例显示了如何使用经过验证的深卷积神经网络Googlenet对图像进行分类。

Googlenet已接受了一百万张图像的培训,可以将图像分为1000个对象类别(例如键盘,咖啡杯,铅笔和许多动物)。该网络已经学习了广泛图像的丰富功能表示。该网络将图像作为输入,然后输出图像中对象的标签,以及每个对象类别的概率。

负载预估计的网络

加载预验证的Googlenet网络。此步骤需要深度学习工具箱™模型对于Googlenet网络金宝app支持包。如果您没有安装所需的支持软件包,则该软件提供了下载链接。金宝app

您还可以选择加载一个不同的预贴网络进行图像分类。要尝试不同的预预性网络,请在MATLAB®中打开此示例,然后选择其他网络。例如,您可以尝试挤压,一个甚至比Googlenet。您可以使用其他验证的网络运行此示例。有关所有可用网络的列表,请参见负载预审慎的网络

net =Googlenet;

您要分类的图像必须具有与网络输入大小相同的大小。对于Googlenet,网络的属性是图像输入层。网络输入大小是输入图像输入层的属性。

inputsize = net.layers(1).inputsize
inputsize =1×3224 224 3

最终元素属性是分类输出层。这classNames该层的属性包含网络学到的类的名称。查看总计1000中的10个随机类名称。

classNames = net.layers(end).classNames;numClasses = numel(classNames);disp(classNames(randperm(numclasses,10)))
'papillon''鸡蛋''菠萝蜜''Castle'“睡袋”“ Redshank”“乐队辅助”“ WOK”“安全带”“橙色”

阅读和调整图像大小

阅读并显示要分类的图像。

i = imread('peppers.png');图Imshow(i)

显示图像的大小。该图像为384 by-512像素,具有三个颜色通道(RGB)。

尺寸(i)
ans =1×3384 512 3

通过使用精加工。调整大小稍微改变了图像的纵横比。

i = imresize(i,InputSize(1:2));图Imshow(i)

根据您的应用程序,您可能需要以不同的方式调整图像大小。例如,您可以使用I(1:InputSize(1),1:InputSize(2),:)。如果您有图像处理工具箱™,则可以使用Imcrop功能。

分类图像

对图像进行分类并使用类概率计算分类。网络将图像正确分类为铃铛胡椒。即使图像包含多个对象,也训练了用于分类的网络,以输出每个输入图像的单个标签。

[标签,分数] =分类(net,i);标签
标签=分类灯笼椒

用预测的标签显示图像和具有该标签的图像的预测概率。

图IMShow(i)标题(字符串(标签) +“,”+ num2str(100*分数(classNames ==标签),3) +“%”);

显示顶部预测

将前五名的标签及其相关的概率显示为直方图。由于网络将图像分类为许多对象类别,并且许多类别相似,因此在评估网络时通常考虑前五名的准确性是很常见的。该网络将图像分类为具有很高可能性的铃铛胡椒。

[〜,idx] = sort(得分,“下降”);IDX = IDX(5:-1:1);classNamestop = net.layers(end).classNames(idx);SCORESTOP = SCORES(IDX);图BARH(SCORESTOP)XLIM([0 1])标题(“前5个预测”)xlabel('可能性')yticklabels(ClassNamestop)

参考

[1] Szegedy,Christian,Wei Liu,Yangqing Jia,Pierre Sermanet,Scott Reed,Dragomir Anguelov,Dumitru Erhan,Vincent Vanhoucke和Andrew Rabinovich。“卷积更深入。”在IEEE计算机视觉和模式识别会议论文集,第1-9页。2015。

也可以看看

||||

相关话题