MATLAB Mobile - 使用预训练网络对手机拍摄的图像进行分类

系列文章目录


前言

此示例说明如何使用深度学习对移动设备摄像头采集的图像进行分类。

在您的移动设备上安装和设置 MATLAB® Mobile™。然后,从 MATLAB Mobile 的“设置”登录 MathWorks® Cloud。

在您的设备上启动 MATLAB Mobile。


一、在您的设备上安装 MATLAB Mobile

Apple 的 App Store® 和 Google Play® 中提供了 MATLAB® Mobile™ App。

要在您的设备上下载 MATLAB Mobile App,请执行以下操作:

  1. 在您的设备上启动 App Store 或 Google Play。

  2. 使用关键字 MATLAB Mobile 在商店中搜索。

  3. 要开始在您的设备上免费安装 App,请执行以下操作:

    • 在 Android 设备上:点击安装

    • 在 Apple 设备上:点击下载图标。在某些情况下,iTunes 应用程序可能要求您输入密码来完成交易。

  4. 安装完成后,您可以点击打开以在您的设备上启动 MATLAB Mobile。

对于 Apple 设备,您还可以从您计算机上的 iTunes 软件访问 App Store。

至此页面下载并安装 MATLAB Support Package for Android Sensors 工具箱。

MATLAB Support Package for Android Sensors - File Exchange - MATLAB Central (mathworks.cn)icon-default.png?t=N7T8https://ww2.mathworks.cn/matlabcentral/fileexchange/47618-matlab-support-package-for-android-sensors

二、创建与手机摄像头的连接

命令屏幕上,创建一个 mobiledev 对象 m

m = mobiledev
m = 
mobiledev with properties:

                   Connected: 1
            AvailableCameras: {'back' 'front'}
                     Logging: 0
            InitialTimestamp: ''

   AccelerationSensorEnabled: 0
AngularVelocitySensorEnabled: 0
       MagneticSensorEnabled: 0
    OrientationSensorEnabled: 0
       PositionSensorEnabled: 0

Supported functions

AvailableCameras 属性指示该设备具有 'back' 和 'front' 摄像头。创建与 'back' 摄像头的连接。

cam = camera(m,'back')
cam = 
  Camera with properties:

                    Name: 'back'
    AvailableResolutions: {'640x480'  '1280x720'}
              Resolution: '640x480'
                   Flash: 'off'
               Autofocus: 'on'

摄像头属性提供关于图像分辨率、自动对焦和闪光灯设置的信息。

三、加载预训练网络并采集图像

需要至此页面下载安装 Deep Learning Toolbox Model for GoogLeNet Network 工具箱

https://ww2.mathworks.cn/matlabcentral/fileexchange/64456-deep-learning-toolbox-model-for-googlenet-networkicon-default.png?t=N7T8https://ww2.mathworks.cn/matlabcentral/fileexchange/64456-deep-learning-toolbox-model-for-googlenet-network

命令屏幕上,使用 Deep Learning Toolbox™ 加载预训练的 GoogLeNet 网络。

nnet = googlenet;

使用 snapshot 函数和手动快门模式从摄像头采集单个图像。摄像头预览打开后,您可以移动您的移动设备来捕获所需的视野。对于本例,捕获要分类的对象的图像。准备好后,按快门按钮采集图像。

img = snapshot(cam,'manual');

 调整图像大小以匹配网络的输入大小。GoogLeNet 的输入大小是 224×224。使用 image 在 MATLABMobile 中预览图像。

img = imresize(img,[224,224]);
image(img)

四、分类并显示采集的图像

使用来自 Deep Learning Toolbox 的 classify 对所采集图像中的对象进行分类。

label = classify(nnet,img)
label = 

  categorical

     coffee mug 

此对象被分类为咖啡杯。使用标签作为图窗标题预览图像。

image(img)
title(char(label));

 

五、编写函数对图像进行分类

您可以在 MATLABMobile 中编写一个函数来执行前面所有步骤,以对图像进行分类。

