
资源下载与技术交流
本文所展示的自动驾驶中的移动目标提取与跟踪技术,全过程的代码以及相应的数据资源,详见下方链接。
- 链接:https://pan.baidu.com/s/1Y_d5qb91bD-ZHXqRbBVN0g
- 提取码:pv2x
相关联的,技术讨论,详见下方链接。
若谷:自动驾驶行业交流群及公约zhuanlan.zhihu.com
本篇技术报告,以自动驾驶中的车辆识别为例说明。各个步骤的主要操作以及相关代码,配合描述。
整个项目的最新版 源代码和技术交流,请Email联系博主: 380545156[at]qq[dot]com.
文本简介
从影像中自动提取目标,并进行稳定跟踪,是自动驾驶感知系统的重要目标。本技术博文,介绍了基于卷积神经网络技术(CNN)的车辆图像目标识别的全过程,包括:
- l 数据准备与数据标注;
- l 数据训练与感知模型;
- l 仿真与测试;
- l 模型系统与部署;

主要收获
- 基于CNN卷积神经网络的深度学习,对图像进行目标识别的全过程;
主要参考本文的全体结构;
- CNN卷积神经网络的大多数工具、函数和命令。
主要参考本文所附带的代码,带有详细注释。
- CNN深度学习的工程技术开发效率
工程技术在乎方法的稳定可靠和使用效率。CNN深度学习开发的代码,也撰写了将近6000行,技术在累积,方法也在优化。详见第五部分。欢迎补充。
- 学习CNN深度学习方法的信心
尽管自认有比较好的数学和建模基础,但是没有出现合理的工程结果,都是很难服众的。
有了这几个神经网络应用案例,对于更大规模的CNN深度学习,有更强劲的信心。
任务目标

如图所示,从包含车辆的图片中,标识车辆的位置
▌一、数据准备与数据标注
Data Pre-processing for Deep Learning
数据标注的方法详见另外一篇博文。
在本案例中,同一个数据集,用60%的影像数据,用于训练,10%用于验证,剩余30%,用于测试。
%% R_CNN_withData
▌二、数据训练与感知模型
Design and Train a YOLOv2 Network in MATLAB
%% Create Faster R-CNN Detection Network
创建目标检测网络的几种方法
- R-CNN
- fast-RCNNLayers
- faster-RCNNLayers
- SSD (Single Shot MultiBox Defender)
- labelImg
- yolov2Layers YOLO (You Only Look Once)
- yolov3Layers YOLO V3

本文采用的是ResNet-50 模型。
%% 使用 resnet50, 加载预训练的 ResNet-50 模型
featureExtractionNetwork = resnet50% 选择 'activation_40_relu' 作为特征提取层,以将 'activation_40_relu' 后面的层替换为检测子网络。
% 此特征提取层输出以 16 为因子的下采样特征图。
% 该下采样量是空间分辨率和提取特征强度之间一个很好的折中,因为在网络更深层提取的特征能够对更强的图像特征进行编码,但以空间分辨率为代价。
% 选择最佳特征提取层需要依靠经验分析。
featureLayer = 'activation_40_relu' % Select 'activation_40_relu' as the feature extraction layer.
numClasses = width(vehicleDataset)-1 % Define the number of classes to detect. % 创建 fasterRCNN目标检测网络
lgraph = fasterRCNNLayers(inputSize,numClasses,anchorBoxes,featureExtractionNetwork,featureLayer)
其他几个NN模型,可以参考:
若谷:深度学习中的几种开源神经网络模型zhuanlan.zhihu.com
▌三、仿真模型与测试
Import Pre-trained Deep Learning Networks into MATLAB
%% Data Augmentation

▌四、模型系统运行部署与移植
运行过程中,因为要训练模型,非常耗时。当然,如果你的电脑非常好使,速度会快很多。

options
五、提升工程技术开发效率
- 时间分配
由于深度学习的开发中,往往计算过程耗时较大,时间统计不可谓不重要;

因此,在开发过程中,设置一些时间统计,有助于分配开发调试中的工作安排;
%% Time comsuption
- 过程数据输出多,增加屏幕
过程数据较多,往往IDE无法显示过往的log数据。因此,将产生的log数据,实时记录并保存,有助于提升调试效率。
diary是matlab中的日志工具,可以将Command Window 中的内容保存到文件中去。使用方法:
在命令行中输出:
diary
对应的的文件将会保存在path路径下的yourlogfile.txt文件里。
同时,可以使用:
diary off,diary on命令来关闭、打开日志。
%% Time comsuption and 数据日记