<新文件交换意见The Previous 深度学习的自动驾驶……>下一个> Deep Learning for Automated Driving (Part 1), Vehicle Detection 作者阿维尼希米,2017年11月3日 Look at 96 times (the past 30 days) |0个赞|2个评论 这篇文章Avinash尼希米Avi,是计算机视觉和自动驾驶的产品经理。 我经常被朋友和同事的提问如何自动驾驶系统感知环境,使“人形”决策,如何在这些系统中使用MATLAB。在接下来的两个博客文章我将解释如何使用深度学习和MATLAB解决两个常见的知觉任务自动驾驶: 车辆检测(这篇文章) 车道检测(在下一篇文章) 车辆检测目标检测定位的过程和分类对象在图像和视频。在本节中,我将使用车辆检测的例子来讲解如何使用深度学习创建一个对象探测器。相同的步骤可以用来创建任何对象探测器。下图展示了输出三个类的车辆检测器,检测器的定位和分类每种类型的车辆。 The Output of a vehicle detector that locates and classifies the company types of vehicles. 可以开始创建一个车辆检测器之前我需要一组标记的训练数据,这是一组图片注释与感兴趣的对象的位置和标签。更具体地说,有人需要筛选每一个图像或视频帧和标签的位置感兴趣的所有对象。这个过程被称为 地面实况标签 。地面实况标签通常是最耗时的部分创建一个对象探测器。下图显示了一个原始训练左边的图片,和相同的图像标记地面实况在右边。 原始输入图像(左)和输入图像与地面标记真理(右)。 可以想象,标签一套足够大的训练图像可以是一个费力和手动的过程。减少我花的时间标签数据,我用地面真理贴标签机 自动驾驶系统工具箱 ,这是一个应用程序标签地面实况,以及自动化贴标过程的一部分。 屏幕截图的地面实况贴标签机程序设计标签视频和图像数据。 自动化过程的一部分的一个方法是使用跟踪算法。我使用的追踪是 金卢卡斯预 算法(KLT)这是第一个计算机视觉算法在实际应用中使用。KLT算法将对象表示为一组特征点和跟踪帧到帧的运动。这让我们手动标签第一帧中的一个或多个对象,并使用跟踪标签的其他视频。地面真理贴标签机应用程序还允许用户导入自己的算法来自动标记。我见过的最常见的方式使用这个特性是当用户导入自己的现有的探测器将新的数据,最终帮助他们创造更多的准确的探测器。下图说明了工作流用于标签图像或视频序列使用地面实况贴标签机应用。 使用MATLAB的过程自动化地面实况标签。 标签数据存储作为一个表,列出了车辆的位置在每个时间步的训练集的视频。真理与地面标记完成,我就可以开始训练车辆检测器。在我们的例子中我估计地面真理标签过程加快了119倍。培训对我们的视频拍摄视频数据以每秒30帧,我们标记对象每4秒。这意味着我们保存的时间标签之间的119帧。这119 x储蓄是一个最好的案例我们有时必须正确的输出自动标记。 对我们的车辆检测器,我使用一个 快R-CNN 网络。让我们首先定义一个网络架构如下MATLAB代码片段所示。越快R-CNN算法分析图像的区域,因此输入层小于预期的输入图像的大小。在我们的例子中我选择32 x32像素的窗口。输入大小是执行时间之间的平衡和空间细节的数量你想要探测器来解决。 %创建图像输入层。inputLayer = imageInputLayer ([32 32 3]); The middle The layers are The core building blocks of The network, with repeated sets of 卷积,ReLU和池 The layers. For our example, I 'll use just a send the layers. You can always create a deeper network by repeating these the layers to improve accuracy or if You want to incorporate more classes into the detector. You can learn more about the company's types of the layers available in the Neural network Toolbox文档。 %定义卷积层参数。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” The parameter in" trainingOptions” 。 探测器= trainFasterRCNNObjectDetector (trainingData层,选择,…0.3“NegativeOverlapRange”, [0],……“PositiveOverlapRange”, (0.6 - 1),…“BoxPyramidScale”, 1.2); 一旦训练完成,试试在几个测试图像探测器是否正常工作。我用下面的代码来测试探测器在一个单一的形象。 %读一个测试图像。I = imread (“highway.png”);%运行探测器。[bboxes,分数]=检测(探测器,I);%注释图像中检测。I = insertObjectAnnotation (I, 'a rectangle, bboxes, scores).图imshow(我) Detected bounding boxes and scores from Faster - R - CNN vehicle detector. Once you are confident that your detector is working, I highly how testing it on a larger set of validation images using a statistical metric to the as business precision which provides a single score measure of the ability of the detector to make correct classifications (precision) and the ability of the detector to find all relevant objects (recall). 这个页面 提供了更多的信息如何评估一个检测器。 描述解决问题在这篇文章中我用MATLAB R2017b连同 神经网络工具箱 , 并行计算工具箱 , 计算机视觉系统工具箱 , 自动驾驶系统工具箱 。 | 已经关注此文章 You will be in活动供稿中看到更新。 您可能会收到电子邮件,具体取决于您的通知倾向。 类别: 深度学习 <新文件交换意见The Previous 深度学习的自动驾驶……>下一个> 另请参阅 深度学习的图像分类 博客 YOLOv2对象检测:数据标签在MATLAB神经网络 博客 在MATLAB设计对象探测器 博客 培训对象探测器使用R-CNN深度学习 groundTruth 培训对象探测器使用R-CNN深度学习 评论 要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。