主要内容

使用GoogLeNet分类图像

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

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

负荷预训练网络

加载预先训练好的GoogLeNet网络。这一步需要深度学习工具箱™模型为GoogLeNet网络金宝app支持包。如果您没有安装所需的支持包,则该软件提供下载链接。金宝app

你也可以选择加载不同的预训练网络进行图像分类。要尝试不同的预训练网络,请在MATLAB®中打开此示例并选择不同的网络。例如,你可以试试squeezenet这个网络甚至比googlenet.您可以在其他预训练的网络上运行此示例。有关所有可用网络的列表,请参见负载预训练网络

网=googlenet;

要分类的图像必须与网络的输入大小相同。的第一个元素网络的属性是图像输入层。网络输入大小为InputSize属性的图像输入层。

inputSize = net.Layers(1).InputSize
inputSize =1×3224 224 3

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

classNames = net.Layers(end).ClassNames;numClasses = numel(classNames);disp(类名(randperm (numClasses 10)))
“蝶耳犬”、“蛋酒”、“菠萝蜜”、“城堡”、“睡袋”、“红腿”、“创可贴”、“炒锅”、“安全带”、“橙子”

读取和调整图像大小

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

I = imread(“peppers.png”);图imshow(我)

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

大小(我)
ans =1×3384 512 3

使用将图像大小调整为网络的输入大小imresize.这种调整会略微改变图像的纵横比。

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

根据应用程序的不同,您可能希望以不同的方式调整图像的大小。例如,您可以使用我(1:inputSize (1), 1: inputSize (2):).如果您有图像处理工具箱™,则可以使用imcrop函数。

图像的分类

分类图像,并计算类概率使用分类.该网络正确地将图像分类为灯笼椒。训练用于分类的网络为每个输入图像输出单个标签,即使图像包含多个对象。

[label,scores] = category (net,I);标签
标签=分类甜椒

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

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

显示顶部预测

以直方图的形式显示前五个预测标签及其相关概率。由于网络将图像划分为如此多的对象类别,并且许多类别是相似的,因此在评估网络时,通常会考虑前五名的准确性。该网络以高概率将图像分类为灯笼椒。

[~,idx] = sort(scores,“下”);Idx = Idx (5:-1:1);classNamesTop = net.Layers(end).ClassNames(idx);scoresTop = scores(idx);图barh(scoresTop) xlim([0 1])“五大预测”)包含(“概率”) yticklabels (classNamesTop)

参考文献

[1]塞格迪,克里斯蒂安,刘伟,贾扬青,皮埃尔·塞尔曼内,斯科特·里德,德拉戈米尔·安格洛夫,杜米特鲁·埃尔汉,文森特·范豪克和安德鲁·拉宾诺维奇。“更深入地研究卷积。”在IEEE计算机视觉和模式识别会议论文集,第1-9页。2015.

另请参阅

||||

相关的话题