<新文件交换提交<上一页 深度学习自动化驾驶...>接下来> 自动化驾驶深度学习(第1部分) - 车辆检测 张贴了Avi Nehemiah.那2017年11月3日 48意见(过去30天)| 0.喜欢| 2评论 这是一家来自尼希米·尼希米,AVI是用于计算机视觉和自动驾驶的产品经理。 我经常从朋友和同事中获取问题,就自动化驾驶系统如何感知他们的环境并制作“人类类似”决定以及如何在这些系统中使用MATLAB。在接下来的两个博客帖子上,我将解释深度学习和Matlab如何用于解决自动驾驶的两个常见的感知任务: 车辆检测(这篇文章) 车道检测(下一篇文章) 车辆检测对象检测是在图像和视频中定位和分类对象的过程。在本节中,我将使用车辆检测示例来使用如何使用深度学习来创建对象检测器。相同的步骤可用于创建任何对象检测器。下图显示了三类车辆检测器的输出,其中检测器定位并分类每种类型的车辆。 车辆检测器的输出定位和分类不同类型的车辆。 在我开始创建车辆探测器之前,我需要一组标记的训练数据,这是一个与感兴趣对象的位置和标签注释的一组图像。更具体地说,有人需要通过每个图像或视频帧筛选并标记所有感兴趣对象的位置。这个过程被称为 地面真理标签 。地面真理标签通常是创建对象探测器的最耗时的部分。下图显示了左侧的原始训练图像,以及右侧标记的地面真相的相同图像。 原始输入图像(左)和标有地面真相(右)的输入图像。 正如您可以想象的那样,标记足够大的训练图像可能是一个费力和手动的过程。为了减少我花费标签数据的时间量,我使用了地面真相贴标者 自动化驾驶系统工具箱 ,这是一个标签地面真理的应用程序以及自动化部分标签过程。 屏幕拍摄的地面真理贴标程序应用程序设计用于标记视频和图像数据。 自动执行部分过程的一种方法是使用跟踪算法。我使用的跟踪器是 Kanade Lucas Tomasi. 算法(KLT)是在现实世界应用中使用的第一台计算机视觉算法之一。KLT算法表示作为一组特征点的对象,并跟踪它们从帧到帧的移动。这使我们可以手动标记第一帧中的一个或多个对象,并使用跟踪器来标记视频的其余部分。地面真理贴标程序应用程序还允许用户导入自己的算法以自动标记。我所看到的最常用方式使用了使用的是,当用户将自己的现有探测器导入标记新数据时,这有助于它们最终创建更准确的探测器。下图说明了使用地面真实贴标程序应用程序标记一系列图像或视频的工作流程。 使用MATLAB自动化地面真理标签的过程。 标记的数据存储为表中,列出了从我们的训练集中的视频的每次视频中的车辆位置。与地面真理标签完整,我可以开始培训车辆探测器。在我们的案例中,我估计地面真理标签过程最多119倍。我们视频的训练视频数据被捕获为每秒30帧,我们每4秒标记对象。这意味着我们节省了标记在其间的119帧的时间。这119倍的节省是最好的情况,因为我们有时必须纠正自动标签的输出。 对于我们的车辆探测器,我使用了 更快的R-CNN 网络。让我们首先定义一个网络架构,如下面的Matlab代码片段中所示。更快的R-CNN算法分析图像的区域,因此输入层小于输入图像的预期大小。在我们的情况下,我选择一个32x32像素窗口。输入大小是您希望检测器解析的执行时间和空间详细信息之间的平衡。 %创建图像输入层。InputLayer = ImageInputLayer([32 32 3]); 中间层是网络的核心构建块,重复一套 卷积,释放和汇集 层。对于我们的例子,我将仅使用几层。您可以通过重复这些层来始终创建更深的网络,以提高准确性,或者要将更多的类合并到探测器中。您可以了解有关神经网络工具箱中可用的不同类型的图层的更多信息文件。 %定义卷积层参数。filtersize = [3 3];numfilters = 32;%创建中间层。Middlayers = [康波解2dlayer(过滤,numfilters,'padding',1)rululayer()卷积2dlayer(过滤,numfilters,'填充',1)rululayer()maxpooling2dlayer(3,'stride',2)]; CNN的最终层通常是一组完全连接的层和软MAX损耗层。在这种情况下,我在完全连接的层之间添加了一个Relu非线性,以改善探测器性能,因为我们为该探测器设置的训练并不像我想要的那么大。 finAllayers = [%添加完全连接的层,带有64个输出神经元。该层的输出大小%将是一个长度为64的阵列。全连接列(64)%添加Relu非线性。Rululayer()%添加最后一个完全连接的图层。此时,网络必须%产生输出,该输出可用于测量输入图像%是否属于对象类或背景之一。该测量%是使用后续损耗层进行的。全连接层(宽度(车辆达到))%添加Softmax丢失层和分类层。softmaxlayer()classificationlayer()];图层= [InputLayer Middlayers FinAllayers] 要训练对象检测器,我将“层”网络结构传递给“ TRATHFASTERRCNNOOBJECTDETECTOR.“ 功能。如果安装了GPU,则算法将默认使用GPU。如果您想在没有GPU或使用多个GPU的情况下训练,可以通过调整 “刽子果环境” 参数“ 培训选项“ 。 探测器= trainfasterrcnobjectdetector(trainingdata,图层,选项,...'负极源性游侠',[0 0.3],......'positionoverlaprange',[0.6 1],......'boxpyramidscale',1.2); 一旦完成培训,请在几个测试图像上尝试,以查看检测器是否正常工作。我使用以下代码在单个图像上测试检测器。 %读取测试图像。我= imread('highway.png');%运行探测器。[bboxes,scores] =检测(探测器,i);%注释图像中的检测。i = InsertObjectAnnotation(i,'矩形',bboxes,sicrors);figureimshow(i) 从R-CNN车辆检测器更快地检测到的边界框和分数。 一旦您有信心探测器正在运行,我强烈建议使用统计指标在更大的验证图像上测试它,例如平均精度,这提供了检测器能够进行正确分类(精度)和探测器找到所有相关对象的能力(召回)。 这个页面 提供有关如何评估探测器的更多信息。 解决我使用MATLAB R2017B的本篇文章中描述的问题 神经网络工具箱 那 并行计算工具箱 那 计算机视觉系统工具箱 ,和 自动化驾驶系统工具箱 。 | 您现在关注此博客文章 您将看到您的更新活动饲料。 您可以收到电子邮件,具体取决于您的电子邮件通知偏好。 类别: 深度学习 <新文件交换提交<上一页 深度学习自动化驾驶...>接下来> 另请参阅 深度学习图像分类 博客 YOLOV2对象检测:在MATLAB中的神经网络数据标记 博客 在Matlab中设计对象探测器 博客 更快的R-CNN示例 对象检测和语义分割的培训数据 使用R-CNN深度学习列车对象探测器 评论 要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。