主要内容

车道,车辆检测仿真软件使用深度学习万博1manbetx

这个例子展示了如何使用深卷积神经网络模型内®模型执行巷和车辆检测。万博1manbetx这个例子以交通视频的帧作为输入,输出两个车道边界对应的左和右车道自我车辆,和检测车辆的框架。

下面的例子使用了pretrained车道检测网络的车道检测和GPU编码器优化GPU编码器工具箱™的例子。有关更多信息,请参见车道检测和GPU编码器优化(GPU编码器)

这个示例还使用pretrained车辆检测的网络对象检测使用YOLO v2意思深入学习计算机视觉的工具箱™的例子。有关更多信息,请参见对象检测使用YOLO v2意思深入学习(计算机视觉工具箱)

在仿真软件使用深度学习功能万博1manbetxMATLAB函数块,需要一个支持的编译器。万博1manbetx对于大多数平台,提供一个默认的C编译器的MATLAB®安装。使用c++语言时,您必须安装一个兼容的c++编译器。看到一个支持的编译器列表,打开万博1manbetx万博1manbetx支持和兼容的编译器,单击选项卡对应于您的操作系统,发现仿真软件产品族表,和去模型引用,加速器模式,快速加速模式,和MATLAB函数块列。万博1manbetx如果您有多个支持编译器安装在您的系统,您可万博1manbetx以更改默认的编译器使用墨西哥人设置命令。看到改变默认的编译器

算法流程

算法的框图模型的工作流模型。万博1manbetx

Pretrained车道,车辆检测网络

下面的例子使用了trainedLaneNetyolov2ResNet50VehicleExamplemat文件包含pretrained网络。大约143 MB和98 MB的文件大小,分别。从MathWorks网站下载的文件。

lanenetFile = matlab.internal.examples.download万博1manbetxSupportFile (“gpucoder / cnn_models / lane_detection”,“trainedLaneNet.mat”);vehiclenetFile = matlab.internal.examples.download万博1manbetxSupportFile (“视觉/数据”,“yolov2ResNet50VehicleExample.mat”);

交通视频下载测试

测试模型,示例使用了加州理工学院的车道数据集。大约是16 MB的文件。从MathWorks网站下载的文件。

mediaFile = matlab.internal.examples.download万博1manbetxSupportFile (“gpucoder /媒体”,“caltech_washington1.avi”);

车道,车辆检测仿真软件模型万博1manbetx

执行巷和万博1manbetx车辆的仿真软件模型检测在交通视频显示。模型运行时,视频查看器块显示与车道,车辆交通视频注释。

open_system (“laneAndVehicleDetectionMDL”);

的文件路径设置dowloaded网络模型预测和探测器模块的仿真软件模型。万博1manbetx设置测试视频的位置加载仿真软件模型。万博1manbetx

set_param (“laneAndVehicleDetectionMDL /车道检测”,“NetworkFilePath”lanenetFile) set_param (“laneAndVehicleDetectionMDL /车辆检测器”,“DetectorFilePath”vehiclenetFile) set_param (“laneAndVehicleDetectionMDL /交通视频”,“inputFileName”mediaFile)

车道检测

车道检测,交通视频预处理通过调整视频的每一帧227 -通过- 227 - 3,然后扩大了255倍。然后输入预处理的帧trainedLaneNet.mat网络加载预测块的深度学习工具箱™。这个网络需要一个图像作为输入和输出两个车道边界对应于自我的左和右车道车辆。每个车道边界由抛物型方程表示:

$ y = ax ^ 2 + bx +加元

这里y是横向偏移和x是纵向的距离。网络输出三个参数a、b和c /巷。网络体系结构是类似的AlexNet除了最后几层取而代之的是一个更小的完全连接层和回归输出层。的车道检测坐标MATLAB函数块定义了一个函数lane_detection_coordinates这需要三个参数预测块的输出和输出;laneFound,ltPts,rtPts。阈值用于确定左和右车道边界都是发现。如果被发现,laneFound将真实边界的轨迹计算和存储在吗ltPtsrtPts分别。

