<新文件交换意见<前一 深度学习的自动驾驶……>下一个> 深度学习的自动驾驶(第1部分)-车辆检测 发布的阿维尼希米,2017年11月3日 (30天)| 76年视图0喜欢|2的评论 这篇文章Avinash尼希米Avi,是计算机视觉和自动驾驶的产品经理。 我经常被朋友和同事的提问如何自动驾驶系统感知环境,使“人形”决策,如何在这些系统中使用MATLAB。在接下来的两个博客文章我将解释如何使用深度学习和MATLAB解决两个常见的知觉任务自动驾驶: 车辆检测(这篇文章) 车道检测(在下一篇文章) 车辆检测目标检测定位的过程和分类对象在图像和视频。在本节中,我将使用车辆检测的例子来讲解如何使用深度学习创建一个对象探测器。相同的步骤可以用来创建任何对象探测器。下图展示了输出三个类的车辆检测器,检测器的定位和分类每种类型的车辆。 车辆检测器的输出定位和分类不同类型的车辆。 可以开始创建一个车辆检测器之前我需要一组标记的训练数据,这是一组图片注释与感兴趣的对象的位置和标签。更具体地说,有人需要筛选每一个图像或视频帧和标签的位置感兴趣的所有对象。这个过程被称为 地面实况标签 。地面实况标签通常是最耗时的部分创建一个对象探测器。下图显示了一个原始训练左边的图片,和相同的图像标记地面实况在右边。 原始输入图像(左)和输入图像与地面标记真理(右)。 可以想象,标签一套足够大的训练图像可以是一个费力和手动的过程。减少我花的时间标签数据,我用地面真理贴标签机 自动驾驶系统工具箱 ,这是一个应用程序标签地面实况,以及自动化贴标过程的一部分。 屏幕截图的地面实况贴标签机程序设计标签视频和图像数据。 自动化过程的一部分的一个方法是使用跟踪算法。我使用的追踪是 金卢卡斯预 算法(KLT)这是第一个计算机视觉算法在实际应用中使用。KLT算法将对象表示为一组特征点和跟踪帧到帧的运动。这让我们手动标签第一帧中的一个或多个对象,并使用跟踪标签的其他视频。地面真理贴标签机应用程序还允许用户导入自己的算法来自动标记。我见过的最常见的方式使用这个特性是当用户导入自己的现有的探测器将新的数据,最终帮助他们创造更多的准确的探测器。下图说明了工作流用于标签图像或视频序列使用地面实况贴标签机应用。 使用MATLAB的过程自动化地面实况标签。 标签数据存储作为一个表,列出了车辆的位置在每个时间步的训练集的视频。真理与地面标记完成,我就可以开始训练车辆检测器。在我们的例子中我估计地面真理标签过程加快了119倍。培训对我们的视频拍摄视频数据以每秒30帧,我们标记对象每4秒。这意味着我们保存的时间标签之间的119帧。这119 x储蓄是一个最好的案例我们有时必须正确的输出自动标记。 对我们的车辆检测器,我使用一个 快R-CNN 网络。让我们首先定义一个网络架构如下MATLAB代码片段所示。越快R-CNN算法分析图像的区域,因此输入层小于预期的输入图像的大小。在我们的例子中我选择32 x32像素的窗口。输入大小是执行时间之间的平衡和空间细节的数量你想要探测器来解决。 %创建图像输入层。inputLayer = imageInputLayer ([32 32 3]); 中间层是核心网络的构建块,重复设置 卷积,ReLU和池 层。对于我们的示例,我将使用几层。你可以创建一个更深层次的网络通过重复这些层以提高准确性或如果你想在探测器中加入更多的类。您可以了解更多关于不同类型的层神经网络工具箱中可用文档。 %定义卷积层参数。filterSize = 3 [3];numFilters = 32;%创建中间层。middleLayers = [convolution2dLayer (filterSize numFilters,“填充”,1)reluLayer () convolution2dLayer (filterSize numFilters,“填充”,1)reluLayer () maxPooling2dLayer(3“大步”2)]; CNN的最后一层通常是一套完整的连接层和层softmax损失。在本例中,我添加了一个ReLU完全连接层提高探测器性能之间的非线性自我们的训练集探测器并没有和我一样大。 finalLayers =[%添加一个与64年完全连接层神经元的输出。这一层的输出大小%将数组长度为64。fullyConnectedLayer(64) %添加ReLU非线性。reluLayer() %添加最后一个完全连接层。在这一点上,网络必须%产生输出,可以用来衡量是否输入图像%属于其中一个类或对象的背景。这层测量%通过随后的损失。fullyConnectedLayer(宽度(vehicleDataset)) %添加一层一层和分类将softmax损失。classificationLayer softmaxLayer () ()];层= [inputLayer middleLayers finalLayers] 培训对象探测器,我通过“层”网络结构” trainFasterRCNNObjectDetector” 函数。如果你安装了GPU,算法将默认使用GPU。如果你想训练没有GPU或者使用多个GPU,可以通过调整 “ExecutionEnvironment” 参数” trainingOptions” 。 探测器= trainFasterRCNNObjectDetector (trainingData层,选择,…0.3“NegativeOverlapRange”, [0],……“PositiveOverlapRange”, (0.6 - 1),…“BoxPyramidScale”, 1.2); 一旦训练完成,试试在几个测试图像探测器是否正常工作。我用下面的代码来测试探测器在一个单一的形象。 %读一个测试图像。I = imread (“highway.png”);%运行探测器。[bboxes,分数]=检测(探测器,I);%注释图像中检测。我= insertObjectAnnotation(我,“矩形”,bboxes分数);图imshow(我) 发现边框和成绩更快R-CNN车辆检测器。 一旦你相信探测器工作时,我强烈推荐测试它在更大的组验证图像使用统计指标如平均精度提供了一个分数测量探测器的能力做出正确的分类(精度)和探测器的能力找到所有相关对象(回忆)。 这个页面 提供了更多的信息如何评估一个检测器。 描述解决问题在这篇文章中我用MATLAB R2017b连同 神经网络工具箱 , 并行计算工具箱 , 计算机视觉系统工具箱 , 自动驾驶系统工具箱 。 | 你现在下面这篇博客 你将看到在你更新活动提要。 你可以接收电子邮件,取决于你通知偏好。 类别: 深度学习 <新文件交换意见<前一 深度学习的自动驾驶……>下一个> 另请参阅 深度学习的图像分类 博客 YOLOv2对象检测:数据标签在MATLAB神经网络 博客 在MATLAB设计对象探测器 博客 快R-CNN例子 自动化对象检测地面实况标签 培训对象探测器使用R-CNN深度学习 评论 留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。