我是靠谱客的博主 朴实灯泡,最近开发中收集的这篇文章主要介绍无人驾驶之MATLAB无人驾驶工具箱学习(1),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

更新完显卡驱动后,视频可以自动导入了,继续码。2018.08.11

1 坐标系转换

ADST(Automated Driving System Toolbox)中的坐标系

ADST中的坐标系:

  • 世界坐标系(world),所有车辆及其传感器都建立其上的固定坐标系。
  • 车辆(Vechicle):固定在车身上。有代表性地,车辆坐标系建立在车辆后轴中点处的地面上。
  • 传感器(Sensor):明确具体的传感器,如相机或雷达等。
  • spatial(空间坐标系?):明确被相机捕捉到的图像。空间坐标中的位置用像素单位进行表示。

世界坐标系

所有车辆、传感器及相关坐标系均建立在世界坐标系上。在全局路径规划、定位导航及驾驶情景生成中非常重要。

车辆坐标系

在ADST中,车辆坐标系固连在自主车辆(ego vehicle)上。术语“自主车辆(ego vehicle)”包含感知周围环境传感器的车辆。x轴为汽车前进的方向,y轴指向车辆前进方向的左侧,z轴垂直于地面向上,符合右手坐标系。坐标系原点位于后轴中点下方的大地上。坐标系的位置的单位用米表示。单个传感器的返回值被转换到车辆坐标系下,以使他们表示在同一个参考坐标系中。

在全局路径规划、定位及导航、驾驶场景生成中,车辆的状态可以用车辆的位姿[x,y,θ]表示。

传感器坐标系

一个自动驾驶系统可以包含位移车辆任何位置的多个传感器。每一个传感器坐标系的位置由其坐标系原点确定。如摄像头的坐标系原点位于镜头中心,z为沿着镜头的方向。

空间坐标系

空间坐标系可以以比像素坐标更小的粒度确定一个图像中的一个位置。在像素坐标系中,一个像素被认为是一个离散单元,唯一地被整数行列坐标确定,如(3,4)。在空间坐标系中,图像中的位置可按照部分像素(partial pixels)进行表示,如(3.3,4.7)。

更多空间坐标系信息可以参考“Spatial Coordinates”(Image Process ToolBox)。

2 地面实况标记及验证

时序自动算法(Temporal Automation Algorithms)

GTL(Ground Truth Labeler)app可以创建和导出特定自动算法,来自动标记数据。自动算法可是时间独立(time-independent )也可以时间相关( time-dependent)。时间独立算法,可以在每个时刻或每个图独立操作。时间相关则依赖于执行的时间戳。比如,跟踪算法(比如内置点跟踪器(build-in point tracker)),需要用到前一个时刻的跟踪才能跟踪当前时刻的物体。

类继承(Class Inheritance)

如果算法是实时的,需要继承类

vision.labeler.AutomationAlgorithm
vision.labeler.mixin.Temporal
// example
classdef MyCustomTemporalAlg<vision.labeler.AutomationAlgorithm && vision.labeler.mixin.Temporal

如果算法为时间独立的,需要继承类

vision.labeler.AutomationAlgorithm
// example
classdef MyCustomNonTemporalAlg < vision.labeler.AutomationAlgorithm

开启实时特性

继承类temporal mixin可以访问诸如StartTimeCurrentTimeEndTime等属性,以设计基于时间的算法。详情参阅vision.labeler.mixin

用GTL创建一个时序自动算法

只有GTLapp同时支持时序和非时序自动算法。Imagine Labeler APP只支持非时序自动算法。

为了用GTLapp创建一个时序自动算法,通过在matlab中键入命令行

groundTruthLabeler

打开。点击Select Algorithm > Add Algorithm > Create new algorithm打开模板。

为视频或图像序列定义地面实况数据

概览

打开该APP后,每次load视频,matlab就会崩溃,搞得我也和崩溃。不再尝试了。遇到同样问题的小伙伴有解决方案的,也希望交流一下。

matlab出现出现上述崩溃时,可能是由于电脑驱动的问题。更新完显卡驱动后,matlab正常。

