分类影像使用GoogLeNet

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

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

负载Pretrained网络

加载预训练GoogLeNet网络。这一步需要深度学习工具箱™模式对于GoogLeNet网络金宝app支持包。如果您没有安装必要的支持包做,那么该软件提供了下载链接。金宝app

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

网=googlenet;

要分类必须有大小与网络的输入大小相同的图像。对于GoogLeNet,的第一元件图层网络的属性是图像输入层。网络的输入的大小是InputSize图像输入层的属性。

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

的最终元件图层属性是分类输出层。该类名此层的属性包含网络上了解到的类的名称。查看10名随机类名在总共1000。

类名= net.Layers(结束).ClassNames;numClasses = numel(类名);DISP(类名(randperm(numClasses,10)))
“papillon”“eggnog”“jackfruit”“castle”“睡袋”“redshank”“Band Aid”“wok”“seat belt”“orange”

读取并调整图像大小

阅读并表明要分类的图像。

I = imread('peppers.png');图imshow(I)

显示图像的大小。该图像是384逐512像素,并且具有三个颜色通道(RGB)。

大小(I)
ANS =1×3384 512 3

通过使用图像的大小调整为网络的输入大小imresize。此调整大小稍有改变图像的高宽比。

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

根据您的应用程序,你可能要调整大小以不同的方式形象。例如,您可以通过使用裁剪图像的左上角I(1:inputSize(1),1:inputSize(2),:)。如果您有图像处理工具箱™,那么您可以使用imcrop功能。

分类图片

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

[标号,分数] =分类(净,I);标签
标签=明确的甜椒

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

图imshow(I) title(string(label) +", "+ num2str(100个*得分(类名==标签),3)+“%”);

显示前预测

显示前五大预测标签和它们相关联的概率为柱状图。由于网络图像分类到这么多的对象类别,许多类是相似的,这是常见的网络评估时要考虑的五大精度。网络分类的图像作为具有高概率的甜椒。

[~,idx] =排序(分数,“降序”);idx = idx (5: 1:1);classNamesTop = net.Layers(结束).ClassNames (idx);scoresTop =分数(idx);图barh(scoresTop) xlim([0 1])“5大预言”)包含('可能性')yticklabels(classNamesTop)

参考文献

[1] Szegedy,基督教,刘伟,杨清嘉,皮埃尔Sermanet,斯科特·里德,德拉戈米尔Anguelov先生,杜米特鲁埃尔汗,文森特Vanhoucke和安德鲁·拉比诺维奇。“要和回旋更深。”在IEEE计算机视觉和模式识别会议记录1 - 9页。2015.

也可以看看

||||

相关的话题