主要内容

使用深度学习摄像头图像进行分类

这个例子展示了如何从一个摄像头图像分类实时使用卷积神经网络GoogLeNet pretrained深。

使用MATLAB®,一个简单的摄像头,深层神经网络识别对象在你的周围。这个示例使用GoogLeNet, pretrained深卷积神经网络(CNN或事先)已经在超过一百万个图像和训练可以分类图像到1000年对象类别(如键盘、咖啡杯、铅笔,和许多动物)。你可以下载GoogLeNet并使用MATLAB实时不断处理摄像机图像。

GoogLeNet学到丰富的特性表现为广泛的图像。需要的图像作为输入,并提供一个标签图像中的对象,每个对象的类别的概率。你可以实验对象在你的周围,看看准确GoogLeNet分类图像。了解更多关于网络的对象分类,可以显示实时得分为五大类,而不只是决定最后一个类。

加载摄像头和Pretrained网络

连接相机和负载pretrained GoogLeNet网络。您可以使用任何pretrained网络在这一步。例子需要MATLAB支持USB摄像头,包和深度学习工具箱金宝app™模型GoogLeNet网络。如果你没有安装所需的支持包,然后软件提供一个下载链接。金宝app

相机=摄像头;网= googlenet;

如果你想再次运行这个例子,第一次运行该命令清晰的相机在哪里相机是连接摄像头。否则,你会看到一个错误,因为你不能创建另一个连接到相同的摄像头。

分类快照从相机

对图像进行分类,必须调整输入网络的大小。的前两个元素InputSize图像的属性输入层的网络。图像输入层的第一层是网络。

inputSize = net.Layers (1) .InputSize (1:2)
inputSize = 224 224

显示图像的相机与预测标签及其概率。你必须调整图像的输入规模网络之前调用分类

图我=快照(相机);图像(im) im = imresize (im, inputSize);(标签,分数)=(净,im)进行分类;标题({char(标签),num2str (max(分数),2)});

从相机连续图像进行分类

分类图片的相机不断,包括前面的步骤在一个循环。运行循环图是开放的。停止现场预测,简单地关闭图。使用drawnow在每次迭代更新图。

h =图;ishandle (h) im =快照(相机);图像(im) im = imresize (im, inputSize);(标签,分数)=(净,im)进行分类;标题({char(标签),num2str (max(分数),2)});drawnow结束

显示前预测

预测的类可以迅速改变。因此,它可以帮助显示预测在一起。您可以显示五大预测及其概率通过绘制类预测最高的分数。

分类的快照照相机。显示图像的相机与预测标签及其概率。显示一个直方图的概率预测使用的前五位分数的输出分类函数。

创建图窗口。首先,调整窗口宽度的两倍,并创建两个次要情节。

h =图;h.Position (3) = 2 * h.Position (3);ax₁=情节(1、2、1);ax2 =情节(1、2、2);

在左边的次要情节,显示图像和分类。

我=快照(相机);图像(ax₁, im) im = imresize (im, inputSize);(标签,分数)=(净,im)进行分类;标题(ax₁, {char(标签),num2str (max(分数),2)});

选择五大预测通过选择得分最高的类。

[~,idx] =排序(得分,“下”);idx = idx (5: 1:1);类= net.Layers . class(结束);classNamesTop =字符串(类(idx));scoreTop =分数(idx);

作为一个直方图显示五大预测。

barh (ax2 scoreTop) xlim (ax2,[0 1])标题(ax2,“五大”)包含(ax2,“概率”)yticklabels (ax2 classNamesTop) ax2。YAxisLocation =“对”;

连续图像进行分类,并显示前预测

分类图片的相机不断和显示前预测,包括前面的步骤在一个循环。运行循环图是开放的。停止现场预测,简单地关闭图。使用drawnow在每次迭代更新图。

创建图窗口。第一个改变窗口的大小,宽度的两倍,创建两个次要情节。防止轴调整,设置PositionConstraint财产“innerposition”

h =图;h.Position (3) = 2 * h.Position (3);ax₁=情节(1、2、1);ax2 =情节(1、2、2);ax2。PositionConstraint =“innerposition”;

连续显示和分类图像与直方图的五大预测。

ishandle (h)%显示和图像进行分类我=快照(相机);图像(ax₁, im) im = imresize (im, inputSize);(标签,分数)=(净,im)进行分类;标题(ax₁, {char(标签),num2str (max(分数),2)});%选择五大预测[~,idx] =排序(得分,“下”);idx = idx (5: 1:1);scoreTop =分数(idx);classNamesTop =字符串(类(idx));%绘制柱状图barh (ax2 scoreTop)标题(ax2,“五大”)包含(ax2,“概率”)xlim (ax2 [0, 1] yticklabels (ax2 classNamesTop) ax2。YAxisLocation =“对”;drawnow结束

另请参阅

||

相关的话题