这个例子展示了如何使用预先训练的深度卷积神经网络GoogLeNet对图像进行分类。
Googlenet已培训超过一百万只图像,可以将图像分类为1000个对象类别(例如键盘,咖啡杯,铅笔和许多动物)。该网络已经学习了丰富的特征表示,以获得各种图像。网络将图像作为输入拍摄,然后将图像中的对象的标签与每个对象类别的概率一起输出。
加载预先训练好的GoogLeNet网络。这一步需要深度学习工具箱™模型GoogLeNet网络万博1manbetx支持包。如果您没有安装所需的支持包,那么该软件将提供下载链接。万博1manbetx
您还可以选择加载一个不同的预先训练的网络来进行图像分类。为了尝试一个不同的预训练网络,在MATLAB®中打开这个示例并选择一个不同的网络。例如,你可以试试squeezenet
,这个网络甚至比googlenet
.您可以使用其他佩带的网络运行此示例。有关所有可用网络的列表,请参阅加载净化网络.
网=googlenet;
您想要分类的图像必须与网络的输入大小相同。对于GoogLeNet,第一个元素层
网络的属性是图像的输入层。网络输入大小为输入
图像输入层的属性。
InputSize = Net.Layers(1).InputSize
inputSize =1×3224 224 3
最后一个元素层
属性是分类输出层。的一会
属性包含网络学习到的类的名称。从1000个随机类名中查看10个。
一会= net.Layers .ClassNames(结束);numClasses =元素个数(类名);disp(类名(randperm (numClasses 10)))
'Papillon''eggng''Jarkfruit''Castle''''睡袋''Redshank''乐队援助''Wok''''''''''''''''''''''''''')
阅读并展示你想分类的图像。
我= imread (“peppers.png”);图imshow(我)
显示图像的大小。图像是384 × 512像素,有三个颜色通道(RGB)。
大小(我)
ans =1×3384 512 3.
使用。将图像调整为网络的输入大小imresize
.这个大小调整稍微改变了图像的宽高比。
我= imresize(我inputSize (1:2));图imshow(我)
根据应用程序的不同,您可能需要以不同的方式调整图像的大小。例如,您可以使用我(1:inputSize (1), 1: inputSize (2):)
.如果您有图像处理工具箱™,那么您可以使用imcrop
函数。
使用分类图像并计算类概率分类
.网络将图像正确分类为甜椒。即使图像包含多个对象,也会训练用于分类的网络以输出每个输入图像的单个标签。
(标签,分数)=分类(净,我);标签
标签=分类灯笼椒
显示带有预测标签的图像和具有该标签的图像的预测概率。
图imshow(i)标题(字符串(标签)+“,”+ num2str(100*scores(classNames == label),3) +“%”);
以直方图的形式显示前5个预测标签及其相关的概率。由于网络将图像分类为如此多的对象类别,而且许多类别是相似的,因此在评估网络时,通常会考虑前五名的精度。该网络将图像分类为一个高概率的甜椒。
[〜,IDX] =排序(分数,“下”);IDX = IDX(5:-1:1);ClassNamestop = Net.Layers(END).Classnames(IDX);scorestop =得分(IDX);图Barh(Scorestop)XLIM([0 1])标题('前5名预测')Xlabel('可能性') yticklabels (classNamesTop)
[1] Szegedy, Christian, Liu Wei, Jia Yangqing, Pierre Sermanet, Scott Reed, Dragomir angelov, Dumitru Erhan, Vincent Vanhoucke和Andrew Rabinovich。“更深入的回旋。”在计算机愿景和模式识别的IEEE会议的诉讼程序,pp。1-9。2015年。
[2]BVLC GoogLeNet模型.https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
DAGNetwork
|googlenet
|分类
|预测
|squeezenet