主要内容

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

此示例显示如何使用预先磨碎的深卷积神经网络Googlenet实时对网络摄像头进行分类图像。

使用Matlab®,简单的网络摄像头和深度神经网络来识别周围环境中的对象。此示例使用Googlenet,这是超过一百万个图像培训的预制深卷积神经网络(CNN或ConvNet),并且可以将图像分类为1000个对象类别(例如键盘,咖啡杯,铅笔和许多动物)。您可以下载Googlenet并使用MATLAB实时连续处理相机图像。

Googlenet已经了解了各种图像的丰富功能表示。它将图像作为输入,为图像中的对象提供标签以及每个对象类别的概率。您可以在周围环境中进行实验,以查看Googlenet如何分类图像。要了解有关网络对象分类的更多信息,您可以实时显示前五个类的分数,而不是最终的类决策。

加载相机和预磨损网络

连接到相机并加载佩带的Googlenet网络。您可以在此步骤中使用任何预磨损网络。该示例需要MATLAB支持包,用于USB网络摄像头,深度金宝app学习工具箱™模型对于Googlenet网络。如果未安装所需的支持包,则软件提供了下载链接。金宝app

Camera =网络摄像头;net = googlenet;

如果要再次运行该示例,请首先运行命令清晰的相机在哪里相机是与网络摄像头的连接。否则,您会看到错误,因为您无法创建与同一网络摄像头的另一个连接。

将快照分类为相机

要对图像进行分类,必须将其调整为网络的输入大小。获得前两个要素输入网络图像输入层的属性。图像输入层是网络的第一层。

InputSize = Net.Layers(1).InputSize(1:2)
InputSize = 224 224

使用预测标签及其概率从相机显示图像。在呼叫之前,必须将图像调整为网络的输入大小分类

图IM =快照(摄像机);图像(IM)IM = IMResize(IM,InputSize);[标签,得分] =分类(网络,IM);标题({char(标签),num2str(max(score),2)});

从相机中连续分类图像

要持续地将图像分类为循环中的前一步骤。在图形打开时运行循环。要停止现场预测,只需关闭数字即可。用drawn在每次迭代结束时更新图。

h =图;尽管Ishandle(h)im =快照(相机);图像(IM)IM = IMResize(IM,InputSize);[标签,得分] =分类(网络,IM);标题({char(标签),num2str(max(score),2)});drawn结尾

展示顶级预测

预测的类可以迅速改变。因此,将顶部预测一起显示顶部预测可以有助于。您可以通过绘制具有最高预测分数的类来显示前五个预测及其概率。

从相机上分类快照。使用预测标签及其概率从相机显示图像。通过使用通过使用前五个预测的概率显示直方图分数输出分类功能。

创建图形窗口。首先,调整窗口的大小以具有两倍的宽度,并创建两个子图。

h =图;H.Position(3)= 2 * H.Position(3);AX1 =子图(1,2,1);AX2 =子图(1,2,2);

在左侧子图中,将图像和分类一起显示在一起。

IM =快照(摄像机);图像(AX1,IM)IM = IMRESIZE(IM,INPUTSIZE);[标签,得分] =分类(网络,IM);标题(AX1,{CHAR(标签),NUM2STR(MAX(得分),2)});

通过选择具有最高分的类来选择前五个预测。

[〜,IDX] =排序(得分,“下降”);IDX = IDX(5:-1:1);classes = net.layers(结束).classes;classnamestop = string(类(idx));scoretop =得分(Idx);

将前五个预测显示为直方图。

Barh(Ax2,Scoretop)XLIM(AX2,[0 1])标题(AX2,'前5')Xlabel(AX2,'可能性')YTicklabels(AX2,ClassNamestop)Ax2.yaxisLocation ='对';

不断对图像进行分类并显示最高预测

要连续地将图像从相机分类并显示顶部预测,请包括循环内部的上一步。在图形打开时运行循环。要停止现场预测,只需关闭数字即可。用drawn在每次迭代结束时更新图。

创建图形窗口。首先调整窗口的大小,宽度两倍,并创建两个子图。防止轴调整大小,设置位置混合物财产'InnerPosition'

h =图;H.Position(3)= 2 * H.Position(3);AX1 =子图(1,2,1);AX2 =子图(1,2,2);Ax2.PositionConstraint =.'InnerPosition';

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

尽管ishandle(h)%显示并分类图像IM =快照(摄像机);图像(AX1,IM)IM = IMRESIZE(IM,INPUTSIZE);[标签,得分] =分类(网络,IM);标题(AX1,{CHAR(标签),NUM2STR(MAX(得分),2)});%选择前五个预测[〜,IDX] =排序(得分,“下降”);IDX = IDX(5:-1:1);scoretop =得分(Idx);classnamestop = string(类(idx));%绘制直方图Barh(Ax2,Scoretop)标题(AX2,'前5')Xlabel(AX2,'可能性')XLIM(AX2,[0 1])YTicklabels(AX2,ClassNamestop)Ax2.yaxisLocation ='对';drawn结尾

也可以看看

||

相关话题