主要内容

在Android设备上使用深度学习检测和跟踪对象

这个例子展示了如何使用Android™设备的Simulink®支持包金宝app来部署一个金宝app深度学习算法,检测和跟踪Android设备上的对象,如手机或平板电脑。该算法使用基于resnet -18的YOLOv2神经网络对摄像机捕捉到的物体进行识别。你可以在你周围的不同物体上进行实验,看看网络在你的Android设备上检测图像的准确性。

依赖关系

这个示例使用:

  • 金宝appAndr金宝appoid设备的Simulink支持包

  • 嵌入式编码器®

  • MATLAB®Coder™深度学习库接口

  • 深度学习工具箱™

  • 面向ResNet-18网络的深度学习工具箱模型

  • 金宝app仿真软件®编码器™

  • 计算机视觉工具箱™

先决条件

  • 有关如何使用Android设备的Simulink支持包在Android设备上运金宝app行Sim金宝appulink模型的更多信息,请参见Android设备入门

  • 使用硬件设置界面下载并安装任何ARM®计算库。本例使用ARM计算库19.05版本。有关“硬件设置”屏幕的更多信息,请参见安装支持Andr金宝appoid设备

所需的硬件

  • Android设备,如手机或平板电脑

  • USB电缆

为训练获取地面真实数据

捕捉您想要检测和跟踪的对象的视频。您还可以使用自己选择的视频来遵循本例中的培训过程。您可以在不同的视角和光照条件下对一个物体进行长时间的视频捕捉,从而获得具有更好检测和识别结果的训练数据集。

捕获视频后,将MP4文件传输到主机。

出口地面真相数据的标签使用视频标签应用程序

地面真值数据包含关于数据源、标签定义和一组地面真值标签的标记标签注释的信息。属性导出该数据贴标签机视频(计算机视觉工具箱)应用程序到MAT文件中。

要打开Video Labeler应用程序,请在MATLAB®命令窗口中运行以下命令:

videoLabeler

在视频标签应用程序中遵循以下步骤:

1.在文件部分中,点击进口

2.选择添加视频并选择对象的视频。

3.在ROI标签窗格中,单击标签.创建一个矩形标签,命名,然后单击好吧.在本例中,对象具有名称苹果

4.使用鼠标在视频中绘制矩形感兴趣区域。

5.在自动贴标部分中,点击选择算法并选择点跟踪器算法。然后单击自动化.算法说明出现在右窗格中,所选标签可用于自动化。

6.在运行部分中,点击运行自动标记视频。

7.当你对算法结果满意时,在关闭部分中,点击接受

8.下出口标签中,选择到文件将标记数据导出到MAT文件,appledetect.mat

关于如何使用视频标签应用的详细信息,请参见贴标签机视频(计算机视觉工具箱)开始使用视频标签(计算机视觉工具箱)

9.保存appledetect.mat文件位于示例的工作目录中。

火车YOLOv2物体探测器

用摄像机拍摄的视频训练YOLOv2物体探测器。的appledetect.mat文件包含导出的ground truth数据。使用此文件训练YOLOv2对象检测器。

deepresnet18.m文件使用预先训练的ResNet-18神经网络作为YOLOv2检测网络的基础,对目标进行特征提取。您可以在示例文件夹结构中找到该文件。确保deepresnet18.m文件存在于示例的相同工作目录中。打开此文件并配置以下参数:

1.中使用Video Labeler应用程序导出的MAT文件的名称labelData参数。在本例中,MAT文件保存为appledetect.mat

2.中指定用于训练网络的输入图像的大小图象尺寸参数。在本例中,图像大小设置为(224、224、3)

3.属性中指定网络必须检测的对象类的数量numClasses参数。在本例中,参数设置为1来检测和追踪一个苹果。

4.指定预先训练好的ResNet-18网络层作为对象特征提取的基础网络。在这个例子中,ResNet-18是YOLOv2对象检测器的基础。

5.指定用于特征提取的网络层。在这个例子中,ResNet-18神经网络从res3b_relu层。这一层输出128个特征,激活的空间大小为28 × 28。

6.属性中指定锚框的大小anchorBoxes字段。在本例中,参数设置为(64、64)

7.使用实例创建YOLOv2对象检测网络yolov2Layers(计算机视觉工具箱)函数。

8.YOLOv2的网络架构也可以通过analyzeNetwork(深度学习工具箱)函数。特征层之后的层被删除。基础网络的特征层增加了一系列的卷积层、ReLU层、批处理归一化层以及YOLOv2变换层和YOLOv2输出层。

9.配置用于训练深度学习的ResNet-18神经网络的选项trainingOptions(深度学习工具箱)函数。

10.加载后appledetect.mat文件,创建一个图像数据存储和一个盒标签数据存储训练数据从指定的地面真理文件使用objectDetectorTrainingData(计算机视觉工具箱)函数。

11.组合数据存储后,使用trainYOLOv2ObjectDetector(计算机视觉工具箱)函数。

12.YOLOv2探测器培训完成后,保存MAT文件。在本例中,保存为detectedresnet.mat.将这个MAT文件保存在示例的当前工作目录中。

