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

加载照相机和预训练网络

连接到照相机并加载预训练的 GoogLeNet 网络。您可以在此步骤使用任何预训练网络。该示例需要 MATLAB Support Package for USB Webcams,以及 Deep Learning Toolbox™ Model for GoogLeNet Network。如果没有安装所需的支持包,软件会提供下载链接。

camera = webcam;

net = googlenet;

如果要再次运行该示例,请先运行命令 clear camera,其中 camera 是与网络摄像头的连接。否则将出现错误,因为您不能创建与同一网络摄像头的另一连接。

对照相机快照进行分类

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

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

inputSize =

224 224

显示来自照相机的图像以及预测的标签及其概率。在调用 classify 之前,必须将图像大小调整为网络的输入大小。

figure

im = snapshot(camera);

image(im)

im = imresize(im,inputSize);

[label,score] = classify(net,im);

title({char(label),num2str(max(score),2)});

a229e8a850330d3521fd57619b19c7f9.png

连续对照相机图像进行分类

要连续对照相机图像进行分类,请将前面的步骤放入一个循环。在图窗打开时运行该循环。要停止实时预测,只需关闭图窗。在每次迭代结束时使用 drawnow 更新图窗。

h = figure;

while ishandle(h)

im = snapshot(camera);

image(im)

im = imresize(im,inputSize);

[label,score] = classify(net,im);

title({char(label), num2str(max(score),2)});

drawnow

end

显示排名靠前的预测值

预测出的类可能快速更改。因此,将排名靠前的预测值显示在一起会有所帮助。您可以通过绘制预测分数靠前的类来显示排名前五的预测值及其概率。

对照相机的快照进行分类。显示来自照相机的图像以及预测的标签及其概率。使用 classify 函数的 score 输出显示排名前五的预测值的概率直方图。

创建图窗窗口。首先,调整窗口大小以使宽度增加一倍,并创建两个子图。

h = figure;

h.Position(3) = 2*h.Position(3);

ax1 = subplot(1,2,1);

ax2 = subplot(1,2,2);

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

im = snapshot(camera);

image(ax1,im)

im = imresize(im,inputSize);

[label,score] = classify(net,im);

title(ax1,{char(label),num2str(max(score),2)});

通过选择分数最高的类来选择排名前五的预测值。

[~,idx] = sort(score,'descend');

idx = idx(5:-1:1);

classes = net.Layers(end).Classes;

classNamesTop = string(classes(idx));

scoreTop = score(idx);

将排名前五的预测值显示为直方图。

barh(ax2,scoreTop)

xlim(ax2,[0 1])

title(ax2,'Top 5')

xlabel(ax2,'Probability')

yticklabels(ax2,classNamesTop)

ax2.YAxisLocation = 'right';

d478da287aa5033439598d6c714e418c.png

连续分类图像并显示排名靠前的预测值

要连续对来自照相机的图像进行分类并显示排名靠前的预测值,请将前面的步骤放入一个循环。在图窗打开时运行该循环。要停止实时预测,只需关闭图窗。在每次迭代结束时使用 drawnow 更新图窗。

创建图窗窗口。首先调整窗口大小以使宽度增加一倍,并创建两个子图。要防止坐标区大小改变,请将 PositionConstraint 属性设置为 'innerposition'。

h = figure;

h.Position(3) = 2*h.Position(3);

ax1 = subplot(1,2,1);

ax2 = subplot(1,2,2);

ax2.PositionConstraint = 'innerposition';

连续显示并分类图像,同时显示排名前五的预测值的直方图。

while ishandle(h)

% Display and classify the image

im = snapshot(camera);

image(ax1,im)

im = imresize(im,inputSize);

[label,score] = classify(net,im);

title(ax1,{char(label),num2str(max(score),2)});

% Select the top five predictions

[~,idx] = sort(score,'descend');

idx = idx(5:-1:1);

scoreTop = score(idx);

classNamesTop = string(classes(idx));

% Plot the histogram

barh(ax2,scoreTop)

title(ax2,'Top 5')

xlabel(ax2,'Probability')

xlim(ax2,[0 1])

yticklabels(ax2,classNamesTop)

ax2.YAxisLocation = 'right';

drawnow

end

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值