GTL(Ground Truth Labels)提供了一种标记多边形兴趣区域(ROIs,regions of interest)的简单方法,矩形ROIs,像素ROIs,和在视频或图像序列中的情景标签。

GTL定义

标签定义描述
特征描述
ROI标签一个矩阵、多边形、或像素区域对应的标签。标签包含类似于“Vehicle”或你定义的ROI名称。
ROI分级d对应于部分ROI标签的标签。每一个子标签属于一个特定标签。子标签可以值用于矩形或线ROIs。子标签下不能再有子标签。
属性s属性可以标签更深一层的分类。可以认为属性是在场景中无法标签化但是想和标签连续起来的性质。假设已经有一个车辆标签的情况下想要在情景中标记一辆红色的汽车。你可以给车辆标签创建属性如车辆类型(汽车)和颜色(红)。属性仅仅只能用于矩形、线型或子标签。
场景标签g给自然场景的属性,如晴天。YOU  can associate this label with a frame(坐标系?不太懂).

 

 

 

 

 

 

 

 

 

 

用GTLapp,可以:

  • 可以交互地确定矩形和折线型ROI和场景标签。用矩形ROI可以标记物体如车辆、行人或路标等。用折线ROI可以标记车道边界和护栏。用像素标签可以标记背景、道路或建筑物等区域。用场景标签可以标注灯光、天气或车道变换等的属性。
  • 用内置检测或跟踪算法自动标记ROI或场景标签。
  • 编写或导入或自定义自动算法;来标记ROI或场景标签。
  • 导出地面实况标签以供系统验证或用来训练物体检测。

打开GTL

  • matlab工具栏,在Apps标签,Automotive下,点击app图标。
  • matlab command Window中,键入
    groundTruthLabeler

     

加载视频或图像序列,导入标签

可以加载:

  • 数据资源(Data source):加载视频文件或图像序列或自定义读取函数。视频必须能够被函数VideoReader可读的。图像序列必须放置在一个文件夹中、按照时间标签排序,并且必须被imread函数可读。如何导入数据更多信息了参见“User CustomData Source Reader for Ground Truth Labeling”。
  • 标签定义(label definition):加载先前定义在文件中已保存的标签集。标签定义详细说明了名称和类别。
  • 会话(Session):加载先前保存的会话。

可以导入:

  • 导入标签(Import Labels):从MATLAB workspace 或先前输出的m文件中导入ROI和情景标签。导入的标签必须为groundTruth类。

定义ROI标签定义(define ROI Label Definitions)

GTL提供三种方式标记情景,矩形、线型、或选择像素。在标记视频或图片前,必须首先定义每一个标签的类别。矩形或线型标签可以创建子标签并为他们设置属性。比如,在一个场景中标记vehicle,接着标记vehicle类型的属性,如van、truck、sedan、等等。可以用字符串形象标记车辆的颜色,或者用列表属性给定一个颜色的列表。该app还运行给像素集合赋标签。见“Label pixels for Semantic Segmentation”(计算机视觉工具箱Computer vision toolbox)。

Tip:创建标签前,尝试组织你想要跟踪的标签、子标签及其属性的方案。可以任务标签集子标签为你可以在ROI附近画的东西。比如,你可以在一个汽车周五画一个矩形,但是不能在一个颜色周围画出一个矩形。但是,你可以用一个属性标记汽车的颜色。

对于子标签,可以任务他们是父标签的组件的标签。比如,汽车的前灯,因此前灯就是一个恰当的子标签。

标签的准则为:

  • 标签可以有子标签。
  • 子标签不可以有子标签。

一个有子标签和属性的标签的例子

可以关联一个独有的属性给标签和子标签。该例展示了一个标签“Vehicle”,有两个属性(vehicleColor和vehicleType)。同样标签(vehicle)有一个子标签(后刹车灯,rearBrakeLight),并且他有独立的属性(shapeOfLight和occluded)

打羽毛球球去啦,回来再码!2018.08.11

MATLAB又抽风了,只能硬翻了!2018.08.13

