主要内容

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

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

先决条件

  • 有关如何使用用于Android设备的Simulink支持包在Android设备万博1manbet万博1manbetxx上运行Simulink模型的详细信息,请参见Android设备入门

  • 使用硬件设置屏幕下载并安装任何ARM®计算库。本例使用的ARM计算库版本为19.05。有关硬件设置屏幕的详细信息,请参见安装Androi万博1manbetxd设备支持

所需的硬件

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

  • USB电缆

捕获地面真相数据用于训练

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

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

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

基本真实值数据包含关于数据源、标签定义和一组基本真实值标签的标记标签注释的信息。方法导出此数据贴标签机视频(计算机视觉工具箱)一个MAT文件。

要打开视频标签应用程序,在MATLAB®命令窗口中运行以下命令:

videoLabeler

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

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

2.选择添加视频然后选择该对象的视频。

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

4.在视频中使用鼠标绘制矩形ROI。

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

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

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

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

有关如何使用视频标签应用程序的详细信息,请参阅贴标签机视频(计算机视觉工具箱)而且开始与视频标签(计算机视觉工具箱)

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

训练YOLOv2对象检测器

用从摄像机捕获的视频训练YOLOv2对象检测器。的appledetect.mat文件包含导出的地面真相数据。使用这个文件来训练YOLOv2对象检测器。

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

1.的视频标签程序中指定使用视频标签程序导出的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文件,从指定的ground truth文件中创建一个图像数据存储和一个框标签数据存储训练数据objectDetectorTrainingData(计算机视觉工具箱)函数。

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

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

代码验证和验证使用PIL

您可以配置Simulink模型以在Andro万博1manbetxid设备上运行处理器在环(PIL)模拟。您可以测试和验证Simulink模型和生成的代码是否按预期在Androi万博1manbetxd设备上运行。在本例中,您可以验证深度学习算法是否准确地检测和跟踪对象。有关使用PIL进行代码验证和验证的更多信息,请参见在Android上使用PIL仿真进行代码验证

要打开Simulink模万博1manbetx型,请在MATLAB®命令窗口中运行此命令。

open_system (“androidObjectClassificationsPIL”

将Android设备连接到主机。

按照以下步骤在PIL仿真中运行Simulink模型。万博1manbetx

1.在图片来自文件(计算机视觉工具箱)块,选择您希望检测和跟踪的对象的图像。使用appleImage.png本例中的文件。

2.在建模选项卡中的Simuli万博1manbetxnk模型,选择模型设置

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

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

5.点击应用>好吧

6.在Simuli万博1manbetxnk模型中,右键单击MATLAB函数块和选择C/ c++ Code>将该子系统部署到硬件.在一个新的模型中创建了一个新的PIL版本的MATLAB函数子系统块。

7.复制此块并将其替换为Simulink模型中的MATLAB Function块。万博1manbetx

8.在模拟在Simulink模型万博1manbetx页签中,单击运行

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

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

确认“视频查看器”中的输出符合预期后,就可以继续配置androidObjectClassification万博1manbetxSimulink模型,并将其部署到Android设备上。

配置Simulink万博1manbetx模型和校准参数

本例使用了来自Android设备的Simulink支持包的预配置Si万博1manbetxmulink模型。万博1manbetx

打开Simulink模型万博1manbetx,在MATLAB命令窗口中执行此命令。

open_system (“androidObjectClassification”

1.通过USB线缆连接Android设备和主机。

2.在建模在Simulink工具万博1manbetx条的选项卡中,选择模型设置

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

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

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

注意:如果您的设备在单击后仍未列出刷新,确保已启用USB调试您的设备上的选项。要启用USB调试,输入androidhwsetup在MATLAB命令窗口中,按照屏幕上的说明进行操作。

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

7.选择代码生成>接口深度学习节,设置这些参数:

一套。目标库臂计算

b。选择ARM计算库版本类型中选择的安装硬件设置屏幕上。本例使用库版本19.05

c组。ARM计算库架构v7

8.点击应用>好吧

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

1.集决议回来.若要获取特定于设备的分辨率列表,请将已配置的设备连接到主机,然后单击万博 尤文图斯刷新

2.设置样品时间0.25秒。

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

open_system ('androidObjectClassification/RGB to Image'

转置块将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函数块使用基于yolov2的卷积神经网络(CNN)保存为MAT文件。通过Imin作为检测器网络的输入。如果探测到该物体,Imout包含被检测对象的包围框信息。

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

ImagetoRGB函数块再次将图像数据转置为R、G和B图像值。这些R、G和B图像数据值是Simulink模型中Android视频显示块的输入。万博1manbetx

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

部署Simul万博1manbetxink模型

1.在硬件选项卡中的Simuli万博1manbetxnk模型模式部分中,选择在船上跑然后点击构建、部署和启动.的androidObjectClassification应用程序自动启动。

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

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

其他可以尝试的事情

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

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

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

  • 控件中提供的输入图像的大小deeplearning功能和观察目标检测图像。

另请参阅