文件屏幕上,在 MATLABDrive™ 文件夹中创建一个新脚本。将文件命名为 camnet.m。按照以下方式定义 camnet 函数并保存文件。

function value = camnet(cam,nnet)
    img = snapshot(cam,'manual');
    pic = imresize(img,[224,224]);
    value = classify(nnet,pic);
    image(pic)
    title(char(value))
end

命令屏幕上,创建 mobiledev 对象。然后创建 camera 对象。

m = mobiledev;
cam = camera(m,'front');

 加载预训练的 GoogLeNet 网络。

nnet = googlenet;

 调用 camnet 函数。

label = camnet(cam,nnet)

 摄像头预览会在您的移动设备上打开。移动您的移动设备摄像头,指向您要分类的对象。按快门按钮捕获图像。捕获图像后,您可以查看图窗。图窗标题显示对象的预测标签。

 


http://www.niftyadmin.cn/n/5281372.html

相关文章

复合分位回归的求解

复合分位回归 类似分位回归的&#xff0c;给定分位数序列 0 < τ 1 < τ 2 < ⋯ < τ K < 1 0<\tau_1<\tau_2<\cdots<\tau_K<1 0<τ1​<τ2​<⋯<τK​<1&#xff0c;复合分位回归的目的不再是在一个分位点上最小化损失函数&…

基于JSP+Servlet+Mysql的调查管理系统

基于JSPServletMysql的调查管理系统 一、系统介绍二、功能展示1.项目内容2.项目骨架3.数据库3.登录4.注册3.首页5.系统管理 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于JSPServlet的调查管理系统 项目架构&#xff1a;B/S架构 开发语言&#…

如果您在 Ubuntu 上完成了交叉编译,并希望将程序部署到目标设备上运

如果您在 Ubuntu 上完成了交叉编译&#xff0c;并希望将程序部署到目标设备上运行&#xff0c;您可以通过以下步骤实现&#xff1a; 确保目标设备与 Ubuntu 主机通过网络连接。在目标设备上安装与交叉编译工具链相匹配的运行时环境。这可能涉及安装特定版本的库、依赖项等。您…

ztree选中回显到ztree树上

点击修改&#xff0c;让数据显示到树形结构上边 $(".updateSupplyBtn").click(function (){var ztreeIds $("#sortId").val(); if(ztreeIds.trim()!""){ var ztree $.fn.zTree.getZTreeObj("menuTree"); var ztreeId ztreeIds.s…

QT编写应用的界面自适应分辨率的解决方案

博主在工作机上完成QT软件开发&#xff08;控件大小与字体大小比例正常&#xff09;&#xff0c;部署到客户机后&#xff0c;发现控件大小与字体大小比例失调&#xff0c;具体表现为控件装不下字体&#xff0c;即字体显示不全&#xff0c;推测是软件不能自适应分辨率导致的。 …

ACM32G1x3有那些优势?适用于那些产品上?

ACM32G1x3优势 • 320KB 程序Flash64KB SRAM&#xff0c;跑RTOS程序开发更加方便 • 从外挂Flash通过DMA搬运图片数据到PSRAM&#xff0c;无需打断程序运行 • 120MHz M33内核&#xff0c;处理性能佳 • 集成2路CAN接口&#xff0c;适合工控等需要CAN接口的场景 • QS…

Java网络编程TCP多线程实现服务端接受多个客户端的信息

服务线程 import java.io.DataInputStream; import java.io.InputStream; import java.net.Socket;public class ServerReaderThread extends Thread{private Socket socket;public ServerReaderThread(Socket socket){this.socket socket;}Overridepublic void run(){try{/…

ffmpeg教程笔记(C++ffmpeg库应用开发)命令行使用篇——第二章:FFmpeg 工具使用基础——第二节:ffprobe常用命令

文章目录 2.2 ffprobe 常用命令ffprobe -show_packets input.mp4ffprobe -show_data -show_packets input.mp4ffprobe -show_format output.mp4ffprobe -show_frames input.flvffprobe -show_streams input.flv格式化输出&#xff08;XML、INI、JSON、CSV、FLAT等&#xff09;f…