添加ROS标签、子标签及属性

选择“Label”,然后选择标签的类型(矩形、线型或像素)。给标签进行命名,也可以对标签进行描述。

只有矩形和线型ROI标签允许添加子标签及属性。

为了添加子标签,在“ROI Label Definition”窗格中选择该标定的名称,并点击“Sublabel”,输入名称、类型及可选的描述。该APP将该子标签与你选择的标签进行关联。为了显示某个标签的子标签和属性,可以在“ROI Label Definition”窗格中将标签展开。可以给任一个标签添加多个子标签,并且不能给子标签添加子标签。

为了给一个正方形、线型标签或子标签添加属性,从“ROI Label Definition”窗格中选择该标签或子标签,从数值型、字符串、逻辑值或列表中选择属性的类型,并可以添加描述。

创建情景标签定义

用情景标签定义情景的附加标签。比如,可以捕获诸如晴天、雨天或黄昏等条件。在“Scene Label Definition”窗格中,点击“Define new scene label”按钮,并输入名称及可选的描述。可以选择只在当前帧或某一时刻应用该情景标签。

设置时间区间和回放控制

可以用回放控制:

  • 可以逐帧展示或移动到视频区间或图像序列的结束或开始。
  • 使用握杆推进或浏览视频。
  • 设置一个区间,用红色的区间标志,来限定在APP中才做帧的区间。视频播放区间范围,并且情景标签和自动算法在该区间才会执行。
  • 用开始时刻“Start Time”、当前“Current”、和结束时刻“End Time”来查看或设置时间区间。时间戳可以从视频文件中获得,或者从图片序列中获得特定的时间戳。
  • 放大间隔。当点击“Zoom In”,app会展开效用时间区间。该特征在长视频中浏览是非常有用。

为了逐帧调试,可以按“Home”、“End”,或任意箭头,也可以通过“Ctrl+S”保存会话,通过“Ctrl+O”打开会话。也可以通过在工具栏中内置的特征全景或放大。

标记地面实况

可以收到标签画面,或用自动算法执行标记。APP中内置了一些只针对矩形ROIs的自动算法。APP运行导入自己的自动算法。

APP包含如下内置自动算法:

  • ACF 行人检测器:用已经基于ACF(aggregate channel feature)训练过的检测器来检测行人。当用ACF行人检测器时,不需要构建ROIs。
  • 点跟踪器(point tracker):在短区域内用KLT(Kanade-Lucas Tomasi)算法根据和标记一个多多个矩形ROIs。
  • 实时插补器(Temporal Interpolator):用关键帧中的矩形ROIs插补估计中间帧的ROIs。可以最少用两帧(区间的始末帧),用插值算法估计中间的ROIs。
  • ACF车辆检测器:用已经基于ACF(aggregate channel feature)训练过的检测器来检测和标记车辆。当用ACF车辆检测器时,不需要构建ROIs。

手动创建标签和属性

  • 为了收到画出ROIs标签,在“ROI Label Definition”窗口中选择一个标签或子标签定义,用鼠标在图像帧中画出区域。

  • 可以在一个标签中画出子标签。当在情景中创建或选择一个标签时,子标签列表或在APP的子标签窗格中出现。

可以复制和粘贴标签。复制标签,则复制了标签及其相关联的属性,但不包含所关联的子标签。但是,复制子标签,则同时复制了子标签及其父标签。

  • 想要将属性用于一个标签或子标签,在情景中选择在标签(或子标签),接着从“Attributes”窗格中设置其属性。

  • 为了手动标记情景标签,从窗格中选择一个情景标签定义。为了将该情景标签定义在一个区间上,选择“Time Interval”。红色的区间标记定义了区间的范围。

配置自动化

在选择自动化算法前,点击“Configure Automation”来设置相应的参数。

  • 自动化方向(Direction of Automation):可以选择在视频中自动标记的方向。当选择“Forward”,APP将从起始时刻或当前帧到结束时刻运行自动算法。当选择“Reverse”,则从结束时刻或当前帧到开始时刻运行自动算法。
  • 自动算法起始时刻(Run automation from):依赖于所设置的自动化方向,APP提供从起始时刻和结束时刻两种方式。
  • 导入选定的ROIs(Import selected ROIs):可以选择从当前帧导数ROIs。

