利用GoogLeNet对图像进行分类

这个例子展示了如何使用预训练的深卷积神经网络GoogLeNet对图像进行分类。

GoogLeNet已经接受了超过一百万张图片的训练,可以将图片分成1000个对象类别(如键盘、咖啡杯、铅笔和许多动物)。该网络已经学习了大量图像的丰富特征表示。该网络将图像作为输入,然后输出图像中对象的标签以及每个对象类别的概率。

负荷预训练网络

加载经过预训练的谷歌网络。这一步需要深入学习工具箱™ 模型谷歌网络万博1manbetx支持包。如果未安装所需的支持软件包,则该软件提供下载链接。

您也可以选择加载不同的预训练网络进行图像分类。要尝试不同的预训练网络,请在MATLAB®中打开此示例并选择不同的网络。例如,您可以尝试挤压网,一个比古格伦. 您可以使用其他预先训练的网络运行此示例。有关所有可用网络的列表,请参见加载预训练网络.

净值=古格伦;

要分类的图像的大小必须与网络的输入大小相同。对于GoogLeNet来说网络的属性是图像输入层。网络输入大小是输入大小图像输入层的属性。

输入大小=净层(1) .输入大小
输入大小=1×3224 224 3个

最后一个元素属性是分类输出层。这个类名此层的属性包含由网络学习的类的名称。查看1000个类名中的10个随机类名。

类名=净层(end).ClassNames;numClasses=numel(类名);disp(类名(randperm(numClasses,10)))
“papillon”“蛋酒”“菠萝蜜”“城堡”“睡袋”“红胫”“创可贴”“炒锅”“安全带”“橙色”

读取并调整图像大小

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

I=读('胡椒.png');图imshow(一)

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

尺寸(一)
答复=1×3384 512 3个

通过使用调整大小. 调整大小会稍微改变图像的纵横比。

I=imresize(I,inputSize(1:2));图imshow(I)

根据应用程序的不同,您可能需要以不同的方式调整图像的大小。例如,可以使用I(1:输入大小(1),1:输入大小(2),:). 如果你有图像处理工具箱™,然后您可以使用作物功能。

分类图像

对图像进行分类并使用分类. 该网络将图像正确地分类为贝尔胡椒。分类网络被训练为为每个输入图像输出一个标签,即使图像包含多个对象。

[标签,分数]=分类(净,I);标签
标签=绝对的甜椒

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

图imshow(I)title(字符串(标签)+", "+num2str(100*scores(classNames==label),3分)+"%");

显示顶部预测

将前五个预测标签及其相关概率显示为直方图。由于网络将图像分为许多对象类别,并且许多类别是相似的,所以在评估网络时通常会考虑前五个精度。该网络以很高的概率将图像分类为贝尔胡椒。

[~,idx]=排序(分数,“下降”);idx=idx(5:-1:1);类名称top=净层(结束).ClassNames(idx);scoresTop=scores(idx);figure barh(scoresTop)xlim([0 1])标题('前5个预测')xlabel公司('概率')yticklabels(类名称顶部)

工具书类

[1] 斯泽吉、克里斯蒂安、刘炜、贾扬庆、皮埃尔·塞尔马内特、斯科特·里德、德拉戈米尔·安圭洛夫、杜米特鲁·二罕、文森特·万霍克和安德鲁·拉比诺维奇。”随着卷积的加深IEEE计算机视觉与模式识别会议纪要,第1-9页。2015年。

另见

||||

相关主题