使用PIL进行代码验证和验证

您可以配置Simulink模型在Androi金宝appd设备上运行处理器在循环(PIL)模拟。您可以测试和验证Simulink模型和生成的代码是否如预期的那样在And金宝approid设备上运行。在本例中,您可以验证深度学习算法是否准确地检测和跟踪对象。有关代码验证和PIL验证的更多信息,请参阅在Android上使用PIL仿真进行代码验证和验证

要打开Simulink模金宝app型,请在MATLAB®命令窗口中运行此命令。

open_system (“androidObjectClassificationsPIL”

将您的Android设备连接到主机。

按照以下步骤在PIL仿真中运行Simulink模型。金宝app

1.在图像文件(计算机视觉工具箱)块,选择要检测和跟踪的物体的图像。使用appleImage.png文件。

2.在建模选项卡,选择金宝app模型设置

3.在“配置参数”对话框中,在左侧窗格中选择代码生成>验证

4.在先进的参数节中,设置创建块公益诉讼

5.点击应用>好吧

6.在Simuli金宝appnk模型中,右键单击MATLAB函数块选择C / c++代码>将这个子系统部署到硬件.在新的模型中创建了一个新的PIL版本的MATLAB函数子系统块。

7.复制此块,并用Simulink模型中的MATLAB函数块替换它。金宝app

8.在模拟选项卡,单击金宝app运行

9.选择允许一旦许可对话框显示在您的Android设备上。深度学习算法需要许可才能访问设备上的媒体文件。

10.的视频查看器(计算机视觉工具箱)自动打开的窗口。观察在图像中发现了苹果。

确认Video Viewer中的输出符合预期后,就可以继续配置androidObjectClassification金宝appSimulink模型并将其部署到Android设备上。

配置Simulink金宝app模型并校准参数

这个例子使用了一个来自Android设备的Simulink支持包的预金宝app配置的Simulink模型。金宝app

要打开Simulink模金宝app型,请在MATLAB命令窗口中运行此命令。

open_system (“androidObjectClassification”

1.将Android设备通过USB数据线连接到主机。

2.在建模选项卡的Simulin金宝appk工具条,选择模型设置

3.在配置参数对话框中,选择硬件实现.验证硬件板参数设置为Android设备

4.从列表下目标硬件资源中,选择设备的选择

5.从设备列表,选择您的Android设备。如果您的设备不在列表中,单击刷新

注意:如果你的设备没有列出,即使你点击刷新,确保已启用USB调试选择您的设备。要启用USB调试,输入androidhwsetup,并按照屏幕上的说明操作。

6.在配置参数对话框中,选择代码生成从左窗格和目标选择节中,设置语言c++

7.选择代码生成>接口而在深度学习段,设置以下参数:

一套。目标库臂计算

b。选择ARM计算库版本根据您在硬件设置屏幕上。本例使用的是库版本19.05

c组。ARM计算库架构v7

8.点击应用>好吧

Android Camera模块使用后置摄像头捕捉物体的视频。在“阻断参数”对话框中可以配置如下参数相机块。

1.集决议回来.要获得特定于设备的分辨率列表,请将您配置的设备连接到主机并单击金宝搏官方网站刷新

2.设置样品时间0.25秒。

打开RGB图像在MATLAB命令窗口中运行此命令。

open_system (“androidObjectClassification / RGB图像”

转置块将Android Camera块中的R, G,和B数据从大行转置到大列。然后将转置后的R G B数据输入矩阵连接块。这个块连接R, G和B图像数据来创建一个连续的输出信号,Imin.在“阻断参数”对话框中可以配置如下参数矢量连接,矩阵连接块。

1.集输入数量3..该值表示R、G和B图像数据输入。

2.集模式多维对R、G和B图像数据输入执行多维级联。

3.集连接尺寸3.指定用于连接R、G和B图像数据的输入数组的输出维数。

deeplearning函数块使用保存为MAT文件的基于yolov2的卷积神经网络(CNN)。通过Imin作为探测器网络的输入。如果检测到该对象,Imout包含被检测对象的边界框信息。

将训练YOLOv2对象检测器生成的MAT文件的名称传递给deeplearning功能块。在本例中,使用MAT文件detectedresnet.mat

ImagetoRGB函数块再次将图像数据转置为R、G和B图像值。这些R, G和B图像数据值是在Simulink模型中输入到Android视频显示块的。金宝app

视频显示块显示Android设备上对象的视频。

部署模型模型金宝app

1.在硬件选项卡中的金宝app模式部分中,选择机上运行然后点击构建、部署和启动.的androidObjectClassification应用程序自动启动。

2.将对象放置在Android设备摄像头前面并移动对象。观察被检测物体周围带有标签的边界框。

3.移动对象并在Android设备上跟踪它。

其他可以尝试的事情

  • 训练YOLOv2对象检测器检测和跟踪多个对象。

  • 使用非ResNet-18的神经网络对目标进行训练,观察所得结果的差异。

  • 在视频标签应用程序中使用不同的算法,并将结果与点跟踪器算法。

  • 控件中提供的输入图像的大小deeplearning函数,观察目标检测图像。

另请参阅