用内置自动化算法创建标签

  1. 用“Select Algorithm”列表选择一个算法用于自动标签。
  2. 对于需要跟踪特征目标的算法,例如点跟踪或实时插补,通过电仪你想跟踪的区域选择ROIs。选定的ROIs用黄色高亮显示。

  1. 一旦选择一个算法,APP将会启动自动化按钮。一旦点击该按钮,算法标记将会出现在右侧窗格中。只有为该算法选择的ROI和情景标签定义是有效的,时间区间是固定的。可用的标签定义在左侧窗格,算法指令出现在右侧窗格。

  1. 点击“Run”。
  2. 检验运行算法的结果。如果该结果不符合要求,点击“Undo Run”,并通过点击“Setting”更改算法设置。可用收到移动、调整大小、删除或增加“ROIs”来改善自动算法的结果。
  3. 当结果达到预期时,点击“Accept”。或者点击“Cancel”删除自动会话中产生的标签。该删除按钮只删除算法会话,对APP无效。

在“Label”标栏中,点击“View Summary of Ground Truth Labels”,来查看和比较帧、标签频率及情景条件。

创建一个自定义标签算法

参见“Create Automation Algorithm For Ground Truth Labeling”,p2-25.

导出标签和保存会话

为了导出地面实况标签到matlab workspace或者m文件中,在“Label”标签中点击“Export Labels”。标签将作为一个groundTruth类导出。在“Label”标签中点击“Save”保存会话。会话和保存的标签分为保存为m文件。可以用导出的groundTruth类来训练物体检测器。更多信息参见“Train an Object Detector from Ground Truth Data”.

注:像素标签数据和地面实况数据被保存为分离文件“Separate files”。APP将两者文件保存在同一个文件夹下。记住这些提示:

  • 一旦标签矩阵被创建,不要将他们移动到不同的文件夹下。groundTruth类包含标签矩阵的像素数据的地址。这些地址不能够修改。
  • 如果用图片集创建地面实况,不要从保存的原始地址中删除图片。这些图片的路径被保存在groundTruth类中并且不能够被修改。
  • 可以移动groundTruth m文件到不同的文件夹中。

保存设计(Save Layout)

为了保存设计,点击“Label”标签中"View"的“Layout”,从列表中选择“Save”设计,接着输入名称。保存的设计包含会话的参数选择。删除或重命名一个设计,可以从“Label”列表中选择“Organize layout”。下一个会话打开最近保存的设计。想要恢复设计的原始视图,从“Label”列表中选择“Default”。

地面实况标签总结

可以用GTLapp交互地在视频、图像序列或从自定义的数据资源中标记地面实况数据。可以用app中View Label Summary选项来观察或比较ROIs和情景标签在时间或图像帧上的分布。

View Label Summary

View Label Summary创建可停驻的ROI标签和情景标签分布曲线。对于ROI标签,曲线y轴显示的是在x轴上每一个时间戳对应的ROIs的数量。可视化的概要不包含子标签和属性信息。

对于情景标签,曲线展示的是在每一个时间戳是否存在在情景标签。对于视频,x轴代表时间(s).对于图像或自定义图像序列,x轴表示图像帧。用曲线来检验所有时间上一次出现的标签。在任意曲线图中拖动黑色的竖线,来移动视频到不同的时间戳。,

想要“Label summary view”停驻到workspace中,选择Layout->Dock Label Summary.

比较选择的标签

用“Compare Selected Labels”选项和check boxes 来有选择地比较标签。选择用来比较的ROI 标签显示在同一个图中。

 

最后

以上就是朴实灯泡为你收集整理的无人驾驶之MATLAB无人驾驶工具箱学习(1)的全部内容,希望文章能够帮你解决无人驾驶之MATLAB无人驾驶工具箱学习(1)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部