类型lane_detection_coordinates
函数(laneFound、ltPts rtPts] = lane_detection_coordinates (laneNetOut) % MathWorks版权2020 - 2021年,公司持续laneCoeffMeans;如果isempty (laneCoeffMeans) laneCoeffMeans = (-0.0002, 0.0002, 1.4740, -0.0002, 0.0045, -1.3787);结束持久laneCoeffStds;如果isempty (laneCoeffStds) laneCoeffStds = (0.0030, 0.0766, 0.6313, 0.0026, 0.0736, 0.9846);params = laneNetOut结束。* laneCoeffStds + laneCoeffMeans;% ' c '应该超过0.5是一个右车道isRightLaneFound = abs (params (6)) > 0.5;isLeftLaneFound = abs (params (3)) > 0.5;持久vehicleXPoints;如果isempty (vehicleXPoints) vehicleXPoints = 3;%米,在传感器端ltPts = coder.nullcopy(0(28日2,'单')); rtPts = coder.nullcopy(zeros(28,2,'single')); if isRightLaneFound && isLeftLaneFound rtBoundary = params(4:6); rt_y = computeBoundaryModel(rtBoundary, vehicleXPoints); ltBoundary = params(1:3); lt_y = computeBoundaryModel(ltBoundary, vehicleXPoints); % Visualize lane boundaries of the ego vehicle tform = get_tformToImage; % Map vehicle to image coordinates ltPts = tform.transformPointsInverse([vehicleXPoints', lt_y']); rtPts = tform.transformPointsInverse([vehicleXPoints', rt_y']); laneFound = true; else laneFound = false; end end

车辆检测

这个例子使用一个基于YOLO v2意思网络车辆检测。YOLO v2意思对象检测网络由两个子网:特征提取网络之后,检测网络。这pretrained网络使用ResNet-50特征提取。检测子是一个小的CNN与特征提取网络和由几个卷积的一层又一层特定于YOLO v2的意思。

仿真软件万博1manbetx模型进行车辆检测使用对象探测器从计算机视觉的工具箱。物体以一个图像作为输入和输出边界框坐标以及信心得分的车辆图像。

注释的车辆碰撞盒子和巷轨道交通视频中

莱恩和车辆注释MATLAB函数块定义了一个函数lane_vehicle_annotation注释工具的边界框随着信心的分数。如果laneFound是真的,那么左和右车道边界存储在吗ltPtsrtPts是显示在交通视频。

类型lane_vehicle_annotation
函数= lane_vehicle_annotation (laneFound、ltPts rtPts, bboxes,分数,)% 2020 - 2021版权MathWorks, inc .)如果~ isempty (bboxes) = insertObjectAnnotation(“矩形”,bboxes分数);最后分=编码器。nullcopy(0(28 4 '单'));如果laneFound prevpt = [ltPts (1,1) ltPts (1、2)];k = 2:1:28 pts (k, 1:4) = (prevpt ltPts (k, 1) ltPts (k, 2)];prevpt = [ltPts (k, 1) ltPts (k, 2)];结束= insertShape(分,“行”,“线宽”,2);prevpt = [rtPts (1,1) rtPts (1、2)];k = 2:1:28 pts (k, 1:4) = (prevpt rtPts (k, 1) rtPts (k, 2)];prevpt = [rtPts (k, 1) rtPts (k, 2)]; end In = insertShape(In, 'Line', pts, 'LineWidth', 2); In = insertMarker(In, ltPts); In = insertMarker(In, rtPts); end end

运行仿真

验证巷和车辆检测算法和显示巷轨迹,车辆碰撞盒子和分数的交通视频加载仿真软件模型,仿真运行。万博1manbetx

set_param (“laneAndVehicleDetectionMDL”,“SimulationMode”,“正常”);sim卡(“laneAndVehicleDetectionMDL”);

在Windows®上,260个字符的最大路径长度可引起“文件未找到”仿真运行时错误。在这种情况下,示例文件夹移动到不同的位置或使长路径在Windows。有关更多信息,请参见最大路径长度限制(微软)

使用深度学习加速器库

如果你有一个英特尔®CPU支持AVX2指令,您可以使用万博1manbetx为深度学习MATLAB编码器接口库加速模拟使用英特尔MKL-DNN库。在模型配置参数窗口中,模拟目标窗格中,设置语言c++和目标库MKL-DNN

代码生成

使用GPU编码器,可以加速模型的执行NVIDIA®GPU和生成CUDA®代码模型。有关更多信息,请参见代码生成的深度学习仿真软件模型执行巷和车辆检测万博1manbetx(GPU编码器)